View Javadoc

1   /**
2    * Copyright (C) 2008 Atlassian
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *    http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package com.atlassian.theplugin.idea.jira;
18  
19  import com.atlassian.theplugin.idea.ProgressAnimationProvider;
20  import com.atlassian.theplugin.idea.jira.table.JIRAConstantListRenderer;
21  import com.atlassian.theplugin.idea.jira.table.JIRAQueryFragmentListRenderer;
22  import com.atlassian.theplugin.idea.ui.CollapsiblePanel;
23  import com.atlassian.theplugin.jira.JIRAServer;
24  import com.atlassian.theplugin.jira.api.JIRAAssigneeBean;
25  import com.atlassian.theplugin.jira.api.JIRAProjectBean;
26  import com.atlassian.theplugin.jira.api.JIRAQueryFragment;
27  import com.atlassian.theplugin.jira.api.JIRAReporterBean;
28  import com.intellij.openapi.util.IconLoader;
29  import com.intellij.uiDesigner.core.Spacer;
30  import com.jgoodies.forms.layout.CellConstraints;
31  import com.jgoodies.forms.layout.FormLayout;
32  
33  import javax.swing.*;
34  import javax.swing.event.ListSelectionEvent;
35  import javax.swing.event.ListSelectionListener;
36  import java.awt.*;
37  import java.util.ArrayList;
38  import java.util.List;
39  
40  
41  public class JIRAIssueFilterPanel extends JPanel {
42  	private JList projectList;
43  	private JList issueTypeList;
44  	private JList fixForList;
45  	private JList affectsVersionsList;
46  	private JComboBox reporterComboBox;
47  	private JComboBox assigneeComboBox;
48  	private JList resolutionsList;
49  	private JList prioritiesList;
50  	private JList statusList;
51  	private JPanel rootPanel;
52  	private JScrollPane prioritiesScrollPane;
53  	private JScrollPane resolutionScrollPane;
54  	private JScrollPane statusScrollPane;
55  	private JScrollPane affectVersionScrollPane;
56  	private JScrollPane fixForScrollPane;
57  	private JScrollPane projectScrollPane;
58  	private JScrollPane issueTypeScrollPane;
59  	private JScrollPane componentsScrollPane;
60  	private JList componentsList;
61  	private CollapsiblePanel componentsVersionsCollapsiblePanel;
62  	private JPanel componentsVersionsPanel;
63  	private CollapsiblePanel issueAttributesCollapsiblePanel;
64  	private JPanel issueAttributesPanel;
65  	private JLabel componentsLabel;
66  	private JLabel fixForLabel;
67  	private JLabel reporterLabel;
68  	private JLabel assigneeLabel;
69  	private JLabel statusLabel;
70  	private JLabel resolutionsLabel;
71  	private JLabel prioritiesLabel;
72  	private JLabel affectsVersionsLabel;
73  	private JPanel generalPanel;
74  
75  	private ProgressAnimationProvider progressAnimation;
76  	private boolean initialFilterSet;
77  
78  	private JIRAServer jiraServer;
79  
80  	public JIRAIssueFilterPanel(ProgressAnimationProvider progressAnimation) {
81  		$$$setupUI$$$();
82  
83  		this.progressAnimation = progressAnimation;
84  		this.projectList.setCellRenderer(new JIRAQueryFragmentListRenderer());
85  		this.issueTypeList.setCellRenderer(new JIRAConstantListRenderer());
86  		this.statusList.setCellRenderer(new JIRAConstantListRenderer());
87  		this.prioritiesList.setCellRenderer(new JIRAConstantListRenderer());
88  		this.resolutionsList.setCellRenderer(new JIRAQueryFragmentListRenderer());
89  		this.fixForList.setCellRenderer(new JIRAQueryFragmentListRenderer());
90  		this.componentsList.setCellRenderer(new JIRAQueryFragmentListRenderer());
91  		this.affectsVersionsList.setCellRenderer(new JIRAQueryFragmentListRenderer());
92  		this.reporterComboBox.setRenderer(new JIRAQueryFragmentListRenderer());
93  		this.assigneeComboBox.setRenderer(new JIRAQueryFragmentListRenderer());
94  
95  		projectList.addListSelectionListener(new ListSelectionListener() {
96  			public void valueChanged(ListSelectionEvent event) {
97  				int size = projectList.getSelectedValues().length;
98  				switch (size) {
99  					case 0:
100 						jiraServer.setCurrentProject(null);
101 						refreshProjectDependentLists();
102 						break;
103 					case 1:
104 						JIRAProjectBean project = (JIRAProjectBean) projectList.getSelectedValues()[0];
105 						jiraServer.setCurrentProject(project);
106 						refreshProjectDependentLists();
107 						break;
108 					default:
109 						jiraServer.setCurrentProject(null);
110 						clearProjectDependentLists();
111 						refreshGlobalIssueTypeList();
112 						break;
113 				}
114 			}
115 		});
116 	}
117 
118 	public void setProgressAnimation(ProgressAnimationProvider progressAnimation) {
119 		this.progressAnimation = progressAnimation;
120 	}
121 
122 	private void enableProjectDependentLists(boolean value) {
123 		this.fixForList.setEnabled(value);
124 		this.componentsList.setEnabled(value);
125 		this.affectsVersionsList.setEnabled(value);
126 
127 		int visibleListCount = 0;
128 		if (this.fixForList.getModel().getSize() == 0) {
129 			this.fixForScrollPane.setEnabled(false);
130 		} else {
131 			this.fixForScrollPane.setEnabled(true);
132 			visibleListCount++;
133 		}
134 		if (this.componentsList.getModel().getSize() == 0) {
135 			this.componentsScrollPane.setEnabled(false);
136 		} else {
137 			this.componentsScrollPane.setEnabled(true);
138 			visibleListCount++;
139 		}
140 		if (this.affectsVersionsList.getModel().getSize() == 0) {
141 			this.affectVersionScrollPane.setEnabled(false);
142 		} else {
143 			this.affectVersionScrollPane.setEnabled(true);
144 			visibleListCount++;
145 		}
146 
147 		if (visibleListCount == 0) {
148 			componentsVersionsCollapsiblePanel.collapse();
149 		} else {
150 			componentsVersionsCollapsiblePanel.expand();
151 		}
152 
153 		rootPanel.validate();
154 	}
155 
156 	private void clearProjectDependentLists() {
157 		this.issueTypeList.setListData(new Object[0]);
158 		this.fixForList.setListData(new Object[0]);
159 		this.componentsList.setListData(new Object[0]);
160 		this.affectsVersionsList.setListData(new Object[0]);
161 
162 		enableProjectDependentLists(false);
163 	}
164 
165 	private void refreshGlobalIssueTypeList() {
166 		if (initialFilterSet) {
167 			issueTypeList.setListData(jiraServer.getIssueTypes().toArray());
168 		} else {
169 			new Thread(new Runnable() {
170 				public void run() {
171 					progressAnimation.startProgressAnimation();
172 					issueTypeList.setListData(jiraServer.getIssueTypes().toArray());
173 					progressAnimation.stopProgressAnimation();
174 				}
175 			}, "JIRA filter project values retrieve").start();
176 		}
177 
178 	}
179 
180 	private void refreshProjectDependentLists() {
181 		if (jiraServer.getCurrentProject() != null) {
182 			if (jiraServer.getCurrentProject().getId() == JIRAServer.ANY_ID) {
183 				clearProjectDependentLists();
184 			} else {
185 				if (initialFilterSet) {
186 					setProjectDependendListValues();
187 				} else {
188 					new Thread(new Runnable() {
189 						public void run() {
190 							setProjectDependendListValues();
191 						}
192 					}, "JIRA filter project values retrieve").start();
193 				}
194 			}
195 		} else {
196 			clearProjectDependentLists();
197 		}
198 	}
199 
200 	private void setProjectDependendListValues() {
201 		progressAnimation.startProgressAnimation();
202 		issueTypeList.setListData(jiraServer.getIssueTypes().toArray());
203 		fixForList.setListData(jiraServer.getFixForVersions().toArray());
204 		componentsList.setListData(jiraServer.getComponents().toArray());
205 		affectsVersionsList.setListData(jiraServer.getVersions().toArray());
206 		enableProjectDependentLists(true);
207 		progressAnimation.stopProgressAnimation();
208 	}
209 
210 	public void setJiraServer(final JIRAServer jServer, final List<JIRAQueryFragment> advancedQuery) {
211 		new Thread(new Runnable() {
212 			public void run() {
213 				initialFilterSet = true;
214 				progressAnimation.startProgressAnimation();
215 				jiraServer = jServer;
216 				projectList.setListData(jiraServer.getProjects().toArray());
217 				issueTypeList.setListData(jiraServer.getIssueTypes().toArray());
218 				statusList.setListData(jiraServer.getStatuses().toArray());
219 				prioritiesList.setListData(jiraServer.getPriorieties().toArray());
220 				resolutionsList.setListData(jiraServer.getResolutions().toArray());
221 				fixForList.setListData(jiraServer.getFixForVersions().toArray());
222 				componentsList.setListData(jiraServer.getComponents().toArray());
223 				affectsVersionsList.setListData(jiraServer.getVersions().toArray());
224 
225 				reporterComboBox.removeAllItems();
226 				reporterComboBox.addItem(new JIRAReporterBean(JIRAServer.ANY_ID, "Any User", null));
227 //reporterComboBox.addItem(new JIRAReporterBean((long) -1, "No reporter", "issue_no_reporter"));
228 				reporterComboBox.addItem(new JIRAReporterBean((long) -1, "Current User", jiraServer.getServer().getUsername()));
229 
230 				assigneeComboBox.removeAllItems();
231 				assigneeComboBox.addItem(new JIRAAssigneeBean(JIRAServer.ANY_ID, "Any User", ""));
232 				assigneeComboBox.addItem(new JIRAAssigneeBean((long) -1, "Unassigned", "unassigned"));
233 				assigneeComboBox.addItem(new JIRAAssigneeBean((long) -1, "Current User", jiraServer.getServer().getUsername()));
234 
235 
236 				setListValues(projectList, advancedQuery);
237 				setListValues(statusList, advancedQuery);
238 				setListValues(prioritiesList, advancedQuery);
239 				setListValues(resolutionsList, advancedQuery);
240 				setListValues(issueTypeList, advancedQuery);
241 				setListValues(componentsList, advancedQuery);
242 				setListValues(fixForList, advancedQuery);
243 				setListValues(affectsVersionsList, advancedQuery);
244 				setComboValue(assigneeComboBox, advancedQuery);
245 				setComboValue(reporterComboBox, advancedQuery);
246 
247 				progressAnimation.stopProgressAnimation();
248 				initialFilterSet = false;
249 			}
250 		}, "JIRA initial filter set").start();
251 	}
252 
253 	public void setListValues(JList list, List<JIRAQueryFragment> advancedQuery) {
254 		List<Integer> selection = new ArrayList<Integer>();
255 		for (int i = 0, size = list.getModel().getSize(); i < size; ++i) {
256 			for (JIRAQueryFragment jiraQueryFragment : advancedQuery) {
257 				JIRAQueryFragment fragment = (JIRAQueryFragment) list.getModel().getElementAt(i);
258 				if (jiraQueryFragment.getQueryStringFragment().equals(fragment.getQueryStringFragment())) {
259 					selection.add(i);
260 				}
261 			}
262 		}
263 		if (selection.size() > 0) {
264 			int[] sel = new int[selection.size()];
265 			int j = 0;
266 			for (Integer integer : selection) {
267 				sel[j++] = integer;
268 			}
269 			list.setSelectedIndices(sel);
270 			list.ensureIndexIsVisible(sel[0]);
271 		}
272 	}
273 
274 	public void setComboValue
275 			(JComboBox
276 					combo,
277 					List<JIRAQueryFragment> advancedQuery) {
278 		for (int i = 0, size = combo.getModel().getSize(); i < size; ++i) {
279 			for (JIRAQueryFragment jiraQueryFragment : advancedQuery) {
280 				JIRAQueryFragment fragment = (JIRAQueryFragment) combo.getModel().getElementAt(i);
281 				if (jiraQueryFragment.getQueryStringFragment().equals(fragment.getQueryStringFragment())) {
282 					combo.setSelectedIndex(i);
283 					break;
284 				}
285 			}
286 		}
287 	}
288 
289 
290 	public List<JIRAQueryFragment> getFilter() {
291 		List<JIRAQueryFragment> query = new ArrayList<JIRAQueryFragment>();
292 		for (Object o : projectList.getSelectedValues()) {
293 			query.add((JIRAQueryFragment) o);
294 		}
295 		for (Object o : issueTypeList.getSelectedValues()) {
296 			query.add((JIRAQueryFragment) o);
297 		}
298 		for (Object o : statusList.getSelectedValues()) {
299 			query.add((JIRAQueryFragment) o);
300 		}
301 		for (Object o : prioritiesList.getSelectedValues()) {
302 			query.add((JIRAQueryFragment) o);
303 		}
304 		for (Object o : resolutionsList.getSelectedValues()) {
305 			query.add((JIRAQueryFragment) o);
306 		}
307 		for (Object o : fixForList.getSelectedValues()) {
308 			query.add((JIRAQueryFragment) o);
309 		}
310 		for (Object o : componentsList.getSelectedValues()) {
311 			query.add((JIRAQueryFragment) o);
312 		}
313 		for (Object o : affectsVersionsList.getSelectedValues()) {
314 			query.add((JIRAQueryFragment) o);
315 		}
316 		query.add((JIRAQueryFragment) assigneeComboBox.getSelectedItem());
317 		query.add((JIRAQueryFragment) reporterComboBox.getSelectedItem());
318 		return query;
319 	}
320 
321 	private void createUIComponents
322 			() {
323 		Icon collapse = IconLoader.findIcon("/icons/navigate_down_10.gif");
324 		Icon expand = IconLoader.findIcon("/icons/navigate_right_10.gif");
325 		componentsVersionsPanel = new JPanel();
326 		issueAttributesPanel = new JPanel();
327 
328 		componentsVersionsCollapsiblePanel = new CollapsiblePanel(componentsVersionsPanel, true, false, collapse, expand,
329 				"Components/Versions");
330 		issueAttributesCollapsiblePanel = new CollapsiblePanel(issueAttributesPanel, true, false, collapse, expand,
331 				"Issue Attributes");
332 	}
333 
334 	/**
335 	 * Method generated by IntelliJ IDEA GUI Designer
336 	 * >>> IMPORTANT!! <<<
337 	 * DO NOT edit this method OR call it in your code!
338 	 *
339 	 * @noinspection ALL
340 	 */
341 	private void $$$setupUI$$$() {
342 		createUIComponents();
343 		rootPanel = new JPanel();
344 		rootPanel.setLayout(new FormLayout("fill:max(d;4px):noGrow",
345 				"center:max(d;4px):noGrow,top:3dlu:noGrow,center:max(d;4px):noGrow,top:3dlu:noGrow,center:max(d;4px):noGrow,top:3dlu:noGrow,center:max(d;4px):noGrow,top:3dlu:noGrow,center:max(d;4px):noGrow,top:3dlu:noGrow,center:d:grow"));
346 		rootPanel.setFocusCycleRoot(false);
347 		rootPanel.setMaximumSize(new Dimension(-1, -1));
348 		componentsVersionsPanel.setLayout(new FormLayout("fill:72px:noGrow,left:4dlu:noGrow,fill:d:grow",
349 				"center:d:grow,top:3dlu:noGrow,center:d:grow,top:3dlu:noGrow,center:d:grow"));
350 		componentsVersionsPanel.setEnabled(false);
351 		componentsVersionsPanel.setMinimumSize(new Dimension(335, -1));
352 		componentsVersionsPanel.setPreferredSize(new Dimension(335, 250));
353 		CellConstraints cc = new CellConstraints();
354 		rootPanel.add(componentsVersionsPanel, cc.xy(1, 5, CellConstraints.DEFAULT, CellConstraints.TOP));
355 		fixForScrollPane = new JScrollPane();
356 		componentsVersionsPanel.add(fixForScrollPane, cc.xy(3, 1));
357 		fixForList = new JList();
358 		fixForList.setVisibleRowCount(5);
359 		fixForScrollPane.setViewportView(fixForList);
360 		componentsScrollPane = new JScrollPane();
361 		componentsVersionsPanel.add(componentsScrollPane, cc.xy(3, 3));
362 		componentsList = new JList();
363 		final DefaultListModel defaultListModel1 = new DefaultListModel();
364 		componentsList.setModel(defaultListModel1);
365 		componentsList.setVisible(true);
366 		componentsList.setVisibleRowCount(5);
367 		componentsScrollPane.setViewportView(componentsList);
368 		affectVersionScrollPane = new JScrollPane();
369 		componentsVersionsPanel.add(affectVersionScrollPane, cc.xy(3, 5));
370 		affectsVersionsList = new JList();
371 		final DefaultListModel defaultListModel2 = new DefaultListModel();
372 		affectsVersionsList.setModel(defaultListModel2);
373 		affectsVersionsList.setVisibleRowCount(5);
374 		affectVersionScrollPane.setViewportView(affectsVersionsList);
375 		fixForLabel = new JLabel();
376 		fixForLabel.setFont(new Font(fixForLabel.getFont().getName(), fixForLabel.getFont().getStyle(), 11));
377 		fixForLabel.setText("Fix For:");
378 		componentsVersionsPanel.add(fixForLabel, cc.xy(1, 1, CellConstraints.RIGHT, CellConstraints.TOP));
379 		componentsLabel = new JLabel();
380 		componentsLabel.setFont(new Font(componentsLabel.getFont().getName(), componentsLabel.getFont().getStyle(), 11));
381 		componentsLabel.setHorizontalAlignment(4);
382 		componentsLabel.setText("Components:");
383 		componentsVersionsPanel.add(componentsLabel, cc.xy(1, 3, CellConstraints.RIGHT, CellConstraints.TOP));
384 		affectsVersionsLabel = new JLabel();
385 		affectsVersionsLabel
386 				.setFont(new Font(affectsVersionsLabel.getFont().getName(), affectsVersionsLabel.getFont().getStyle(), 11));
387 		affectsVersionsLabel.setText("<html>Affects<br>  Versions:</html>");
388 		componentsVersionsPanel.add(affectsVersionsLabel, cc.xy(1, 5, CellConstraints.RIGHT, CellConstraints.TOP));
389 		issueAttributesCollapsiblePanel.setBackground(new Color(-6711040));
390 		issueAttributesCollapsiblePanel.putClientProperty("html.disable", Boolean.TRUE);
391 		rootPanel.add(issueAttributesCollapsiblePanel, cc.xy(1, 7));
392 		issueAttributesPanel.setLayout(new FormLayout("fill:72px:noGrow,left:4dlu:noGrow,fill:d:grow",
393 				"center:max(d;4px):noGrow,top:3dlu:noGrow,center:max(d;4px):noGrow,top:3dlu:noGrow,center:d:grow,top:3dlu:noGrow,center:d:grow,top:3dlu:noGrow,center:d:grow"));
394 		issueAttributesPanel.setEnabled(false);
395 		issueAttributesPanel.setMinimumSize(new Dimension(335, -1));
396 		issueAttributesPanel.setPreferredSize(new Dimension(335, 314));
397 		rootPanel.add(issueAttributesPanel,
398 				new CellConstraints(1, 9, 1, 1, CellConstraints.DEFAULT, CellConstraints.TOP, new Insets(0, 0, 5, 0)));
399 		reporterComboBox = new JComboBox();
400 		reporterComboBox.setLightWeightPopupEnabled(false);
401 		reporterComboBox.setMaximumRowCount(5);
402 		issueAttributesPanel.add(reporterComboBox, cc.xy(3, 1));
403 		assigneeComboBox = new JComboBox();
404 		assigneeComboBox.setLightWeightPopupEnabled(false);
405 		assigneeComboBox.setMaximumRowCount(5);
406 		issueAttributesPanel.add(assigneeComboBox, cc.xy(3, 3));
407 		statusScrollPane = new JScrollPane();
408 		issueAttributesPanel.add(statusScrollPane, cc.xy(3, 5));
409 		statusList = new JList();
410 		final DefaultListModel defaultListModel3 = new DefaultListModel();
411 		statusList.setModel(defaultListModel3);
412 		statusList.setVisibleRowCount(5);
413 		statusScrollPane.setViewportView(statusList);
414 		resolutionScrollPane = new JScrollPane();
415 		issueAttributesPanel.add(resolutionScrollPane, cc.xy(3, 7));
416 		resolutionsList = new JList();
417 		final DefaultListModel defaultListModel4 = new DefaultListModel();
418 		resolutionsList.setModel(defaultListModel4);
419 		resolutionsList.setVisibleRowCount(5);
420 		resolutionScrollPane.setViewportView(resolutionsList);
421 		prioritiesScrollPane = new JScrollPane();
422 		issueAttributesPanel.add(prioritiesScrollPane, cc.xy(3, 9));
423 		prioritiesList = new JList();
424 		prioritiesList.setVisibleRowCount(5);
425 		prioritiesScrollPane.setViewportView(prioritiesList);
426 		reporterLabel = new JLabel();
427 		reporterLabel.setFont(new Font(reporterLabel.getFont().getName(), reporterLabel.getFont().getStyle(), 11));
428 		reporterLabel.setHorizontalAlignment(4);
429 		reporterLabel.setText("Reporter:");
430 		issueAttributesPanel.add(reporterLabel, cc.xy(1, 1, CellConstraints.RIGHT, CellConstraints.TOP));
431 		assigneeLabel = new JLabel();
432 		assigneeLabel.setFont(new Font(assigneeLabel.getFont().getName(), assigneeLabel.getFont().getStyle(), 11));
433 		assigneeLabel.setHorizontalAlignment(4);
434 		assigneeLabel.setText("Assignee:");
435 		issueAttributesPanel.add(assigneeLabel, cc.xy(1, 3, CellConstraints.RIGHT, CellConstraints.TOP));
436 		statusLabel = new JLabel();
437 		statusLabel.setFont(new Font(statusLabel.getFont().getName(), statusLabel.getFont().getStyle(), 11));
438 		statusLabel.setHorizontalAlignment(4);
439 		statusLabel.setRequestFocusEnabled(false);
440 		statusLabel.setText("Status:");
441 		issueAttributesPanel.add(statusLabel, cc.xy(1, 5, CellConstraints.RIGHT, CellConstraints.TOP));
442 		resolutionsLabel = new JLabel();
443 		resolutionsLabel.setFont(new Font(resolutionsLabel.getFont().getName(), resolutionsLabel.getFont().getStyle(), 11));
444 		resolutionsLabel.setHorizontalAlignment(4);
445 		resolutionsLabel.setText("Resolutions:");
446 		issueAttributesPanel.add(resolutionsLabel, cc.xy(1, 7, CellConstraints.RIGHT, CellConstraints.TOP));
447 		prioritiesLabel = new JLabel();
448 		prioritiesLabel.setFont(new Font(prioritiesLabel.getFont().getName(), prioritiesLabel.getFont().getStyle(), 11));
449 		prioritiesLabel.setHorizontalAlignment(4);
450 		prioritiesLabel.setText("Priorities:");
451 		prioritiesLabel.setVerticalTextPosition(0);
452 		issueAttributesPanel.add(prioritiesLabel, cc.xy(1, 9, CellConstraints.RIGHT, CellConstraints.TOP));
453 		componentsVersionsCollapsiblePanel.setBackground(new Color(-3368704));
454 		componentsVersionsCollapsiblePanel.setFont(new Font(componentsVersionsCollapsiblePanel.getFont().getName(),
455 				componentsVersionsCollapsiblePanel.getFont().getStyle(),
456 				componentsVersionsCollapsiblePanel.getFont().getSize()));
457 		rootPanel.add(componentsVersionsCollapsiblePanel, cc.xy(1, 3, CellConstraints.FILL, CellConstraints.DEFAULT));
458 		generalPanel = new JPanel();
459 		generalPanel.setLayout(new FormLayout("fill:72px:noGrow,left:4dlu:noGrow,fill:d:grow",
460 				"fill:d:grow,top:3dlu:noGrow,fill:max(d;4px):noGrow"));
461 		generalPanel.setDoubleBuffered(true);
462 		generalPanel.setEnabled(false);
463 		generalPanel.setMinimumSize(new Dimension(335, -1));
464 		rootPanel.add(generalPanel,
465 				new CellConstraints(1, 1, 1, 1, CellConstraints.DEFAULT, CellConstraints.DEFAULT, new Insets(5, 0, 0, 0)));
466 		final JLabel label1 = new JLabel();
467 		label1.setFont(new Font(label1.getFont().getName(), label1.getFont().getStyle(), 11));
468 		label1.setText("Project:");
469 		label1.setVerticalAlignment(1);
470 		generalPanel.add(label1, cc.xy(1, 1, CellConstraints.RIGHT, CellConstraints.TOP));
471 		issueTypeScrollPane = new JScrollPane();
472 		issueTypeScrollPane.setDoubleBuffered(false);
473 		generalPanel.add(issueTypeScrollPane, cc.xy(3, 3));
474 		issueTypeList = new JList();
475 		issueTypeList.setVisibleRowCount(5);
476 		issueTypeScrollPane.setViewportView(issueTypeList);
477 		projectScrollPane = new JScrollPane();
478 		generalPanel.add(projectScrollPane, cc.xy(3, 1));
479 		projectList = new JList();
480 		projectList.setInheritsPopupMenu(false);
481 		projectList.setLayoutOrientation(0);
482 		final DefaultListModel defaultListModel5 = new DefaultListModel();
483 		projectList.setModel(defaultListModel5);
484 		projectList.setVisibleRowCount(5);
485 		projectScrollPane.setViewportView(projectList);
486 		final JLabel label2 = new JLabel();
487 		label2.setFont(new Font(label2.getFont().getName(), label2.getFont().getStyle(), 11));
488 		label2.setRequestFocusEnabled(true);
489 		label2.setText("Issue Type:");
490 		generalPanel.add(label2, cc.xy(1, 3, CellConstraints.RIGHT, CellConstraints.TOP));
491 		final Spacer spacer1 = new Spacer();
492 		rootPanel.add(spacer1, cc.xy(1, 11, CellConstraints.DEFAULT, CellConstraints.FILL));
493 		fixForLabel.setLabelFor(fixForScrollPane);
494 		componentsLabel.setNextFocusableComponent(componentsScrollPane);
495 		componentsLabel.setLabelFor(componentsScrollPane);
496 		affectsVersionsLabel.setLabelFor(affectVersionScrollPane);
497 		reporterLabel.setLabelFor(reporterComboBox);
498 		assigneeLabel.setLabelFor(assigneeComboBox);
499 		statusLabel.setLabelFor(statusScrollPane);
500 		resolutionsLabel.setLabelFor(resolutionScrollPane);
501 		prioritiesLabel.setLabelFor(prioritiesScrollPane);
502 		label1.setLabelFor(projectScrollPane);
503 		label2.setLabelFor(issueTypeScrollPane);
504 	}
505 
506 	/**
507 	 * @noinspection ALL
508 	 */
509 	public JComponent $$$getRootComponent$$$() {
510 		return rootPanel;
511 	}
512 }
513