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

Collapse All | Expand All

(-)src/org/eclipse/mylyn/internal/bugzilla/ui/search/BugzillaSearchPage.java (-20 / +938 lines)
Lines 23-28 Link Here
23
import java.util.HashSet;
23
import java.util.HashSet;
24
import java.util.Map;
24
import java.util.Map;
25
import java.util.Set;
25
import java.util.Set;
26
import java.util.regex.Matcher;
27
import java.util.regex.Pattern;
26
28
27
import org.eclipse.core.runtime.CoreException;
29
import org.eclipse.core.runtime.CoreException;
28
import org.eclipse.core.runtime.IProgressMonitor;
30
import org.eclipse.core.runtime.IProgressMonitor;
Lines 45-50 Link Here
45
import org.eclipse.jface.window.Window;
47
import org.eclipse.jface.window.Window;
46
import org.eclipse.mylyn.commons.core.CoreUtil;
48
import org.eclipse.mylyn.commons.core.CoreUtil;
47
import org.eclipse.mylyn.commons.core.StatusHandler;
49
import org.eclipse.mylyn.commons.core.StatusHandler;
50
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaCustomField;
48
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaRepositoryConnector;
51
import org.eclipse.mylyn.internal.bugzilla.core.BugzillaRepositoryConnector;
49
import org.eclipse.mylyn.internal.bugzilla.core.IBugzillaConstants;
52
import org.eclipse.mylyn.internal.bugzilla.core.IBugzillaConstants;
50
import org.eclipse.mylyn.internal.bugzilla.core.RepositoryConfiguration;
53
import org.eclipse.mylyn.internal.bugzilla.core.RepositoryConfiguration;
Lines 149-157 Link Here
149
	private static final String[] emailRoleValues2 = { "emailassigned_to2", "emailreporter2", "emailcc2", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 
152
	private static final String[] emailRoleValues2 = { "emailassigned_to2", "emailreporter2", "emailcc2", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 
150
			"emaillongdesc2", "emailqa_contact2" }; //$NON-NLS-1$ //$NON-NLS-2$
153
			"emaillongdesc2", "emailqa_contact2" }; //$NON-NLS-1$ //$NON-NLS-2$
151
154
155
	private static final ArrayList<String> chartFieldTextDefault = new ArrayList<String>() {
156
		private static final long serialVersionUID = 1974092160992399001L;
157
		{
158
			add(Messages.BugzillaSearchPage_Field_Noop);
159
			add(Messages.BugzillaSearchPage_Field_Alias);
160
			add(Messages.BugzillaSearchPage_Field_AssignedTo);
161
			add(Messages.BugzillaSearchPage_Field_Attachment_creator);
162
			add(Messages.BugzillaSearchPage_Field_Attachment_data);
163
			add(Messages.BugzillaSearchPage_Field_Attachment_description);
164
			add(Messages.BugzillaSearchPage_Field_Attachment_filename);
165
			add(Messages.BugzillaSearchPage_Field_Attachment_is_a_URL);
166
			add(Messages.BugzillaSearchPage_Field_Attachment_is_obsolete);
167
			add(Messages.BugzillaSearchPage_Field_Attachment_is_patch);
168
			add(Messages.BugzillaSearchPage_Field_Attachment_is_private);
169
			add(Messages.BugzillaSearchPage_Field_Attachment_mime_type);
170
			add(Messages.BugzillaSearchPage_Field_Blocks);
171
			add(Messages.BugzillaSearchPage_Field_Bug);
172
			add(Messages.BugzillaSearchPage_Field_CC);
173
			add(Messages.BugzillaSearchPage_Field_CC_Accessible);
174
			add(Messages.BugzillaSearchPage_Field_Classification);
175
			add(Messages.BugzillaSearchPage_Field_Comment);
176
			add(Messages.BugzillaSearchPage_Field_Comment_is_private);
177
			add(Messages.BugzillaSearchPage_Field_Commenter);
178
			add(Messages.BugzillaSearchPage_Field_Component);
179
			add(Messages.BugzillaSearchPage_Field_Content);
180
			add(Messages.BugzillaSearchPage_Field_Creation_date);
181
			add(Messages.BugzillaSearchPage_Field_Days_since_bug_changed);
182
			add(Messages.BugzillaSearchPage_Field_Depends_on);
183
			add(Messages.BugzillaSearchPage_Field_drop_down_custom_field);
184
			add(Messages.BugzillaSearchPage_Field_Ever_Confirmed);
185
			add(Messages.BugzillaSearchPage_Field_Flag);
186
			add(Messages.BugzillaSearchPage_Field_Flag_Requestee);
187
			add(Messages.BugzillaSearchPage_Field_Flag_Setter);
188
			add(Messages.BugzillaSearchPage_Field_free_text_custom_field);
189
			add(Messages.BugzillaSearchPage_Field_Group);
190
			add(Messages.BugzillaSearchPage_Field_Keywords);
191
			add(Messages.BugzillaSearchPage_Field_Last_changed_date);
192
			add(Messages.BugzillaSearchPage_Field_OS_Version);
193
			add(Messages.BugzillaSearchPage_Field_Platform);
194
			add(Messages.BugzillaSearchPage_Field_Priority);
195
			add(Messages.BugzillaSearchPage_Field_Product);
196
			add(Messages.BugzillaSearchPage_Field_QAContact);
197
			add(Messages.BugzillaSearchPage_Field_ReportedBy);
198
			add(Messages.BugzillaSearchPage_Field_Reporter_Accessible);
199
			add(Messages.BugzillaSearchPage_Field_Resolution);
200
			add(Messages.BugzillaSearchPage_Field_Severity);
201
			add(Messages.BugzillaSearchPage_Field_Status);
202
			add(Messages.BugzillaSearchPage_Field_Status_Whiteboard);
203
			add(Messages.BugzillaSearchPage_Field_Summary);
204
			add(Messages.BugzillaSearchPage_Field_Target_Milestone);
205
			add(Messages.BugzillaSearchPage_Field_Time_Since_Assignee_Touched);
206
			add(Messages.BugzillaSearchPage_Field_URL);
207
			add(Messages.BugzillaSearchPage_Field_Version);
208
			add(Messages.BugzillaSearchPage_Field_Votes);
209
		}
210
	};
211
212
	private static final ArrayList<String> chartFieldValuesDefault = new ArrayList<String>() {
213
		private static final long serialVersionUID = 9135403539678279982L;
214
		{
215
			add("noop"); //$NON-NLS-1$
216
			add("alias"); //$NON-NLS-1$
217
			add("assigned_to"); //$NON-NLS-1$
218
			add("attachments.submitter"); //$NON-NLS-1$
219
			add("attach_data.thedata"); //$NON-NLS-1$
220
			add("attachments.description"); //$NON-NLS-1$
221
			add("attachments.filename"); //$NON-NLS-1$
222
			add("attachments.isurl"); //$NON-NLS-1$
223
			add("attachments.isobsolete"); //$NON-NLS-1$
224
			add("attachments.ispatch"); //$NON-NLS-1$
225
			add("attachments.isprivate"); //$NON-NLS-1$
226
			add("attachments.mimetype"); //$NON-NLS-1$
227
			add("blocked"); //$NON-NLS-1$
228
			add("bug_id"); //$NON-NLS-1$
229
			add("cc"); //$NON-NLS-1$
230
			add("cclist_accessible"); //$NON-NLS-1$
231
			add("classification"); //$NON-NLS-1$
232
			add("longdesc"); //$NON-NLS-1$
233
			add("longdescs.isprivate"); //$NON-NLS-1$
234
			add("commenter"); //$NON-NLS-1$
235
			add("component"); //$NON-NLS-1$
236
			add("content"); //$NON-NLS-1$
237
			add("creation_ts"); //$NON-NLS-1$
238
			add("days_elapsed"); //$NON-NLS-1$
239
			add("dependson"); //$NON-NLS-1$
240
			add("cf_dropdown"); //$NON-NLS-1$
241
			add("everconfirmed"); //$NON-NLS-1$
242
			add("flagtypes.name"); //$NON-NLS-1$
243
			add("requestees.login_name"); //$NON-NLS-1$
244
			add("setters.login_name"); //$NON-NLS-1$
245
			add("cf_freetext"); //$NON-NLS-1$
246
			add("bug_group"); //$NON-NLS-1$
247
			add("keywords"); //$NON-NLS-1$
248
			add("delta_ts"); //$NON-NLS-1$
249
			add("op_sys"); //$NON-NLS-1$
250
			add("rep_platform"); //$NON-NLS-1$
251
			add("priority"); //$NON-NLS-1$
252
			add("product"); //$NON-NLS-1$
253
			add("qa_contact"); //$NON-NLS-1$
254
			add("reporter"); //$NON-NLS-1$
255
			add("reporter_accessible"); //$NON-NLS-1$
256
			add("resolution"); //$NON-NLS-1$
257
			add("bug_severity"); //$NON-NLS-1$
258
			add("bug_status"); //$NON-NLS-1$
259
			add("status_whiteboard"); //$NON-NLS-1$
260
			add("short_desc"); //$NON-NLS-1$
261
			add("target_milestone"); //$NON-NLS-1$
262
			add("owner_idle_time"); //$NON-NLS-1$
263
			add("bug_file_loc"); //$NON-NLS-1$
264
			add("version"); //$NON-NLS-1$
265
			add("votes"); //$NON-NLS-1$
266
		}
267
	};
268
269
	private static final String[] chartOperationText = { Messages.BugzillaSearchPage_Operation_Noop,
270
			Messages.BugzillaSearchPage_Operation_is_equal_to, Messages.BugzillaSearchPage_Operation_is_not_equal_to,
271
			Messages.BugzillaSearchPage_Operation_is_equal_to_any_of_the_strings,
272
			Messages.BugzillaSearchPage_Operation_contains_the_string,
273
			Messages.BugzillaSearchPage_Operation_contains_the_string_exact_case,
274
			Messages.BugzillaSearchPage_Operation_does_not_contain_the_string,
275
			Messages.BugzillaSearchPage_Operation_contains_any_of_the_strings,
276
			Messages.BugzillaSearchPage_Operation_contains_all_of_the_strings,
277
			Messages.BugzillaSearchPage_Operation_contains_none_of_the_strings,
278
			Messages.BugzillaSearchPage_Operation_contains_regexp,
279
			Messages.BugzillaSearchPage_Operation_does_not_contain_regexp,
280
			Messages.BugzillaSearchPage_Operation_is_less_than, Messages.BugzillaSearchPage_Operation_is_greater_than,
281
			Messages.BugzillaSearchPage_Operation_contains_any_of_he_words,
282
			Messages.BugzillaSearchPage_Operation_contains_all_of_the_words,
283
			Messages.BugzillaSearchPage_Operation_contains_none_of_the_words,
284
			Messages.BugzillaSearchPage_Operation_changed_before, Messages.BugzillaSearchPage_Operation_changed_after,
285
			Messages.BugzillaSearchPage_Operation_changed_from, Messages.BugzillaSearchPage_Operation_changed_to,
286
			Messages.BugzillaSearchPage_Operation_changed_by, Messages.BugzillaSearchPage_Operation_matches };
287
288
	private static final String[] chartOperationValues = { "noop", "equals", "notequals", "anyexact", "substring", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
289
			"casesubstring", "notsubstring", "anywordssubstr", "allwordssubstr", "nowordssubstr", "regexp", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
290
			"notregexp", "lessthan", "greaterthan", "anywords", "allwords", "nowords", "changedbefore", "changedafter", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$
291
			"changedfrom", "changedto", "changedby", "matches" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
292
152
	// dialog store id constants
293
	// dialog store id constants
153
	private final static String DIALOG_BOUNDS_KEY = "ResizableDialogBounds"; //$NON-NLS-1$
294
	private final static String DIALOG_BOUNDS_KEY = "ResizableDialogBounds"; //$NON-NLS-1$
154
295
296
	private final static String REGEXP_CHART_EXPR = "(field|type|value)([0-9]+)-([0-9]+)-([0-9]+)"; //$NON-NLS-1$
297
298
	private static final Pattern PATTERN_CHART_EXPR = Pattern.compile(REGEXP_CHART_EXPR, Pattern.CASE_INSENSITIVE);
299
300
	private final static String REGEXP_CHART_NEGATE = "(negate)([0-9]+)"; //$NON-NLS-1$
301
302
	private static final Pattern PATTERN_CHART_NEGATE = Pattern.compile(REGEXP_CHART_NEGATE, Pattern.CASE_INSENSITIVE);
303
155
	private static final String X = "x"; //$NON-NLS-1$
304
	private static final String X = "x"; //$NON-NLS-1$
156
305
157
	private static final String Y = "y"; //$NON-NLS-1$
306
	private static final String Y = "y"; //$NON-NLS-1$
Lines 216-221 Link Here
216
365
217
	protected Text daysText;
366
	protected Text daysText;
218
367
368
	protected String[] chartFieldText;
369
370
	protected String[] chartFieldValues;
371
219
	// /** File containing saved queries */
372
	// /** File containing saved queries */
220
	// protected static SavedQueryFile input;
373
	// protected static SavedQueryFile input;
221
374
Lines 292-297 Link Here
292
445
293
	private ExpandableComposite moreOptionsExpandComposite;
446
	private ExpandableComposite moreOptionsExpandComposite;
294
447
448
//FB	private ExpandableComposite basicOptionsExpandComposite;
449
450
	private ExpandableComposite chartExpandComposite;
451
452
//	private Group chartGroup;
453
	private Composite chartGroup;
454
455
	protected class ChartExpression {
456
		private int fieldName;
457
458
		private int operation;
459
460
		private String value;
461
462
		public ChartExpression(int fieldName, int operation, String value) {
463
			super();
464
			this.fieldName = fieldName;
465
			this.operation = operation;
466
			this.value = value;
467
		}
468
469
		public int getFieldName() {
470
			return fieldName;
471
		}
472
473
		public void setFieldName(int fieldName) {
474
			this.fieldName = fieldName;
475
		}
476
477
		public int getOperation() {
478
			return operation;
479
		}
480
481
		public void setOperation(int operation) {
482
			this.operation = operation;
483
		}
484
485
		public String getValue() {
486
			return value;
487
		}
488
489
		public void setValue(String value) {
490
			this.value = value;
491
		}
492
	}
493
494
	protected class Chart {
495
		private final ArrayList<ArrayList<ChartExpression>> expressions;
496
497
		private boolean negate;
498
499
		public Chart() {
500
			super();
501
			ChartExpression expression = new ChartExpression(0, 0, ""); //$NON-NLS-1$
502
			ArrayList<ChartExpression> column = new ArrayList<ChartExpression>(1);
503
			column.add(expression);
504
			expressions = new ArrayList<ArrayList<ChartExpression>>(1);
505
			expressions.add(column);
506
			negate = false;
507
		}
508
509
		public boolean isNegate() {
510
			return negate;
511
		}
512
513
		public void setNegate(boolean negate) {
514
			this.negate = negate;
515
		}
516
517
		public void addExpression(int rowIndex, int columnIndex) {
518
			ChartExpression expression = new ChartExpression(0, 0, ""); //$NON-NLS-1$
519
			int size = expressions.size();
520
			if (rowIndex > size + 1) {
521
				rowIndex = size + 1;
522
			}
523
			if (rowIndex < 0) {
524
				rowIndex = 0;
525
			}
526
			ArrayList<ChartExpression> row;
527
			if (rowIndex == size) {
528
				row = new ArrayList<BugzillaSearchPage.ChartExpression>();
529
				expressions.add(rowIndex, row);
530
			} else {
531
				row = expressions.get(rowIndex);
532
			}
533
			if (row != null) {
534
				int size1 = expressions.size();
535
				if (columnIndex > size1 + 1) {
536
					columnIndex = size1 + 1;
537
				}
538
				if (columnIndex < 0) {
539
					columnIndex = 0;
540
				}
541
				row.add(columnIndex, expression);
542
			}
543
544
		}
545
546
		public void addRow(int index) {
547
			int size = expressions.size();
548
			if (index > size) {
549
				index = size;
550
			}
551
			if (index < 0) {
552
				index = 0;
553
			}
554
			addRow(index);
555
		}
556
557
		public int getRowSize() {
558
			return expressions.size();
559
		}
560
561
		public int getColumnSize(int row) {
562
			int size = expressions.size();
563
			if (row > size) {
564
				row = size;
565
			}
566
			if (row < 0) {
567
				row = 0;
568
			}
569
			return expressions.get(row).size();
570
		}
571
572
		public ChartExpression getChartExpression(int row, int column) {
573
			int rowSize = expressions.size();
574
			if (row > rowSize) {
575
				row = rowSize;
576
			}
577
			if (row < 0) {
578
				row = 0;
579
			}
580
581
			int columnSize = getColumnSize(row);
582
			if (column > columnSize) {
583
				column = columnSize;
584
			}
585
			if (column < 0) {
586
				column = 0;
587
			}
588
			return expressions.get(row).get(column);
589
		}
590
	}
591
592
	private final ArrayList<Chart> charts = new ArrayList<BugzillaSearchPage.Chart>(1);
593
594
	private class ChartControls {
595
		private final Combo field;
596
597
		private final Combo operation;
598
599
		private final Combo value;
600
601
		public ChartControls(Combo field, Combo operation, Combo value) {
602
			super();
603
			this.field = field;
604
			this.operation = operation;
605
			this.value = value;
606
		}
607
608
		public Combo getField() {
609
			return field;
610
		}
611
612
		public Combo getOperation() {
613
			return operation;
614
		}
615
616
		public Combo getValue() {
617
			return value;
618
		}
619
	}
620
621
	private final ArrayList<ArrayList<ArrayList<ChartControls>>> chartControls = new ArrayList<ArrayList<ArrayList<ChartControls>>>();
622
623
	private final ArrayList<Button> negateButtons = new ArrayList<Button>();
624
295
	private final SelectionAdapter updateActionSelectionAdapter = new SelectionAdapter() {
625
	private final SelectionAdapter updateActionSelectionAdapter = new SelectionAdapter() {
296
		@Override
626
		@Override
297
		public void widgetSelected(SelectionEvent e) {
627
		public void widgetSelected(SelectionEvent e) {
Lines 452-457 Link Here
452
			queryTitle.addModifyListener(new ModifyListenerImplementation());
782
			queryTitle.addModifyListener(new ModifyListenerImplementation());
453
			queryTitle.setFocus();
783
			queryTitle.setFocus();
454
		}
784
		}
785
		chartFieldText = chartFieldTextDefault.toArray(new String[chartFieldTextDefault.size()]);
786
		chartFieldValues = chartFieldValuesDefault.toArray(new String[chartFieldValuesDefault.size()]);
787
788
//		basicOptionsExpandComposite = toolkit.createExpandableComposite(basicComposite, ExpandableComposite.COMPACT
789
//				| ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR);
790
//		basicOptionsExpandComposite.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DIALOG_FONT));
791
//		basicOptionsExpandComposite.setBackground(null);
792
//		basicOptionsExpandComposite.setText("Basic Options");
793
//		basicOptionsExpandComposite.setLayout(new GridLayout(3, false));
794
//		g = new GridData(GridData.FILL, GridData.VERTICAL_ALIGN_BEGINNING, true, true);
795
//		g.horizontalSpan = 4;
796
//		g.horizontalIndent = INDENT;
797
//		basicOptionsExpandComposite.setLayoutData(g);
798
//		basicOptionsExpandComposite.addExpansionListener(new ExpansionAdapter() {
799
//			@Override
800
//			public void expansionStateChanged(ExpansionEvent e) {
801
//				if ((Boolean) e.data == true) {
802
//					Point minSize = getControl().getShell().getMinimumSize();
803
//					minSize.y = 460;
804
//					getControl().getShell().setMinimumSize(minSize);
805
//				} else {
806
//					Point minSize = getControl().getShell().getMinimumSize();
807
//					minSize.y = 250;
808
//					getControl().getShell().setMinimumSize(minSize);
809
//				}
810
//				Shell shell = getShell();
811
//				shell.pack();
812
//				Point shellSize = shell.getSize();
813
//				shellSize.x++;
814
//				shell.setSize(shellSize);
815
//				shellSize.x--;
816
//				shell.setSize(shellSize);
817
//			}
818
//		});
819
//
820
//		Composite basicOptionsComposite = new Composite(basicOptionsExpandComposite, SWT.NULL);
821
//		GridLayout basicOptionsLayout = new GridLayout(4, false);
822
//		basicOptionsLayout.marginHeight = 0;
823
//		basicOptionsLayout.marginWidth = 0;
824
//		basicOptionsComposite.setLayout(basicOptionsLayout);
825
//
826
//		Dialog.applyDialogFont(basicOptionsComposite);
827
//		basicOptionsExpandComposite.setClient(basicOptionsComposite);
828
//		createBasicComposite(basicOptionsComposite);
455
		createBasicComposite(basicComposite);
829
		createBasicComposite(basicComposite);
456
830
457
		moreOptionsExpandComposite = toolkit.createExpandableComposite(control, ExpandableComposite.COMPACT
831
		moreOptionsExpandComposite = toolkit.createExpandableComposite(control, ExpandableComposite.COMPACT
Lines 460-466 Link Here
460
		moreOptionsExpandComposite.setBackground(null);
834
		moreOptionsExpandComposite.setBackground(null);
461
		moreOptionsExpandComposite.setText(Messages.BugzillaSearchPage_More_Options);
835
		moreOptionsExpandComposite.setText(Messages.BugzillaSearchPage_More_Options);
462
		moreOptionsExpandComposite.setLayout(new GridLayout(3, false));
836
		moreOptionsExpandComposite.setLayout(new GridLayout(3, false));
463
		g = new GridData(GridData.FILL, GridData.VERTICAL_ALIGN_BEGINNING, true, false);
837
		g = new GridData(GridData.FILL, GridData.VERTICAL_ALIGN_BEGINNING, true, true);
464
		g.horizontalSpan = 4;
838
		g.horizontalSpan = 4;
465
		g.horizontalIndent = INDENT;
839
		g.horizontalIndent = INDENT;
466
		moreOptionsExpandComposite.setLayoutData(g);
840
		moreOptionsExpandComposite.setLayoutData(g);
Lines 469-479 Link Here
469
			public void expansionStateChanged(ExpansionEvent e) {
843
			public void expansionStateChanged(ExpansionEvent e) {
470
				if ((Boolean) e.data == true) {
844
				if ((Boolean) e.data == true) {
471
					Point minSize = getControl().getShell().getMinimumSize();
845
					Point minSize = getControl().getShell().getMinimumSize();
472
					minSize.y = 660;
846
					minSize.y = 460;
473
					getControl().getShell().setMinimumSize(minSize);
847
					getControl().getShell().setMinimumSize(minSize);
474
				} else {
848
				} else {
475
					Point minSize = getControl().getShell().getMinimumSize();
849
					Point minSize = getControl().getShell().getMinimumSize();
476
					minSize.y = 450;
850
					minSize.y = 250;
477
					getControl().getShell().setMinimumSize(minSize);
851
					getControl().getShell().setMinimumSize(minSize);
478
				}
852
				}
479
				Shell shell = getShell();
853
				Shell shell = getShell();
Lines 495-506 Link Here
495
		Dialog.applyDialogFont(moreOptionsComposite);
869
		Dialog.applyDialogFont(moreOptionsComposite);
496
		moreOptionsExpandComposite.setClient(moreOptionsComposite);
870
		moreOptionsExpandComposite.setClient(moreOptionsComposite);
497
871
872
		chartExpandComposite = toolkit.createExpandableComposite(control, ExpandableComposite.COMPACT
873
				| ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR);
874
		chartExpandComposite.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DIALOG_FONT));
875
		chartExpandComposite.setBackground(null);
876
		chartExpandComposite.setText(Messages.BugzillaSearchPage_Field_0);
877
		chartExpandComposite.setLayout(new GridLayout(1, false));
878
		g = new GridData(GridData.FILL, GridData.FILL, true, false);
879
		g.horizontalSpan = 4;
880
		g.horizontalIndent = INDENT;
881
		chartExpandComposite.setLayoutData(g);
882
//FB		chartExpandComposite.setBackground(new Color(moreOptionsExpandComposite.getDisplay(), 128, 128, 0));
883
884
		chartExpandComposite.addExpansionListener(new ExpansionAdapter() {
885
			@Override
886
			public void expansionStateChanged(ExpansionEvent e) {
887
				if ((Boolean) e.data == true) {
888
					Point minSize = getControl().getShell().getMinimumSize();
889
					minSize.y = 300;
890
					getControl().getShell().setMinimumSize(minSize);
891
				} else {
892
					Point minSize = getControl().getShell().getMinimumSize();
893
					minSize.y = 90;
894
					getControl().getShell().setMinimumSize(minSize);
895
				}
896
				Shell shell = getShell();
897
				shell.pack();
898
				Point shellSize = shell.getSize();
899
				shellSize.x++;
900
				shell.setSize(shellSize);
901
				shellSize.x--;
902
				shell.setSize(shellSize);
903
			}
904
		});
905
906
//		Composite chartOptionsComposite = new Composite(chartExpandComposite, SWT.NULL);
907
//		GridLayout chartLayout = new GridLayout(1, false);
908
//		chartLayout.marginHeight = 0;
909
//		chartLayout.marginWidth = 0;
910
//		chartOptionsComposite.setLayout(chartLayout);
911
//		GridData gd = new GridData(SWT.FILL, SWT.CENTER, true, true, 1, 1);
912
//		chartOptionsComposite.setBackground(new Color(chartExpandComposite.getDisplay(), 0, 128, 128));
913
//		chartOptionsComposite.setLayoutData(gd);
914
//
915
//		Dialog.applyDialogFont(chartOptionsComposite);
916
//		chartExpandComposite.setClient(chartOptionsComposite);
917
498
		createMoreOptionsComposite(moreOptionsComposite);
918
		createMoreOptionsComposite(moreOptionsComposite);
499
		createSearchGroup(moreOptionsComposite);
919
		createSearchGroup(moreOptionsComposite);
920
//		createChartGroup(chartOptionsComposite);
921
		createChartGroup(chartExpandComposite);
922
		chartExpandComposite.setClient(chartGroup);
923
500
		if (inSearchContainer()) {
924
		if (inSearchContainer()) {
501
			control.getShell().setMinimumSize(new Point(610, 450));
925
			control.getShell().setMinimumSize(new Point(210, 450));
502
		} else {
926
		} else {
503
			control.getShell().setMinimumSize(new Point(590, 450));
927
			control.getShell().setMinimumSize(new Point(190, 450));
504
		}
928
		}
505
	}
929
	}
506
930
Lines 974-980 Link Here
974
		gd_os.heightHint = HEIGHT_ATTRIBUTE_COMBO;
1398
		gd_os.heightHint = HEIGHT_ATTRIBUTE_COMBO;
975
		os.setLayoutData(gd_os);
1399
		os.setLayoutData(gd_os);
976
		os.addSelectionListener(updateActionSelectionAdapter);
1400
		os.addSelectionListener(updateActionSelectionAdapter);
977
978
	}
1401
	}
979
1402
980
	private void createSearchGroup(Composite control) {
1403
	private void createSearchGroup(Composite control) {
Lines 1161-1166 Link Here
1161
				if (originalQuery != null) {
1584
				if (originalQuery != null) {
1162
					try {
1585
					try {
1163
						updateDefaults(originalQuery.getUrl());
1586
						updateDefaults(originalQuery.getUrl());
1587
						refreshChartControls();
1164
					} catch (UnsupportedEncodingException e) {
1588
					} catch (UnsupportedEncodingException e) {
1165
						// ignore
1589
						// ignore
1166
					}
1590
					}
Lines 1466-1472 Link Here
1466
		sb.append("&status_whiteboard_type="); //$NON-NLS-1$
1890
		sb.append("&status_whiteboard_type="); //$NON-NLS-1$
1467
		sb.append(patternOperationValues[whiteboardOperation.getSelectionIndex()]);
1891
		sb.append(patternOperationValues[whiteboardOperation.getSelectionIndex()]);
1468
		appendToBuffer(sb, "&status_whiteboard=", whiteboardPattern.getText()); //$NON-NLS-1$
1892
		appendToBuffer(sb, "&status_whiteboard=", whiteboardPattern.getText()); //$NON-NLS-1$
1469
1893
		int indexMax = charts.size();
1894
		for (int index = 0; index < indexMax; index++) {
1895
			Chart chart = charts.get(index);
1896
			if (chart.isNegate()) {
1897
				sb.append("&negate" + index + "=1"); //$NON-NLS-1$ //$NON-NLS-2$
1898
			}
1899
			int rowMax = chart.getRowSize();
1900
			for (int row = 0; row < rowMax; row++) {
1901
				int columnMax = chart.getColumnSize(row);
1902
				for (int column = 0; column < columnMax; column++) {
1903
					ChartExpression chartExpression = chart.getChartExpression(row, column);
1904
					if (chartExpression.getFieldName() == 0) {
1905
						continue;
1906
					}
1907
					sb.append("&field" + index + "-" + row + "-" + column + "=" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
1908
							+ chartFieldValues[chartExpression.getFieldName()]);
1909
					sb.append("&type" + index + "-" + row + "-" + column + "=" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
1910
							+ chartOperationValues[chartExpression.getOperation()]);
1911
					sb.append("&value" + index + "-" + row + "-" + column + "=" + chartExpression.getValue()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
1912
				}
1913
			}
1914
		}
1470
		return sb;
1915
		return sb;
1471
	}
1916
	}
1472
1917
Lines 1496-1501 Link Here
1496
		getDialogSettings();
1941
		getDialogSettings();
1497
	}
1942
	}
1498
1943
1944
	@SuppressWarnings("unchecked")
1499
	private void updateAttributesFromConfiguration(String[] selectedProducts) {
1945
	private void updateAttributesFromConfiguration(String[] selectedProducts) {
1500
		if (repositoryConfiguration != null) {
1946
		if (repositoryConfiguration != null) {
1501
			String[] saved_product = product.getSelection();
1947
			String[] saved_product = product.getSelection();
Lines 1542-1547 Link Here
1542
			setSelection(priority, saved_priority);
1988
			setSelection(priority, saved_priority);
1543
			setSelection(hardware, saved_hardware);
1989
			setSelection(hardware, saved_hardware);
1544
			setSelection(os, saved_os);
1990
			setSelection(os, saved_os);
1991
1992
			if (repositoryConfiguration != null) {
1993
				ArrayList<String> fieldText = (ArrayList<String>) chartFieldTextDefault.clone();
1994
				ArrayList<String> fieldValue = (ArrayList<String>) chartFieldValuesDefault.clone();
1995
1996
				for (BugzillaCustomField bugzillaCustomField : repositoryConfiguration.getCustomFields()) {
1997
					fieldValue.add(bugzillaCustomField.getName());
1998
					fieldText.add(bugzillaCustomField.getDescription());
1999
				}
2000
				chartFieldText = fieldText.toArray(new String[fieldText.size()]);
2001
				chartFieldValues = fieldValue.toArray(new String[fieldValue.size()]);
2002
				recreateChartControls();
2003
			}
2004
1545
		}
2005
		}
1546
	}
2006
	}
1547
2007
Lines 1566-1572 Link Here
1566
	public void updateDefaults(String startingUrl) throws UnsupportedEncodingException {
2026
	public void updateDefaults(String startingUrl) throws UnsupportedEncodingException {
1567
		// String serverName = startingUrl.substring(0,
2027
		// String serverName = startingUrl.substring(0,
1568
		// startingUrl.indexOf("?"));
2028
		// startingUrl.indexOf("?"));
1569
2029
		boolean adjustChart = false;
1570
		startingUrl = startingUrl.substring(startingUrl.indexOf("?") + 1); //$NON-NLS-1$
2030
		startingUrl = startingUrl.substring(startingUrl.indexOf("?") + 1); //$NON-NLS-1$
1571
		String[] options = startingUrl.split("&"); //$NON-NLS-1$
2031
		String[] options = startingUrl.split("&"); //$NON-NLS-1$
1572
		for (String option : options) {
2032
		for (String option : options) {
Lines 1586-1598 Link Here
1586
			if (key.equals("short_desc")) { //$NON-NLS-1$
2046
			if (key.equals("short_desc")) { //$NON-NLS-1$
1587
				summaryPattern.setText(value);
2047
				summaryPattern.setText(value);
1588
			} else if (key.equals("short_desc_type")) { //$NON-NLS-1$
2048
			} else if (key.equals("short_desc_type")) { //$NON-NLS-1$
1589
				if (value.equals("allwordssubstr")) { //$NON-NLS-1$
1590
					value = "all words"; //$NON-NLS-1$
1591
				} else if (value.equals("anywordssubstr")) { //$NON-NLS-1$
1592
					value = "any word"; //$NON-NLS-1$
1593
				}
1594
				int index = 0;
2049
				int index = 0;
1595
				for (String item : summaryOperation.getItems()) {
2050
				for (String item : patternOperationValues) {
1596
					if (item.compareTo(value) == 0) {
2051
					if (item.compareTo(value) == 0) {
1597
						break;
2052
						break;
1598
					}
2053
					}
Lines 1638-1650 Link Here
1638
				sel = new String[selList.size()];
2093
				sel = new String[selList.size()];
1639
				version.setSelection(selList.toArray(sel));
2094
				version.setSelection(selList.toArray(sel));
1640
			} else if (key.equals("long_desc_type")) { //$NON-NLS-1$
2095
			} else if (key.equals("long_desc_type")) { //$NON-NLS-1$
1641
				if (value.equals("allwordssubstr")) { //$NON-NLS-1$
1642
					value = "all words"; //$NON-NLS-1$
1643
				} else if (value.equals("anywordssubstr")) { //$NON-NLS-1$
1644
					value = "any word"; //$NON-NLS-1$
1645
				}
1646
				int index = 0;
2096
				int index = 0;
1647
				for (String item : commentOperation.getItems()) {
2097
				for (String item : patternOperationValues) {
1648
					if (item.compareTo(value) == 0) {
2098
					if (item.compareTo(value) == 0) {
1649
						break;
2099
						break;
1650
					}
2100
					}
Lines 1826-1833 Link Here
1826
					}
2276
					}
1827
					index++;
2277
					index++;
1828
				}
2278
				}
2279
			} else if (key.equals("status_whiteboard_type")) { //$NON-NLS-1$
2280
				int index = 0;
2281
				for (String item : patternOperationValues) {
2282
					if (item.compareTo(value) == 0) {
2283
						break;
2284
					}
2285
					index++;
2286
				}
2287
				if (index < whiteboardOperation.getItemCount()) {
2288
					whiteboardOperation.select(index);
2289
				}
2290
			} else if (key.equals("status_whiteboard")) { //$NON-NLS-1$
2291
				whiteboardPattern.setText(value);
2292
			} else if (key.matches(REGEXP_CHART_EXPR)) {
2293
				Matcher mb = PATTERN_CHART_EXPR.matcher(key);
2294
				if (mb.find()) {
2295
					String g1 = mb.group(1);
2296
					String g2 = mb.group(2);
2297
					String g3 = mb.group(3);
2298
					String g4 = mb.group(4);
2299
					int chartNumber, row, column;
2300
					try {
2301
						chartNumber = Integer.parseInt(g2);
2302
						row = Integer.parseInt(g3);
2303
						column = Integer.parseInt(g4);
2304
					} catch (Exception E) {
2305
						chartNumber = -1;
2306
						row = -1;
2307
						column = -1;
2308
					}
2309
					for (int i = charts.size(); i <= chartNumber; i++) {
2310
						charts.add(new Chart());
2311
						adjustChart = true;
2312
					}
2313
					for (int i = charts.get(chartNumber).getRowSize(); i <= row; i++) {
2314
						charts.get(chartNumber).addExpression(i, 0);
2315
						adjustChart = true;
2316
					}
2317
					for (int i = charts.get(chartNumber).getColumnSize(row); i <= column; i++) {
2318
						charts.get(chartNumber).addExpression(row, i);
2319
						adjustChart = true;
2320
					}
2321
					ChartExpression ex = charts.get(chartNumber).getChartExpression(row, column);
2322
					if ("field".equals(g1)) { //$NON-NLS-1$
2323
						int index1 = 0;
2324
						for (String item : chartFieldValues) {
2325
							if (item.compareTo(value) == 0) {
2326
								break;
2327
							}
2328
							index1++;
2329
						}
2330
						if (index1 < chartFieldValues.length) {
2331
							ex.setFieldName(index1);
2332
						}
2333
					} else if ("type".equals(g1)) { //$NON-NLS-1$
2334
						int index1 = 0;
2335
						for (String item : chartOperationValues) {
2336
							if (item.compareTo(value) == 0) {
2337
								break;
2338
							}
2339
							index1++;
2340
						}
2341
						if (index1 < chartOperationValues.length) {
2342
							ex.setOperation(index1);
2343
						}
2344
					} else if ("value".equals(g1)) { //$NON-NLS-1$
2345
						ex.setValue(value);
2346
					}
2347
2348
				}
2349
			} else if (key.matches(REGEXP_CHART_NEGATE)) {
2350
				Matcher mb = PATTERN_CHART_NEGATE.matcher(key);
2351
				if (mb.find()) {
2352
					String g2 = mb.group(2);
2353
					int index;
2354
					try {
2355
						index = Integer.parseInt(g2);
2356
					} catch (Exception E) {
2357
						index = -1;
2358
					}
2359
					Chart ch = charts.get(index);
2360
					ch.setNegate("1".equals(value)); //$NON-NLS-1$
2361
				}
1829
			}
2362
			}
1830
		}
2363
		}
2364
		if (adjustChart) {
2365
			recreateChartControls();
2366
		}
1831
	}
2367
	}
1832
2368
1833
	private String[] nonNullArray(IDialogSettings settings, String id) {
2369
	private String[] nonNullArray(IDialogSettings settings, String id) {
Lines 2159-2162 Link Here
2159
		return currentSize.x < newSize.x || currentSize.y != newSize.y;
2695
		return currentSize.x < newSize.x || currentSize.y != newSize.y;
2160
	}
2696
	}
2161
2697
2698
	private void createChartGroup(final Composite parent) {
2699
		GridLayout layout;
2700
		GridData gd;
2701
2702
		chartGroup = new Group(parent, SWT.NONE);
2703
		layout = new GridLayout(1, false);
2704
		chartGroup.setLayout(layout);
2705
		gd = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1);
2706
//FB		chartGroup.setBackground(new Color(parent.getDisplay(), 0, 0, 255));
2707
		chartGroup.setLayoutData(gd);
2708
2709
		createNewChartControls(chartGroup, 0);
2710
2711
		parent.layout(true);
2712
		parent.redraw();
2713
	}
2714
2715
	private void createChartControls(final Composite chartGroup, final int chartNumber, final int row, final int column) {
2716
		final Combo comboField = new Combo(chartGroup, SWT.SINGLE | SWT.BORDER);
2717
		comboField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
2718
		comboField.addModifyListener(new ModifyListenerImplementation());
2719
		comboField.setItems(chartFieldText);
2720
		comboField.setText(chartFieldText[0]);
2721
		comboField.addSelectionListener(new SelectionAdapter() {
2722
			@Override
2723
			public void widgetSelected(SelectionEvent e) {
2724
				ChartExpression chartExpression = charts.get(chartNumber).getChartExpression(row, column);
2725
				chartExpression.setFieldName(comboField.getSelectionIndex());
2726
				chartGroup.getShell().layout(true);
2727
				chartGroup.getShell().redraw();
2728
			}
2729
		});
2730
2731
		final Combo comboOperation = new Combo(chartGroup, SWT.SINGLE | SWT.READ_ONLY | SWT.BORDER);
2732
		comboOperation.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
2733
		comboOperation.setItems(chartOperationText);
2734
		comboOperation.setText(chartOperationText[0]);
2735
		comboOperation.select(0);
2736
		comboOperation.addSelectionListener(new SelectionAdapter() {
2737
			@Override
2738
			public void widgetSelected(SelectionEvent e) {
2739
				ChartExpression chartExpression = charts.get(chartNumber).getChartExpression(row, column);
2740
				chartExpression.setOperation(comboOperation.getSelectionIndex());
2741
			}
2742
		});
2743
2744
		final Combo comboValue = new Combo(chartGroup, SWT.SINGLE | SWT.BORDER);
2745
		GridData g = new GridData(GridData.FILL, GridData.CENTER, true, false);
2746
		g.widthHint = 150;
2747
		comboValue.setLayoutData(g);
2748
		comboValue.addModifyListener(new ModifyListener() {
2749
2750
			public void modifyText(ModifyEvent e) {
2751
				ChartExpression chartExpression = charts.get(chartNumber).getChartExpression(row, column);
2752
				chartExpression.setValue(comboValue.getText());
2753
				if (isControlCreated()) {
2754
					setPageComplete(isPageComplete());
2755
				}
2756
			}
2757
		});
2758
2759
		Button orButton = new Button(chartGroup, SWT.PUSH);
2760
		orButton.setText(Messages.BugzillaSearchPage_OR_Button);
2761
		g = new GridData(SWT.LEFT, SWT.CENTER, false, false);
2762
		orButton.setLayoutData(g);
2763
		orButton.addSelectionListener(new SelectionAdapter() {
2764
			@Override
2765
			public void widgetSelected(SelectionEvent e) {
2766
				int y = charts.get(chartNumber).getColumnSize(row);
2767
				charts.get(chartNumber).addExpression(row, column + 1);
2768
				createChartControls(chartGroup, chartNumber, row, y);
2769
			}
2770
		});
2771
		if (column == 0) {
2772
			final Button andButton = new Button(chartGroup.getParent(), SWT.PUSH);
2773
			andButton.setText(Messages.BugzillaSearchPage_AND_Button);
2774
			g = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
2775
			andButton.setLayoutData(g);
2776
			final Button newButton = new Button(chartGroup.getParent(), SWT.PUSH);
2777
			newButton.setText(Messages.BugzillaSearchPage_New_Chart_Button);
2778
			g = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
2779
			newButton.setLayoutData(g);
2780
			final Button negateButton = new Button(chartGroup.getParent(), SWT.CHECK);
2781
			negateButton.setText(Messages.BugzillaSearchPage_Negate_Button);
2782
			negateButtons.add(negateButton);
2783
			g = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
2784
			negateButton.setLayoutData(g);
2785
			negateButton.addSelectionListener(new SelectionAdapter() {
2786
				@Override
2787
				public void widgetSelected(SelectionEvent e) {
2788
					Chart chart = charts.get(chartNumber);
2789
					chart.setNegate(negateButton.getSelection());
2790
				}
2791
			});
2792
			newButton.addSelectionListener(new SelectionAdapter() {
2793
				@Override
2794
				public void widgetSelected(SelectionEvent e) {
2795
					newButton.setVisible(false);
2796
					newButton.dispose();
2797
					createNewChartControls(chartGroup.getParent().getParent(), chartNumber + 1);
2798
				}
2799
			});
2800
			andButton.addSelectionListener(new SelectionAdapter() {
2801
				@Override
2802
				public void widgetSelected(SelectionEvent e) {
2803
					if (!andButton.isDisposed()) {
2804
						andButton.setVisible(false);
2805
						andButton.dispose();
2806
					}
2807
					if (!newButton.isDisposed()) {
2808
						newButton.setVisible(false);
2809
						newButton.dispose();
2810
					}
2811
					if (!negateButton.isDisposed()) {
2812
						negateButton.setVisible(false);
2813
						negateButton.dispose();
2814
					}
2815
2816
					Label lable = new Label(chartGroup.getParent(), SWT.NONE);
2817
					lable.setText(Messages.BugzillaSearchPage_AND_Button);
2818
					GridData g = new GridData(SWT.LEFT, SWT.CENTER, false, false, 4, 1);
2819
					lable.setLayoutData(g);
2820
2821
					Group chartGroup1 = new Group(chartGroup.getParent(), SWT.NONE);
2822
					GridLayout layout = new GridLayout(4, false);
2823
					chartGroup1.setLayout(layout);
2824
					chartGroup1.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
2825
					GridData gd = new GridData(SWT.LEFT, SWT.CENTER, true, true, 3, 1);
2826
					chartGroup1.setLayoutData(gd);
2827
2828
					charts.get(chartNumber).addExpression(row + 1, 0);
2829
					createChartControls(chartGroup1, chartNumber, row + 1, 0);
2830
				}
2831
			});
2832
		}
2833
		ChartControls chartControl = new ChartControls(comboField, comboOperation, comboValue);
2834
		int chart1 = chartControls.size();
2835
		if (chart1 < chartNumber + 1) {
2836
			chartControls.add(new ArrayList<ArrayList<ChartControls>>());
2837
		}
2838
		int chart2 = chartControls.get(chartNumber).size();
2839
		if (chart2 < row + 1) {
2840
			chartControls.get(chartNumber).add(new ArrayList<BugzillaSearchPage.ChartControls>());
2841
		}
2842
		chartControls.get(chartNumber).get(row).add(chartControl);
2843
		refreshChartControls();
2844
	}
2845
2846
	private void createNewChartControls(final Composite chartGroup, final int chartNumber) {
2847
		final Group chartGroup0 = new Group(chartGroup, SWT.NONE);
2848
		if (chartNumber > 0) {
2849
			chartGroup0.setText(Messages.BugzillaSearchPage_OR_Label);
2850
		}
2851
		GridLayout layout = new GridLayout(3, false);
2852
		chartGroup0.setLayout(layout);
2853
		GridData gd = new GridData(SWT.FILL, SWT.CENTER, true, true, 3, 1);
2854
//FB		chartGroup0.setBackground(new Color(chartGroup.getDisplay(), 255, 0, 0));
2855
		chartGroup0.setLayoutData(gd);
2856
2857
		Group chartGroup1 = new Group(chartGroup0, SWT.NONE);
2858
		layout = new GridLayout(4, false);
2859
		chartGroup1.setLayout(layout);
2860
		gd = new GridData(SWT.FILL, SWT.CENTER, true, true, 3, 1);
2861
//FB		chartGroup1.setBackground(new Color(chartGroup.getDisplay(), 0, 255, 0));
2862
		chartGroup1.setLayoutData(gd);
2863
2864
		charts.add(new Chart());
2865
		createChartControls(chartGroup1, chartNumber, 0, 0);
2866
	}
2867
2868
	private void refreshChartControls() {
2869
		int chartNumMax = chartControls.size();
2870
		for (int chartNum = 0; chartNum < chartNumMax; chartNum++) {
2871
			int chartRowMax = chartControls.get(chartNum).size();
2872
			for (int chartRow = 0; chartRow < chartRowMax; chartRow++) {
2873
				int chartColumnMax = chartControls.get(chartNum).get(chartRow).size();
2874
				for (int chartColumn = 0; chartColumn < chartColumnMax; chartColumn++) {
2875
					ChartExpression expression = charts.get(chartNum).getChartExpression(chartRow, chartColumn);
2876
					ChartControls controls = chartControls.get(chartNum).get(chartRow).get(chartColumn);
2877
					controls.getField().setText(chartFieldText[expression.getFieldName()]);
2878
					controls.getOperation().setText(chartOperationText[expression.getOperation()]);
2879
					controls.getValue().setText(expression.getValue());
2880
				}
2881
			}
2882
		}
2883
		int negButtonMax = negateButtons.size();
2884
		for (int chartNum = 0; chartNum < negButtonMax; chartNum++) {
2885
			Button b = negateButtons.get(chartNum);
2886
			Chart c = charts.get(chartNum);
2887
			b.setSelection(c.isNegate());
2888
		}
2889
		chartGroup.layout(true);
2890
	}
2891
2892
	private void recreateChartControls() {
2893
		GridLayout layout;
2894
		GridData gd;
2895
		Composite parent = chartGroup.getParent();
2896
		chartGroup.setVisible(false);
2897
		chartGroup.dispose();
2898
		chartControls.clear();
2899
		negateButtons.clear();
2900
//		chartGroup = new Group(parent, SWT.NONE);
2901
		chartGroup = new Composite(parent, SWT.NONE);
2902
		layout = new GridLayout(1, false);
2903
		chartGroup.setLayout(layout);
2904
		gd = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1);
2905
//FB		chartGroup.setBackground(new Color(parent.getDisplay(), 0, 0, 255));
2906
		chartGroup.setLayoutData(gd);
2907
		chartExpandComposite.setClient(chartGroup);
2908
2909
		int chartNumMax = charts.size();
2910
		for (int chartNumber = 0; chartNumber < chartNumMax; chartNumber++) {
2911
			final int chartNum = chartNumber;
2912
//			final Group chartGroup0 = new Group(chartGroup, SWT.NONE);
2913
			final Composite chartGroup0 = new Composite(chartGroup, SWT.NONE);
2914
			if (chartNum > 0) {
2915
//				chartGroup0.setText(Messages.BugzillaSearchPage_OR_Label);
2916
				new Label(chartGroup0, SWT.NONE).setText(Messages.BugzillaSearchPage_OR_Label);
2917
			}
2918
			layout = new GridLayout(3, false);
2919
			chartGroup0.setLayout(layout);
2920
			gd = new GridData(SWT.FILL, SWT.CENTER, true, true, 3, 1);
2921
			//FB		chartGroup0.setBackground(new Color(chartGroup.getDisplay(), 255, 0, 0));
2922
			chartGroup0.setLayoutData(gd);
2923
2924
			final int chartRowMax = charts.get(chartNum).getRowSize();
2925
			for (int chartRowNumber = 0; chartRowNumber < chartRowMax; chartRowNumber++) {
2926
				final int chartRow = chartRowNumber;
2927
				int chartColumnMax = charts.get(chartNum).getColumnSize(chartRow);
2928
				final Group chartGroup1 = new Group(chartGroup0, SWT.NONE);
2929
				layout = new GridLayout(4, false);
2930
				chartGroup1.setLayout(layout);
2931
				gd = new GridData(SWT.FILL, SWT.CENTER, true, true, 3, 1);
2932
				//FB		chartGroup1.setBackground(new Color(chartGroup.getDisplay(), 0, 255, 0));
2933
				chartGroup1.setLayoutData(gd);
2934
				for (int chartColumnNumber = 0; chartColumnNumber < chartColumnMax; chartColumnNumber++) {
2935
					final int chartColumn = chartColumnNumber;
2936
					final Combo comboField = new Combo(chartGroup1, SWT.SINGLE | SWT.BORDER);
2937
					comboField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
2938
					comboField.addModifyListener(new ModifyListenerImplementation());
2939
					comboField.setItems(chartFieldText);
2940
					comboField.setText(chartFieldText[0]);
2941
					comboField.addSelectionListener(new SelectionAdapter() {
2942
						@Override
2943
						public void widgetSelected(SelectionEvent e) {
2944
							ChartExpression chartExpression = charts.get(chartNum).getChartExpression(chartRow,
2945
									chartColumn);
2946
							chartExpression.setFieldName(comboField.getSelectionIndex());
2947
							chartGroup.getShell().layout(true);
2948
							chartGroup.getShell().redraw();
2949
						}
2950
					});
2951
2952
					final Combo comboOperation = new Combo(chartGroup1, SWT.SINGLE | SWT.READ_ONLY | SWT.BORDER);
2953
					comboOperation.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
2954
					comboOperation.setItems(chartOperationText);
2955
					comboOperation.setText(chartOperationText[0]);
2956
					comboOperation.select(0);
2957
					comboOperation.addSelectionListener(new SelectionAdapter() {
2958
						@Override
2959
						public void widgetSelected(SelectionEvent e) {
2960
							ChartExpression chartExpression = charts.get(chartNum).getChartExpression(chartRow,
2961
									chartColumn);
2962
							chartExpression.setOperation(comboOperation.getSelectionIndex());
2963
						}
2964
					});
2965
2966
					final Combo comboValue = new Combo(chartGroup1, SWT.SINGLE | SWT.BORDER);
2967
					gd = new GridData(GridData.FILL, GridData.CENTER, true, false);
2968
					gd.widthHint = 150;
2969
					comboValue.setLayoutData(gd);
2970
					comboValue.addModifyListener(new ModifyListener() {
2971
2972
						public void modifyText(ModifyEvent e) {
2973
							ChartExpression chartExpression = charts.get(chartNum).getChartExpression(chartRow,
2974
									chartColumn);
2975
							chartExpression.setValue(comboValue.getText());
2976
							if (isControlCreated()) {
2977
								setPageComplete(isPageComplete());
2978
							}
2979
						}
2980
					});
2981
2982
					Button orButton = new Button(chartGroup1, SWT.PUSH);
2983
					orButton.setText(Messages.BugzillaSearchPage_OR_Button);
2984
					gd = new GridData(SWT.LEFT, SWT.CENTER, false, false);
2985
					orButton.setLayoutData(gd);
2986
					orButton.addSelectionListener(new SelectionAdapter() {
2987
						@Override
2988
						public void widgetSelected(SelectionEvent e) {
2989
							int y = charts.get(chartNum).getColumnSize(chartRow);
2990
							charts.get(chartNum).addExpression(chartRow, chartColumn + 1);
2991
							createChartControls(chartGroup1, chartNum, chartRow, y);
2992
						}
2993
					});
2994
					ChartControls chartControl = new ChartControls(comboField, comboOperation, comboValue);
2995
					int chart1 = chartControls.size();
2996
					if (chart1 < chartNum + 1) {
2997
						chartControls.add(new ArrayList<ArrayList<ChartControls>>());
2998
					}
2999
					int chart2 = chartControls.get(chartNum).size();
3000
					if (chart2 < chartRow + 1) {
3001
						chartControls.get(chartNum).add(new ArrayList<BugzillaSearchPage.ChartControls>());
3002
					}
3003
					chartControls.get(chartNum).get(chartRow).add(chartControl);
3004
				}
3005
				if (chartRowNumber < chartRowMax - 1) {
3006
					Label lable = new Label(chartGroup0, SWT.NONE);
3007
					lable.setText(Messages.BugzillaSearchPage_AND_Button);
3008
					GridData g = new GridData(SWT.LEFT, SWT.CENTER, false, false, 4, 1);
3009
					lable.setLayoutData(g);
3010
				}
3011
			}
3012
			final Button andButton = new Button(chartGroup0, SWT.PUSH);
3013
			andButton.setText(Messages.BugzillaSearchPage_AND_Button);
3014
			gd = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
3015
			andButton.setLayoutData(gd);
3016
			final Button newButton = new Button(chartGroup0, SWT.PUSH);
3017
			newButton.setText(Messages.BugzillaSearchPage_New_Chart_Button);
3018
			gd = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
3019
			newButton.setLayoutData(gd);
3020
			final Button negateButton = new Button(chartGroup0, SWT.CHECK);
3021
			negateButton.setText(Messages.BugzillaSearchPage_Negate_Button);
3022
			negateButtons.add(negateButton);
3023
			gd = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
3024
			negateButton.setLayoutData(gd);
3025
3026
			negateButton.addSelectionListener(new SelectionAdapter() {
3027
				@Override
3028
				public void widgetSelected(SelectionEvent e) {
3029
					Chart chart = charts.get(chartNum);
3030
					chart.setNegate(negateButton.getSelection());
3031
				}
3032
			});
3033
			newButton.addSelectionListener(new SelectionAdapter() {
3034
				@Override
3035
				public void widgetSelected(SelectionEvent e) {
3036
					newButton.setVisible(false);
3037
					newButton.dispose();
3038
					createNewChartControls(chartGroup0.getParent(), chartNum + 1);
3039
				}
3040
			});
3041
			andButton.addSelectionListener(new SelectionAdapter() {
3042
				@Override
3043
				public void widgetSelected(SelectionEvent e) {
3044
					if (!andButton.isDisposed()) {
3045
						andButton.setVisible(false);
3046
						andButton.dispose();
3047
					}
3048
					if (!newButton.isDisposed()) {
3049
						newButton.setVisible(false);
3050
						newButton.dispose();
3051
					}
3052
					if (!negateButton.isDisposed()) {
3053
						negateButton.setVisible(false);
3054
						negateButton.dispose();
3055
					}
3056
3057
					Label lable = new Label(chartGroup0, SWT.NONE);
3058
					lable.setText(Messages.BugzillaSearchPage_AND_Button);
3059
					GridData g = new GridData(SWT.LEFT, SWT.CENTER, false, false, 4, 1);
3060
					lable.setLayoutData(g);
3061
3062
					Group chartGroup1 = new Group(chartGroup0, SWT.NONE);
3063
					GridLayout layout = new GridLayout(4, false);
3064
					chartGroup1.setLayout(layout);
3065
					chartGroup1.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
3066
					GridData gd = new GridData(SWT.FILL, SWT.CENTER, true, true, 3, 1);
3067
					chartGroup1.setLayoutData(gd);
3068
3069
					charts.get(chartNum).addExpression(chartRowMax, 0);
3070
					createChartControls(chartGroup1, chartNum, chartRowMax, 0);
3071
				}
3072
			});
3073
3074
		}
3075
		parent.layout(true);
3076
		parent.redraw();
3077
		refreshChartControls();
3078
	}
3079
2162
}
3080
}
(-)src/org/eclipse/mylyn/internal/bugzilla/ui/search/Messages.java (+166 lines)
Lines 27-32 Link Here
27
27
28
	public static String BugzillaSearchPage_all;
28
	public static String BugzillaSearchPage_all;
29
29
30
	public static String BugzillaSearchPage_AND_Button;
31
30
	public static String BugzillaSearchPage_any;
32
	public static String BugzillaSearchPage_any;
31
33
32
	public static String BugzillaSearchPage_Bugzilla_Query;
34
	public static String BugzillaSearchPage_Bugzilla_Query;
Lines 69-82 Link Here
69
71
70
	public static String BugzillaSearchPage_Milestone;
72
	public static String BugzillaSearchPage_Milestone;
71
73
74
	public static String BugzillaSearchPage_Negate_Button;
75
76
	public static String BugzillaSearchPage_New_Chart_Button;
77
72
	public static String BugzillaSearchPage_No_repository_available;
78
	public static String BugzillaSearchPage_No_repository_available;
73
79
74
	public static String BugzillaSearchPage_none;
80
	public static String BugzillaSearchPage_none;
75
81
82
	public static String BugzillaSearchPage_notregexp;
83
76
	public static String BugzillaSearchPage_Number_of_days_must_be_a_positive_integer;
84
	public static String BugzillaSearchPage_Number_of_days_must_be_a_positive_integer;
77
85
78
	public static String BugzillaSearchPage_Operating_System;
86
	public static String BugzillaSearchPage_Operating_System;
79
87
88
	public static String BugzillaSearchPage_Operation_changed_after;
89
90
	public static String BugzillaSearchPage_Operation_changed_before;
91
92
	public static String BugzillaSearchPage_Operation_changed_by;
93
94
	public static String BugzillaSearchPage_Operation_changed_from;
95
96
	public static String BugzillaSearchPage_Operation_changed_to;
97
98
	public static String BugzillaSearchPage_Operation_contains_all_of_the_strings;
99
100
	public static String BugzillaSearchPage_Operation_contains_all_of_the_words;
101
102
	public static String BugzillaSearchPage_Operation_contains_any_of_he_words;
103
104
	public static String BugzillaSearchPage_Operation_contains_any_of_the_strings;
105
106
	public static String BugzillaSearchPage_Operation_contains_none_of_the_strings;
107
108
	public static String BugzillaSearchPage_Operation_contains_none_of_the_words;
109
110
	public static String BugzillaSearchPage_Operation_contains_regexp;
111
112
	public static String BugzillaSearchPage_Operation_contains_the_string;
113
114
	public static String BugzillaSearchPage_Operation_contains_the_string_exact_case;
115
116
	public static String BugzillaSearchPage_Operation_does_not_contain_regexp;
117
118
	public static String BugzillaSearchPage_Operation_does_not_contain_the_string;
119
120
	public static String BugzillaSearchPage_Operation_is_equal_to;
121
122
	public static String BugzillaSearchPage_Operation_is_equal_to_any_of_the_strings;
123
124
	public static String BugzillaSearchPage_Operation_is_greater_than;
125
126
	public static String BugzillaSearchPage_Operation_is_less_than;
127
128
	public static String BugzillaSearchPage_Operation_is_not_equal_to;
129
130
	public static String BugzillaSearchPage_Operation_matches;
131
132
	public static String BugzillaSearchPage_Operation_Noop;
133
80
	public static String BugzillaSearchPage_OperationText_allwords;
134
	public static String BugzillaSearchPage_OperationText_allwords;
81
135
82
	public static String BugzillaSearchPage_OperationText_allwordssubstr;
136
	public static String BugzillaSearchPage_OperationText_allwordssubstr;
Lines 93-98 Link Here
93
147
94
	public static String BugzillaSearchPage_OperationText_substring;
148
	public static String BugzillaSearchPage_OperationText_substring;
95
149
150
	public static String BugzillaSearchPage_OR_Button;
151
152
	public static String BugzillaSearchPage_OR_Label;
153
96
	public static String BugzillaSearchPage_owner;
154
	public static String BugzillaSearchPage_owner;
97
155
98
	public static String BugzillaSearchPage_Product;
156
	public static String BugzillaSearchPage_Product;
Lines 103-108 Link Here
103
161
104
	public static String BugzillaSearchPage_Query_Title;
162
	public static String BugzillaSearchPage_Query_Title;
105
163
164
	public static String BugzillaSearchPage_regexp;
165
106
	public static String BugzillaSearchPage_reporter;
166
	public static String BugzillaSearchPage_reporter;
107
167
108
	public static String BugzillaSearchPage_Resolution;
168
	public static String BugzillaSearchPage_Resolution;
Lines 115-120 Link Here
115
175
116
	public static String BugzillaSearchPage_Status;
176
	public static String BugzillaSearchPage_Status;
117
177
178
	public static String BugzillaSearchPage_substring;
179
118
	public static String BugzillaSearchPage_Summary;
180
	public static String BugzillaSearchPage_Summary;
119
181
120
	public static String BugzillaSearchPage_Update_Attributes_from_Repository;
182
	public static String BugzillaSearchPage_Update_Attributes_from_Repository;
Lines 125-130 Link Here
125
187
126
	public static String BugzillaSearchPage_ClearFields;
188
	public static String BugzillaSearchPage_ClearFields;
127
189
190
	public static String BugzillaSearchPage_Field_0;
191
192
	public static String BugzillaSearchPage_Field_Alias;
193
194
	public static String BugzillaSearchPage_Field_AssignedTo;
195
196
	public static String BugzillaSearchPage_Field_Attachment_creator;
197
198
	public static String BugzillaSearchPage_Field_Attachment_data;
199
200
	public static String BugzillaSearchPage_Field_Attachment_description;
201
202
	public static String BugzillaSearchPage_Field_Attachment_filename;
203
204
	public static String BugzillaSearchPage_Field_Attachment_is_a_URL;
205
206
	public static String BugzillaSearchPage_Field_Attachment_is_obsolete;
207
208
	public static String BugzillaSearchPage_Field_Attachment_is_patch;
209
210
	public static String BugzillaSearchPage_Field_Attachment_is_private;
211
212
	public static String BugzillaSearchPage_Field_Attachment_mime_type;
213
214
	public static String BugzillaSearchPage_Field_Blocks;
215
216
	public static String BugzillaSearchPage_Field_Bug;
217
218
	public static String BugzillaSearchPage_Field_CC;
219
220
	public static String BugzillaSearchPage_Field_CC_Accessible;
221
222
	public static String BugzillaSearchPage_Field_Classification;
223
224
	public static String BugzillaSearchPage_Field_Comment;
225
226
	public static String BugzillaSearchPage_Field_Comment_is_private;
227
228
	public static String BugzillaSearchPage_Field_Commenter;
229
230
	public static String BugzillaSearchPage_Field_Component;
231
232
	public static String BugzillaSearchPage_Field_Content;
233
234
	public static String BugzillaSearchPage_Field_Creation_date;
235
236
	public static String BugzillaSearchPage_Field_Days_since_bug_changed;
237
238
	public static String BugzillaSearchPage_Field_Depends_on;
239
240
	public static String BugzillaSearchPage_Field_drop_down_custom_field;
241
242
	public static String BugzillaSearchPage_Field_Ever_Confirmed;
243
244
	public static String BugzillaSearchPage_Field_Flag;
245
246
	public static String BugzillaSearchPage_Field_Flag_Requestee;
247
248
	public static String BugzillaSearchPage_Field_Flag_Setter;
249
250
	public static String BugzillaSearchPage_Field_free_text_custom_field;
251
252
	public static String BugzillaSearchPage_Field_Group;
253
254
	public static String BugzillaSearchPage_Field_Keywords;
255
256
	public static String BugzillaSearchPage_Field_Last_changed_date;
257
258
	public static String BugzillaSearchPage_Field_Noop;
259
260
	public static String BugzillaSearchPage_Field_OS_Version;
261
262
	public static String BugzillaSearchPage_Field_Platform;
263
264
	public static String BugzillaSearchPage_Field_Priority;
265
266
	public static String BugzillaSearchPage_Field_Product;
267
268
	public static String BugzillaSearchPage_Field_QAContact;
269
270
	public static String BugzillaSearchPage_Field_ReportedBy;
271
272
	public static String BugzillaSearchPage_Field_Reporter_Accessible;
273
274
	public static String BugzillaSearchPage_Field_Resolution;
275
276
	public static String BugzillaSearchPage_Field_Severity;
277
278
	public static String BugzillaSearchPage_Field_Status;
279
280
	public static String BugzillaSearchPage_Field_Status_Whiteboard;
281
282
	public static String BugzillaSearchPage_Field_Summary;
283
284
	public static String BugzillaSearchPage_Field_Target_Milestone;
285
286
	public static String BugzillaSearchPage_Field_Time_Since_Assignee_Touched;
287
288
	public static String BugzillaSearchPage_Field_URL;
289
290
	public static String BugzillaSearchPage_Field_Version;
291
292
	public static String BugzillaSearchPage_Field_Votes;
293
128
	public static String BugzillaSearchPage_More_Options;
294
	public static String BugzillaSearchPage_More_Options;
129
295
130
	public static String BugzillaSearchPage_Whiteboard;
296
	public static String BugzillaSearchPage_Whiteboard;
(-)src/org/eclipse/mylyn/internal/bugzilla/ui/search/messages.properties (+83 lines)
Lines 9-14 Link Here
9
#      Tasktop Technologies - initial API and implementation
9
#      Tasktop Technologies - initial API and implementation
10
###############################################################################
10
###############################################################################
11
BugzillaSearchPage_all=all
11
BugzillaSearchPage_all=all
12
BugzillaSearchPage_AND_Button=AND
12
BugzillaSearchPage_any=any
13
BugzillaSearchPage_any=any
13
BugzillaSearchPage_Bugzilla_Query=Bugzilla Query
14
BugzillaSearchPage_Bugzilla_Query=Bugzilla Query
14
BugzillaSearchPage_cc=CC
15
BugzillaSearchPage_cc=CC
Lines 30-39 Link Here
30
BugzillaSearchPage_Hardware=Hard&ware:
31
BugzillaSearchPage_Hardware=Hard&ware:
31
BugzillaSearchPage_Keywords=&Keywords:
32
BugzillaSearchPage_Keywords=&Keywords:
32
BugzillaSearchPage_Milestone=&Milestone:
33
BugzillaSearchPage_Milestone=&Milestone:
34
BugzillaSearchPage_Negate_Button=negate
35
BugzillaSearchPage_New_Chart_Button=New chart
33
BugzillaSearchPage_No_repository_available=No repository available, please add one using the Task Repositories view.
36
BugzillaSearchPage_No_repository_available=No repository available, please add one using the Task Repositories view.
34
BugzillaSearchPage_none=none
37
BugzillaSearchPage_none=none
38
BugzillaSearchPage_notregexp=notregexp
35
BugzillaSearchPage_Number_of_days_must_be_a_positive_integer=Number of days must be a positive integer. {0} is invalid.
39
BugzillaSearchPage_Number_of_days_must_be_a_positive_integer=Number of days must be a positive integer. {0} is invalid.
36
BugzillaSearchPage_Operating_System=&Operating System:
40
BugzillaSearchPage_Operating_System=&Operating System:
41
BugzillaSearchPage_Operation_changed_after=changed after
42
BugzillaSearchPage_Operation_changed_before=changed before
43
BugzillaSearchPage_Operation_changed_by=changed by
44
BugzillaSearchPage_Operation_changed_from=changed from
45
BugzillaSearchPage_Operation_changed_to=changed to
46
BugzillaSearchPage_Operation_contains_all_of_the_strings=contains all of the strings
47
BugzillaSearchPage_Operation_contains_all_of_the_words=contains all of the words
48
BugzillaSearchPage_Operation_contains_any_of_he_words=contains any of the words
49
BugzillaSearchPage_Operation_contains_any_of_the_strings=contains any of the strings
50
BugzillaSearchPage_Operation_contains_none_of_the_strings=contains none of the strings
51
BugzillaSearchPage_Operation_contains_none_of_the_words=contains none of the words
52
BugzillaSearchPage_Operation_contains_regexp=contains regexp
53
BugzillaSearchPage_Operation_contains_the_string=contains the string
54
BugzillaSearchPage_Operation_contains_the_string_exact_case=contains the string (exact case)
55
BugzillaSearchPage_Operation_does_not_contain_regexp=does not contain regexp
56
BugzillaSearchPage_Operation_does_not_contain_the_string=does not contain the string
57
BugzillaSearchPage_Operation_is_equal_to=is equal to
58
BugzillaSearchPage_Operation_is_equal_to_any_of_the_strings=is equal to any of the strings
59
BugzillaSearchPage_Operation_is_greater_than=is greater than
60
BugzillaSearchPage_Operation_is_less_than=is less than
61
BugzillaSearchPage_Operation_is_not_equal_to=is not equal to
62
BugzillaSearchPage_Operation_matches=matches
63
BugzillaSearchPage_Operation_Noop=---
37
BugzillaSearchPage_OperationText_allwords=contains all of the words
64
BugzillaSearchPage_OperationText_allwords=contains all of the words
38
BugzillaSearchPage_OperationText_allwordssubstr=contains all of the strings
65
BugzillaSearchPage_OperationText_allwordssubstr=contains all of the strings
39
BugzillaSearchPage_OperationText_anywords=contains any of the words
66
BugzillaSearchPage_OperationText_anywords=contains any of the words
Lines 42-62 Link Here
42
BugzillaSearchPage_OperationText_notregexp=does not match regular expression
69
BugzillaSearchPage_OperationText_notregexp=does not match regular expression
43
BugzillaSearchPage_OperationText_regexp=matches regular expression
70
BugzillaSearchPage_OperationText_regexp=matches regular expression
44
BugzillaSearchPage_OperationText_substring=contains the string
71
BugzillaSearchPage_OperationText_substring=contains the string
72
BugzillaSearchPage_OR_Button=OR
73
BugzillaSearchPage_OR_Label=--OR--
45
BugzillaSearchPage_owner=Owner
74
BugzillaSearchPage_owner=Owner
46
BugzillaSearchPage_Product=&Product:
75
BugzillaSearchPage_Product=&Product:
47
BugzillaSearchPage_PROORITY=Priori&ty:
76
BugzillaSearchPage_PROORITY=Priori&ty:
48
BugzillaSearchPage_qacontact=QA Contact
77
BugzillaSearchPage_qacontact=QA Contact
49
BugzillaSearchPage_Query_Title=&Query Title:
78
BugzillaSearchPage_Query_Title=&Query Title:
79
BugzillaSearchPage_regexp=regexp
50
BugzillaSearchPage_reporter=Reporter
80
BugzillaSearchPage_reporter=Reporter
51
BugzillaSearchPage_Resolution=&Resolution:
81
BugzillaSearchPage_Resolution=&Resolution:
52
BugzillaSearchPage_Select_=Select...
82
BugzillaSearchPage_Select_=Select...
53
BugzillaSearchPage_Select_the_Bugzilla_query_parameters=Select the Bugzilla query parameters.  Use the Update Attributes button to retrieve updated values from the repository.
83
BugzillaSearchPage_Select_the_Bugzilla_query_parameters=Select the Bugzilla query parameters.  Use the Update Attributes button to retrieve updated values from the repository.
54
BugzillaSearchPage_Severity=Se&verity:
84
BugzillaSearchPage_Severity=Se&verity:
55
BugzillaSearchPage_Status=Stat&us:
85
BugzillaSearchPage_Status=Stat&us:
86
BugzillaSearchPage_substring=contains
56
BugzillaSearchPage_Summary=Summar&y:
87
BugzillaSearchPage_Summary=Summar&y:
57
BugzillaSearchPage_Update_Attributes_from_Repository=Up&date Attributes from Repository
88
BugzillaSearchPage_Update_Attributes_from_Repository=Up&date Attributes from Repository
58
BugzillaSearchPage_Updating_search_options_=Updating search options...
89
BugzillaSearchPage_Updating_search_options_=Updating search options...
59
BugzillaSearchPage_Version=Vers&ion:
90
BugzillaSearchPage_Version=Vers&ion:
60
BugzillaSearchPage_ClearFields=Clear Fields
91
BugzillaSearchPage_ClearFields=Clear Fields
92
BugzillaSearchPage_Field_0=Boolean Charts
93
BugzillaSearchPage_Field_Alias=Alias
94
BugzillaSearchPage_Field_AssignedTo=AssignedTo
95
BugzillaSearchPage_Field_Attachment_creator=Attachment creator
96
BugzillaSearchPage_Field_Attachment_data=Attachment data
97
BugzillaSearchPage_Field_Attachment_description=Attachment description
98
BugzillaSearchPage_Field_Attachment_filename=Attachment filename
99
BugzillaSearchPage_Field_Attachment_is_a_URL=Attachment is a URL
100
BugzillaSearchPage_Field_Attachment_is_obsolete=Attachment is obsolete
101
BugzillaSearchPage_Field_Attachment_is_patch=Attachment is patch
102
BugzillaSearchPage_Field_Attachment_is_private=Attachment is private
103
BugzillaSearchPage_Field_Attachment_mime_type=Attachment mime type
104
BugzillaSearchPage_Field_Blocks=Blocks
105
BugzillaSearchPage_Field_Bug=Bug \#
106
BugzillaSearchPage_Field_CC=CC
107
BugzillaSearchPage_Field_CC_Accessible=CC Accessible
108
BugzillaSearchPage_Field_Classification=Classification
109
BugzillaSearchPage_Field_Comment=Comment
110
BugzillaSearchPage_Field_Comment_is_private=Comment is private
111
BugzillaSearchPage_Field_Commenter=Commenter
112
BugzillaSearchPage_Field_Component=Component
113
BugzillaSearchPage_Field_Content=Content
114
BugzillaSearchPage_Field_Creation_date=Creation date
115
BugzillaSearchPage_Field_Days_since_bug_changed=Days since bug changed
116
BugzillaSearchPage_Field_Depends_on=Depends on
117
BugzillaSearchPage_Field_drop_down_custom_field=drop down custom field
118
BugzillaSearchPage_Field_Ever_Confirmed=Ever Confirmed
119
BugzillaSearchPage_Field_Flag=Flag
120
BugzillaSearchPage_Field_Flag_Requestee=Flag Requestee
121
BugzillaSearchPage_Field_Flag_Setter=Flag Setter
122
BugzillaSearchPage_Field_free_text_custom_field=free text custom field
123
BugzillaSearchPage_Field_Group=Group
124
BugzillaSearchPage_Field_Keywords=Keywords
125
BugzillaSearchPage_Field_Last_changed_date=Last changed date
126
BugzillaSearchPage_Field_Noop=---
127
BugzillaSearchPage_Field_OS_Version=OS/Version
128
BugzillaSearchPage_Field_Platform=Platform
129
BugzillaSearchPage_Field_Priority=Priority
130
BugzillaSearchPage_Field_Product=Product
131
BugzillaSearchPage_Field_QAContact=QAContact
132
BugzillaSearchPage_Field_ReportedBy=ReportedBy
133
BugzillaSearchPage_Field_Reporter_Accessible=Reporter Accessible
134
BugzillaSearchPage_Field_Resolution=Resolution
135
BugzillaSearchPage_Field_Severity=Severity
136
BugzillaSearchPage_Field_Status=Status
137
BugzillaSearchPage_Field_Status_Whiteboard=Status Whiteboard
138
BugzillaSearchPage_Field_Summary=Summary
139
BugzillaSearchPage_Field_Target_Milestone=Target Milestone
140
BugzillaSearchPage_Field_Time_Since_Assignee_Touched=Time Since Assignee Touched
141
BugzillaSearchPage_Field_URL=URL
142
BugzillaSearchPage_Field_Version=Version
143
BugzillaSearchPage_Field_Votes=Votes
61
BugzillaSearchPage_More_Options=More Options
144
BugzillaSearchPage_More_Options=More Options
62
BugzillaSearchPage_Whiteboard=Whiteboard:
145
BugzillaSearchPage_Whiteboard=Whiteboard:

Return to bug 283200