View | Details | Raw Unified | Return to bug 290860 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/mylyn/internal/jira/core/model/Project.java (+10 lines)
Lines 48-53 Link Here
48
48
49
	private SecurityLevel[] securityLevels;
49
	private SecurityLevel[] securityLevels;
50
50
51
	private boolean details;
52
51
	public Project(String id) {
53
	public Project(String id) {
52
		this.id = id;
54
		this.id = id;
53
	}
55
	}
Lines 222-225 Link Here
222
		this.securityLevels = securityLevels;
224
		this.securityLevels = securityLevels;
223
	}
225
	}
224
226
227
	public void setDetails(boolean details) {
228
		this.details = details;
229
	}
230
231
	public boolean hasDetails() {
232
		return details;
233
	}
234
225
}
235
}
(-)src/org/eclipse/mylyn/internal/jira/core/service/JiraClientCache.java (-40 / +20 lines)
Lines 12-21 Link Here
12
12
13
package org.eclipse.mylyn.internal.jira.core.service;
13
package org.eclipse.mylyn.internal.jira.core.service;
14
14
15
import java.util.Arrays;
16
import java.util.HashMap;
15
import java.util.HashMap;
17
import java.util.HashSet;
18
import java.util.Set;
19
16
20
import org.eclipse.core.runtime.IProgressMonitor;
17
import org.eclipse.core.runtime.IProgressMonitor;
21
import org.eclipse.core.runtime.SubMonitor;
18
import org.eclipse.core.runtime.SubMonitor;
Lines 74-81 Link Here
74
71
75
		submonitor.setWorkRemaining(data.projects.length);
72
		submonitor.setWorkRemaining(data.projects.length);
76
		for (Project project : data.projects) {
73
		for (Project project : data.projects) {
77
			initializeProject(project, submonitor.newChild(1, SubMonitor.SUPPRESS_NONE));
78
79
			data.projectsById.put(project.getId(), project);
74
			data.projectsById.put(project.getId(), project);
80
			data.projectsByKey.put(project.getKey(), project);
75
			data.projectsByKey.put(project.getKey(), project);
81
		}
76
		}
Lines 119-124 Link Here
119
					project.setSecurityLevels(null);
114
					project.setSecurityLevels(null);
120
				}
115
				}
121
			}
116
			}
117
118
			project.setDetails(true);
122
		}
119
		}
123
	}
120
	}
124
121
Lines 156-200 Link Here
156
		SubMonitor submonitor = SubMonitor.convert(monitor, Messages.JiraClientCache_getting_issue_types, 2);
153
		SubMonitor submonitor = SubMonitor.convert(monitor, Messages.JiraClientCache_getting_issue_types, 2);
157
154
158
		String version = data.serverInfo.getVersion();
155
		String version = data.serverInfo.getVersion();
159
		if (supportsPerProjectIssueTypes(version) >= 0) {
156
		IssueType[] issueTypes = jiraClient.getIssueTypes(submonitor.newChild(1));
160
			// collect issue types from all projects to avoid additional SOAP request
157
		IssueType[] subTaskIssueTypes;
161
			Set<IssueType> issueTypes = new HashSet<IssueType>();
158
		if (new JiraVersion(version).compareTo(JiraVersion.JIRA_3_3) >= 0) {
162
			for (Project project : data.projects) {
159
			subTaskIssueTypes = jiraClient.getSubTaskIssueTypes(submonitor.newChild(1));
163
				IssueType[] projectIssueTypes = project.getIssueTypes();
164
				if (projectIssueTypes != null) {
165
					issueTypes.addAll(Arrays.asList(projectIssueTypes));
166
				}
167
			}
168
169
			data.issueTypes = issueTypes.toArray(new IssueType[0]);
170
			data.issueTypesById = new HashMap<String, IssueType>(data.issueTypes.length);
171
			for (IssueType issueType : data.issueTypes) {
172
				data.issueTypesById.put(issueType.getId(), issueType);
173
			}
174
		} else {
160
		} else {
175
			IssueType[] issueTypes = jiraClient.getIssueTypes(submonitor.newChild(1));
161
			subTaskIssueTypes = new IssueType[0];
176
			IssueType[] subTaskIssueTypes;
162
		}
177
			if (new JiraVersion(version).compareTo(JiraVersion.JIRA_3_3) >= 0) {
178
				subTaskIssueTypes = jiraClient.getSubTaskIssueTypes(submonitor.newChild(1));
179
			} else {
180
				subTaskIssueTypes = new IssueType[0];
181
			}
182
183
			data.issueTypesById = new HashMap<String, IssueType>(issueTypes.length + subTaskIssueTypes.length);
184
163
185
			for (IssueType issueType : issueTypes) {
164
		data.issueTypesById = new HashMap<String, IssueType>(issueTypes.length + subTaskIssueTypes.length);
186
				data.issueTypesById.put(issueType.getId(), issueType);
187
			}
188
165
189
			for (IssueType issueType : subTaskIssueTypes) {
166
		for (IssueType issueType : issueTypes) {
190
				issueType.setSubTaskType(true);
167
			data.issueTypesById.put(issueType.getId(), issueType);
191
				data.issueTypesById.put(issueType.getId(), issueType);
168
		}
192
			}
193
169
194
			data.issueTypes = new IssueType[issueTypes.length + subTaskIssueTypes.length];
170
		for (IssueType issueType : subTaskIssueTypes) {
195
			System.arraycopy(issueTypes, 0, data.issueTypes, 0, issueTypes.length);
171
			issueType.setSubTaskType(true);
196
			System.arraycopy(subTaskIssueTypes, 0, data.issueTypes, issueTypes.length, subTaskIssueTypes.length);
172
			data.issueTypesById.put(issueType.getId(), issueType);
197
		}
173
		}
174
175
		data.issueTypes = new IssueType[issueTypes.length + subTaskIssueTypes.length];
176
		System.arraycopy(issueTypes, 0, data.issueTypes, 0, issueTypes.length);
177
		System.arraycopy(subTaskIssueTypes, 0, data.issueTypes, issueTypes.length, subTaskIssueTypes.length);
198
	}
178
	}
199
179
200
	private void initializeStatuses(JiraClientData data, IProgressMonitor monitor) throws JiraException {
180
	private void initializeStatuses(JiraClientData data, IProgressMonitor monitor) throws JiraException {
Lines 251-261 Link Here
251
		refreshServerInfo(newData, subMonitor.newChild(1, SubMonitor.SUPPRESS_NONE));
231
		refreshServerInfo(newData, subMonitor.newChild(1, SubMonitor.SUPPRESS_NONE));
252
		data.serverInfo = newData.serverInfo;
232
		data.serverInfo = newData.serverInfo;
253
233
254
		initializeProjects(newData, subMonitor.newChild(15, SubMonitor.SUPPRESS_NONE));
255
		initializePriorities(newData, subMonitor.newChild(1, SubMonitor.SUPPRESS_NONE));
234
		initializePriorities(newData, subMonitor.newChild(1, SubMonitor.SUPPRESS_NONE));
256
		initializeIssueTypes(newData, subMonitor.newChild(1, SubMonitor.SUPPRESS_NONE));
235
		initializeIssueTypes(newData, subMonitor.newChild(1, SubMonitor.SUPPRESS_NONE));
257
		initializeResolutions(newData, subMonitor.newChild(1, SubMonitor.SUPPRESS_NONE));
236
		initializeResolutions(newData, subMonitor.newChild(1, SubMonitor.SUPPRESS_NONE));
258
		initializeStatuses(newData, subMonitor.newChild(1, SubMonitor.SUPPRESS_NONE));
237
		initializeStatuses(newData, subMonitor.newChild(1, SubMonitor.SUPPRESS_NONE));
238
		initializeProjects(newData, subMonitor.newChild(15, SubMonitor.SUPPRESS_NONE));
259
239
260
		newData.lastUpdate = System.currentTimeMillis();
240
		newData.lastUpdate = System.currentTimeMillis();
261
		this.data = newData;
241
		this.data = newData;
(-)src/org/eclipse/mylyn/internal/jira/ui/wizards/JiraFilterDefinitionPage.java (-71 / +115 lines)
Lines 189-194 Link Here
189
189
190
	private static final Project[] NO_PROJECTS = new Project[0];
190
	private static final Project[] NO_PROJECTS = new Project[0];
191
191
192
	private static final int HEIGHT_HINT = 50;
193
194
	private static final int WIDTH_HINT = 150;
195
192
	final Placeholder ALL_PROJECTS = new Placeholder(Messages.JiraFilterDefinitionPage_All_Projects);
196
	final Placeholder ALL_PROJECTS = new Placeholder(Messages.JiraFilterDefinitionPage_All_Projects);
193
197
194
	final Placeholder ANY_ASSIGNEE = new Placeholder(Messages.JiraFilterDefinitionPage_Any);
198
	final Placeholder ANY_ASSIGNEE = new Placeholder(Messages.JiraFilterDefinitionPage_Any);
Lines 626-633 Link Here
626
	private void createComponentsViewer(Composite c) {
630
	private void createComponentsViewer(Composite c) {
627
		components = new ListViewer(c, SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.H_SCROLL);
631
		components = new ListViewer(c, SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.H_SCROLL);
628
		GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
632
		GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
629
		gridData.heightHint = 50;
633
		gridData.heightHint = HEIGHT_HINT;
630
		gridData.widthHint = 90;
634
		gridData.widthHint = WIDTH_HINT;
631
		components.getControl().setLayoutData(gridData);
635
		components.getControl().setLayoutData(gridData);
632
636
633
		components.setContentProvider(new IStructuredContentProvider() {
637
		components.setContentProvider(new IStructuredContentProvider() {
Lines 642-655 Link Here
642
646
643
			public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
647
			public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
644
				Project[] projects = (Project[]) newInput;
648
				Project[] projects = (Project[]) newInput;
645
				if (projects == null || projects.length == 0) {
649
				if (projects == null || projects.length == 0 || projects.length > 1) {
646
					currentElements = new Object[] { ANY_COMPONENT };
650
					currentElements = new Object[] { ANY_COMPONENT };
647
				} else {
651
				} else {
648
					Set<Object> elements = new LinkedHashSet<Object>();
652
					Set<Object> elements = new LinkedHashSet<Object>();
649
					elements.add(ANY_COMPONENT);
653
					elements.add(ANY_COMPONENT);
650
					elements.add(NO_COMPONENT);
654
					elements.add(NO_COMPONENT);
651
					for (Project project : projects) {
655
					for (Project project : projects) {
652
						if (project != null) {
656
						if (project != null && project.hasDetails()) {
653
							elements.addAll(Arrays.asList(project.getComponents()));
657
							elements.addAll(Arrays.asList(project.getComponents()));
654
						}
658
						}
655
					}
659
					}
Lines 740-751 Link Here
740
		{
744
		{
741
			SashForm cc = new SashForm(sashForm, SWT.NONE);
745
			SashForm cc = new SashForm(sashForm, SWT.NONE);
742
746
743
			ISelectionChangedListener selectionChangeListener = new ISelectionChangedListener() {
744
				public void selectionChanged(SelectionChangedEvent event) {
745
					// validatePage();
746
				}
747
			};
748
749
			{
747
			{
750
				Composite comp = new Composite(cc, SWT.NONE);
748
				Composite comp = new Composite(cc, SWT.NONE);
751
				GridLayout gridLayout = new GridLayout();
749
				GridLayout gridLayout = new GridLayout();
Lines 757-782 Link Here
757
				typeLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false));
755
				typeLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false));
758
				typeLabel.setText(Messages.JiraFilterDefinitionPage_Type);
756
				typeLabel.setText(Messages.JiraFilterDefinitionPage_Type);
759
757
760
				issueType = new ListViewer(comp, SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.H_SCROLL);
758
				createIssueTypesViewer(comp);
761
				GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
762
				gridData.heightHint = 50;
763
				gridData.widthHint = 90;
764
				issueType.getList().setLayoutData(gridData);
765
766
				issueType.setLabelProvider(new LabelProvider() {
767
768
					@Override
769
					public String getText(Object element) {
770
						if (element instanceof Placeholder) {
771
							return ((Placeholder) element).getText();
772
						}
773
774
						return ((IssueType) element).getName();
775
					}
776
777
				});
778
779
				issueType.addSelectionChangedListener(selectionChangeListener);
780
			}
759
			}
781
760
782
			{
761
			{
Lines 792-799 Link Here
792
771
793
				status = new ListViewer(comp, SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.H_SCROLL);
772
				status = new ListViewer(comp, SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.H_SCROLL);
794
				GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
773
				GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
795
				gridData.heightHint = 50;
774
				gridData.heightHint = HEIGHT_HINT;
796
				gridData.widthHint = 90;
775
				gridData.widthHint = WIDTH_HINT;
797
				status.getList().setLayoutData(gridData);
776
				status.getList().setLayoutData(gridData);
798
777
799
				status.setLabelProvider(new LabelProvider() {
778
				status.setLabelProvider(new LabelProvider() {
Lines 808-815 Link Here
808
					}
787
					}
809
788
810
				});
789
				});
811
812
				status.addSelectionChangedListener(selectionChangeListener);
813
			}
790
			}
814
791
815
			{
792
			{
Lines 825-832 Link Here
825
802
826
				resolution = new ListViewer(comp, SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.H_SCROLL);
803
				resolution = new ListViewer(comp, SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.H_SCROLL);
827
				GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
804
				GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
828
				gridData.heightHint = 50;
805
				gridData.heightHint = HEIGHT_HINT;
829
				gridData.widthHint = 90;
806
				gridData.widthHint = WIDTH_HINT;
830
				resolution.getList().setLayoutData(gridData);
807
				resolution.getList().setLayoutData(gridData);
831
808
832
				resolution.setLabelProvider(new LabelProvider() {
809
				resolution.setLabelProvider(new LabelProvider() {
Lines 841-848 Link Here
841
					}
818
					}
842
819
843
				});
820
				});
844
845
				resolution.addSelectionChangedListener(selectionChangeListener);
846
			}
821
			}
847
822
848
			{
823
			{
Lines 858-865 Link Here
858
833
859
				priority = new ListViewer(comp, SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.H_SCROLL);
834
				priority = new ListViewer(comp, SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.H_SCROLL);
860
				GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
835
				GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
861
				gridData.heightHint = 50;
836
				gridData.heightHint = HEIGHT_HINT;
862
				gridData.widthHint = 90;
837
				gridData.widthHint = WIDTH_HINT;
863
				priority.getList().setLayoutData(gridData);
838
				priority.getList().setLayoutData(gridData);
864
839
865
				priority.setLabelProvider(new LabelProvider() {
840
				priority.setLabelProvider(new LabelProvider() {
Lines 874-880 Link Here
874
					}
849
					}
875
850
876
				});
851
				});
877
				priority.addSelectionChangedListener(selectionChangeListener);
878
			}
852
			}
879
853
880
			cc.setWeights(new int[] { 1, 1, 1, 1 });
854
			cc.setWeights(new int[] { 1, 1, 1, 1 });
Lines 1118-1123 Link Here
1118
		Dialog.applyDialogFont(parent);
1092
		Dialog.applyDialogFont(parent);
1119
	}
1093
	}
1120
1094
1095
	private void createIssueTypesViewer(Composite comp) {
1096
		issueType = new ListViewer(comp, SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.H_SCROLL);
1097
		GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
1098
		gridData.heightHint = HEIGHT_HINT;
1099
		gridData.widthHint = WIDTH_HINT;
1100
		issueType.getList().setLayoutData(gridData);
1101
1102
		issueType.setContentProvider(new IStructuredContentProvider() {
1103
			private Object[] currentElements;
1104
1105
			public Object[] getElements(Object inputElement) {
1106
				return currentElements;
1107
			}
1108
1109
			public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
1110
				final Project[] projects = (Project[]) newInput;
1111
				IssueType[] types = null;
1112
1113
				if (projects == null || projects.length == 0 || projects.length > 1) {
1114
					types = client.getCache().getIssueTypes();
1115
				} else if (projects[0].hasDetails()) {
1116
					types = projects[0].getIssueTypes();
1117
				}
1118
1119
				if (types != null) {
1120
					Object[] elements = new Object[types.length + 1];
1121
					System.arraycopy(types, 0, elements, 1, types.length);
1122
					elements[0] = ANY_ISSUE_TYPE;
1123
					currentElements = elements;
1124
				}
1125
			}
1126
1127
			public void dispose() {
1128
			}
1129
		});
1130
1131
		issueType.setLabelProvider(new LabelProvider() {
1132
1133
			@Override
1134
			public String getText(Object element) {
1135
				if (element instanceof Placeholder) {
1136
					return ((Placeholder) element).getText();
1137
				}
1138
1139
				return ((IssueType) element).getName();
1140
			}
1141
1142
		});
1143
1144
		issueType.setInput(NO_PROJECTS);
1145
	}
1146
1121
//	@Override
1147
//	@Override
1122
//	public boolean isPageComplete() {
1148
//	public boolean isPageComplete() {
1123
//		// XXX workaround for bad implementation of AbstractRepositoryQueryPage.isPageComplete()
1149
//		// XXX workaround for bad implementation of AbstractRepositoryQueryPage.isPageComplete()
Lines 1142-1149 Link Here
1142
	private void createFixForViewer(Composite c) {
1168
	private void createFixForViewer(Composite c) {
1143
		fixFor = new ListViewer(c, SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.H_SCROLL);
1169
		fixFor = new ListViewer(c, SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.H_SCROLL);
1144
		GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
1170
		GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
1145
		gridData.heightHint = 50;
1171
		gridData.heightHint = HEIGHT_HINT;
1146
		gridData.widthHint = 90;
1172
		gridData.widthHint = WIDTH_HINT;
1147
		fixFor.getControl().setLayoutData(gridData);
1173
		fixFor.getControl().setLayoutData(gridData);
1148
1174
1149
		fixFor.setContentProvider(new IStructuredContentProvider() {
1175
		fixFor.setContentProvider(new IStructuredContentProvider() {
Lines 1158-1164 Link Here
1158
1184
1159
			public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
1185
			public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
1160
				Project[] projects = (Project[]) newInput;
1186
				Project[] projects = (Project[]) newInput;
1161
				if (projects == null || projects.length == 0) {
1187
				if (projects == null || projects.length == 0 || projects.length > 1) {
1162
					currentElements = new Object[] { ANY_FIX_VERSION };
1188
					currentElements = new Object[] { ANY_FIX_VERSION };
1163
				} else {
1189
				} else {
1164
					List<Object> elements = new ArrayList<Object>();
1190
					List<Object> elements = new ArrayList<Object>();
Lines 1169-1175 Link Here
1169
					Set<Version> unreleasedVersions = new LinkedHashSet<Version>();
1195
					Set<Version> unreleasedVersions = new LinkedHashSet<Version>();
1170
1196
1171
					for (Project project : projects) {
1197
					for (Project project : projects) {
1172
						if (project != null) {
1198
						if (project != null && project.hasDetails()) {
1173
							releasedVersions.addAll(Arrays.asList(project.getReleasedVersions()));
1199
							releasedVersions.addAll(Arrays.asList(project.getReleasedVersions()));
1174
							unreleasedVersions.addAll(Arrays.asList(project.getUnreleasedVersions()));
1200
							unreleasedVersions.addAll(Arrays.asList(project.getUnreleasedVersions()));
1175
						}
1201
						}
Lines 1191-1198 Link Here
1191
	private void createProjectsViewer(Composite c) {
1217
	private void createProjectsViewer(Composite c) {
1192
		project = new ListViewer(c, SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.H_SCROLL);
1218
		project = new ListViewer(c, SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.H_SCROLL);
1193
		GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
1219
		GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
1194
		gridData.heightHint = 50;
1220
		gridData.heightHint = HEIGHT_HINT;
1195
		gridData.widthHint = 90;
1221
		gridData.widthHint = WIDTH_HINT;
1196
		project.getControl().setLayoutData(gridData);
1222
		project.getControl().setLayoutData(gridData);
1197
1223
1198
		project.setLabelProvider(new LabelProvider() {
1224
		project.setLabelProvider(new LabelProvider() {
Lines 1226-1233 Link Here
1226
	private void createReportedInViewer(Composite c) {
1252
	private void createReportedInViewer(Composite c) {
1227
		reportedIn = new ListViewer(c, SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.H_SCROLL);
1253
		reportedIn = new ListViewer(c, SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.H_SCROLL);
1228
		GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
1254
		GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
1229
		gridData.heightHint = 50;
1255
		gridData.heightHint = HEIGHT_HINT;
1230
		gridData.widthHint = 90;
1256
		gridData.widthHint = WIDTH_HINT;
1231
		reportedIn.getControl().setLayoutData(gridData);
1257
		reportedIn.getControl().setLayoutData(gridData);
1232
1258
1233
		reportedIn.setContentProvider(new IStructuredContentProvider() {
1259
		reportedIn.setContentProvider(new IStructuredContentProvider() {
Lines 1242-1248 Link Here
1242
1268
1243
			public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
1269
			public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
1244
				Project[] projects = (Project[]) newInput;
1270
				Project[] projects = (Project[]) newInput;
1245
				if (projects == null || projects.length == 0) {
1271
				if (projects == null || projects.length == 0 || projects.length > 1) {
1246
					currentElements = new Object[] { ANY_REPORTED_VERSION };
1272
					currentElements = new Object[] { ANY_REPORTED_VERSION };
1247
				} else {
1273
				} else {
1248
					List<Object> elements = new ArrayList<Object>();
1274
					List<Object> elements = new ArrayList<Object>();
Lines 1253-1259 Link Here
1253
					Set<Object> unreleasedVersions = new LinkedHashSet<Object>();
1279
					Set<Object> unreleasedVersions = new LinkedHashSet<Object>();
1254
1280
1255
					for (Project project : projects) {
1281
					for (Project project : projects) {
1256
						if (project != null) {
1282
						if (project != null && project.hasDetails()) {
1257
							releasedVersions.addAll(Arrays.asList(project.getReleasedVersions()));
1283
							releasedVersions.addAll(Arrays.asList(project.getReleasedVersions()));
1258
							unreleasedVersions.addAll(Arrays.asList(project.getUnreleasedVersions()));
1284
							unreleasedVersions.addAll(Arrays.asList(project.getUnreleasedVersions()));
1259
						}
1285
						}
Lines 1330-1355 Link Here
1330
		});
1356
		});
1331
		project.setInput(client);
1357
		project.setInput(client);
1332
1358
1333
		issueType.setContentProvider(new IStructuredContentProvider() {
1334
1335
			public void dispose() {
1336
			}
1337
1338
			public Object[] getElements(Object inputElement) {
1339
				JiraClient server = (JiraClient) inputElement;
1340
				Object[] elements = new Object[server.getCache().getIssueTypes().length + 1];
1341
				elements[0] = ANY_ISSUE_TYPE;
1342
				System.arraycopy(server.getCache().getIssueTypes(), 0, elements, 1,
1343
						server.getCache().getIssueTypes().length);
1344
1345
				return elements;
1346
			}
1347
1348
			public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
1349
			}
1350
		});
1351
		issueType.setInput(client);
1352
1353
		status.setContentProvider(new IStructuredContentProvider() {
1359
		status.setContentProvider(new IStructuredContentProvider() {
1354
1360
1355
			public void dispose() {
1361
			public void dispose() {
Lines 1699-1706 Link Here
1699
	}
1705
	}
1700
1706
1701
	void updateCurrentProjects(Project[] projects) {
1707
	void updateCurrentProjects(Project[] projects) {
1708
		if (projects != null) {
1709
			for (final Project project : projects) {
1710
				if (!project.hasDetails()) {
1711
					IRunnableWithProgress updateProjectDetails = new IRunnableWithProgress() {
1712
						public void run(IProgressMonitor monitor) throws InvocationTargetException,
1713
								InterruptedException {
1714
							try {
1715
								client.getCache().refreshProjectDetails(project.getId(), monitor);
1716
							} catch (final JiraException e) {
1717
								Display.getDefault().asyncExec(new Runnable() {
1718
									public void run() {
1719
										JiraFilterDefinitionPage.this.setErrorMessage(NLS.bind(
1720
												Messages.JiraFilterDefinitionPage_Error_updating_attributes_X,
1721
												e.getMessage()));
1722
									}
1723
								});
1724
							}
1725
						}
1726
					};
1727
1728
					try {
1729
						if (getContainer() != null) {
1730
							getContainer().run(true, true, updateProjectDetails);
1731
						} else if (getSearchContainer() != null) {
1732
							getSearchContainer().getRunnableContext().run(true, true, updateProjectDetails);
1733
						} else {
1734
							IProgressService service = PlatformUI.getWorkbench().getProgressService();
1735
							service.busyCursorWhile(updateProjectDetails);
1736
						}
1737
					} catch (Exception e) {
1738
						JiraFilterDefinitionPage.this.setErrorMessage(NLS.bind(
1739
								Messages.JiraFilterDefinitionPage_Error_updating_attributes_X, e.getMessage()));
1740
					}
1741
				}
1742
			}
1743
		}
1744
1702
		this.fixFor.setInput(projects);
1745
		this.fixFor.setInput(projects);
1703
		this.components.setInput(projects);
1746
		this.components.setInput(projects);
1704
		this.reportedIn.setInput(projects);
1747
		this.reportedIn.setInput(projects);
1748
		this.issueType.setInput(projects);
1705
	}
1749
	}
1706
}
1750
}

Return to bug 290860