KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > ui > views > markers > internal > DialogProblemFilter


1 /*******************************************************************************
2  * Copyright (c) 2000, 2006 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  * IBM Corporation - initial API and implementation
10  *******************************************************************************/

11
12 package org.eclipse.ui.views.markers.internal;
13
14 import java.util.Iterator JavaDoc;
15 import java.util.List JavaDoc;
16
17 import org.eclipse.jface.dialogs.IDialogConstants;
18 import org.eclipse.jface.viewers.CheckboxTableViewer;
19 import org.eclipse.jface.viewers.ISelection;
20 import org.eclipse.jface.viewers.ISelectionChangedListener;
21 import org.eclipse.jface.viewers.IStructuredContentProvider;
22 import org.eclipse.jface.viewers.IStructuredSelection;
23 import org.eclipse.jface.viewers.LabelProvider;
24 import org.eclipse.jface.viewers.SelectionChangedEvent;
25 import org.eclipse.jface.viewers.Viewer;
26 import org.eclipse.osgi.util.NLS;
27 import org.eclipse.swt.SWT;
28 import org.eclipse.swt.events.ModifyEvent;
29 import org.eclipse.swt.events.ModifyListener;
30 import org.eclipse.swt.events.SelectionAdapter;
31 import org.eclipse.swt.events.SelectionEvent;
32 import org.eclipse.swt.events.SelectionListener;
33 import org.eclipse.swt.events.TraverseEvent;
34 import org.eclipse.swt.events.TraverseListener;
35 import org.eclipse.swt.layout.FormAttachment;
36 import org.eclipse.swt.layout.FormData;
37 import org.eclipse.swt.layout.FormLayout;
38 import org.eclipse.swt.layout.GridData;
39 import org.eclipse.swt.layout.GridLayout;
40 import org.eclipse.swt.widgets.Button;
41 import org.eclipse.swt.widgets.Combo;
42 import org.eclipse.swt.widgets.Composite;
43 import org.eclipse.swt.widgets.Label;
44 import org.eclipse.swt.widgets.Shell;
45 import org.eclipse.swt.widgets.Text;
46
47 /**
48  * DialogProblemFilter is the dialog class for problem filters.
49  *
50  * @since 3.2
51  *
52  */

53 public class DialogProblemFilter extends DialogMarkerFilter {
54
55     private DescriptionGroup descriptionGroup;
56
57     private SeverityGroup severityGroup;
58
59     private Composite userFilterComposite;
60
61     private Label systemSettingsLabel;
62
63     private CheckboxTableViewer definedList;
64
65     private class DescriptionGroup {
66         private Label descriptionLabel;
67
68         private Combo combo;
69
70         private Text description;
71
72         private String JavaDoc contains = MarkerMessages.filtersDialog_contains;
73
74         private String JavaDoc doesNotContain = MarkerMessages.filtersDialog_doesNotContain;
75
76         /**
77          * Create a descriptor group.
78          *
79          * @param parent
80          */

81         public DescriptionGroup(Composite parent) {
82
83             Composite descriptionComposite = new Composite(parent, SWT.NONE);
84             descriptionComposite.setLayout(new GridLayout(2, false));
85             descriptionComposite.setLayoutData(new GridData(
86                     GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL));
87
88             descriptionLabel = new Label(descriptionComposite, SWT.NONE);
89             descriptionLabel.setFont(parent.getFont());
90             descriptionLabel
91                     .setText(MarkerMessages.filtersDialog_descriptionLabel);
92
93             combo = new Combo(descriptionComposite, SWT.READ_ONLY);
94             combo.setFont(parent.getFont());
95             combo.add(contains);
96             combo.add(doesNotContain);
97             combo.addSelectionListener(new SelectionAdapter() {
98                 /*
99                  * (non-Javadoc)
100                  *
101                  * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
102                  */

103                 public void widgetSelected(SelectionEvent e) {
104                     updateForSelection();
105                 }
106             });
107             // Prevent Esc and Return from closing the dialog when the combo is
108
// active.
109
combo.addTraverseListener(new TraverseListener() {
110                 public void keyTraversed(TraverseEvent e) {
111                     if (e.detail == SWT.TRAVERSE_ESCAPE
112                             || e.detail == SWT.TRAVERSE_RETURN) {
113                         e.doit = false;
114                     }
115                 }
116             });
117
118             description = new Text(descriptionComposite, SWT.SINGLE
119                     | SWT.BORDER);
120             description.setFont(parent.getFont());
121             GridData data = new GridData(GridData.FILL_HORIZONTAL);
122             data.horizontalSpan = 2;
123
124             description.setLayoutData(data);
125             description.addModifyListener(new ModifyListener() {
126                 public void modifyText(ModifyEvent e) {
127                     DialogProblemFilter.this.markDirty();
128                 }
129             });
130         }
131
132         /**
133          * Get the contains value.
134          *
135          * @return boolean
136          */

137         public boolean getContains() {
138             return combo.getSelectionIndex() == combo.indexOf(contains);
139         }
140
141         /**
142          * Return whether or not the contains value is of use.
143          *
144          * @param value
145          */

146         public void setContains(boolean value) {
147             if (value) {
148                 combo.select(combo.indexOf(contains));
149             } else {
150                 combo.select(combo.indexOf(doesNotContain));
151             }
152         }
153
154         /**
155          * Set the description field.
156          *
157          * @param text
158          */

159         public void setDescription(String JavaDoc text) {
160             if (text == null) {
161                 description.setText(""); //$NON-NLS-1$
162
} else {
163                 description.setText(text);
164             }
165         }
166
167         /**
168          * Return the text for the description.
169          *
170          * @return String
171          */

172         public String JavaDoc getDescription() {
173             return description.getText();
174         }
175
176         /**
177          * Update the enablement state based on whether or not the receiver is
178          * enabled.
179          *
180          * @param enabled
181          */

182         public void updateEnablement(boolean enabled) {
183             descriptionLabel.setEnabled(enabled);
184             combo.setEnabled(enabled);
185             description.setEnabled(enabled);
186         }
187     }
188
189     private class SeverityGroup {
190         private Button enablementButton;
191
192         private Button errorButton;
193
194         private Button warningButton;
195
196         private Button infoButton;
197
198         /**
199          * Create a group for severity.
200          *
201          * @param parent
202          */

203         public SeverityGroup(Composite parent) {
204
205             Composite severityComposite = new Composite(parent, SWT.NONE);
206             severityComposite.setLayout(new GridLayout(4, false));
207             severityComposite.setLayoutData(new GridData(
208                     GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL));
209
210             SelectionListener listener = new SelectionAdapter() {
211                 /*
212                  * (non-Javadoc)
213                  *
214                  * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
215                  */

216                 public void widgetSelected(SelectionEvent e) {
217                     updateEnablement(true);
218                     DialogProblemFilter.this.markDirty();
219                 }
220             };
221
222             enablementButton = new Button(severityComposite, SWT.CHECK);
223             GridData data = new GridData(GridData.FILL_HORIZONTAL);
224             enablementButton.setLayoutData(data);
225             enablementButton.setFont(parent.getFont());
226             enablementButton
227                     .setText(MarkerMessages.filtersDialog_severityLabel);
228             enablementButton.addSelectionListener(listener);
229
230             errorButton = new Button(severityComposite, SWT.CHECK);
231             errorButton.setFont(parent.getFont());
232             errorButton.setText(MarkerMessages.filtersDialog_severityError);
233             errorButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
234             errorButton.addSelectionListener(new SelectionAdapter() {
235                 /*
236                  * (non-Javadoc)
237                  *
238                  * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
239                  */

240                 public void widgetSelected(SelectionEvent e) {
241                     updateForSelection();
242                 }
243             });
244
245             warningButton = new Button(severityComposite, SWT.CHECK);
246             warningButton.setFont(parent.getFont());
247             warningButton.setText(MarkerMessages.filtersDialog_severityWarning);
248             warningButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
249             warningButton.addSelectionListener(new SelectionAdapter() {
250                 /*
251                  * (non-Javadoc)
252                  *
253                  * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
254                  */

255                 public void widgetSelected(SelectionEvent e) {
256                     updateForSelection();
257                 }
258             });
259
260             infoButton = new Button(severityComposite, SWT.CHECK);
261             infoButton.setFont(parent.getFont());
262             infoButton.setText(MarkerMessages.filtersDialog_severityInfo);
263             infoButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
264             infoButton.addSelectionListener(new SelectionAdapter() {
265                 /*
266                  * (non-Javadoc)
267                  *
268                  * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
269                  */

270                 public void widgetSelected(SelectionEvent e) {
271                     updateForSelection();
272                 }
273             });
274         }
275
276         /**
277          * Return whether or not sort by severity is selected.
278          *
279          * @return boolean
280          */

281         public boolean isSeveritySelected() {
282             return enablementButton.getSelection();
283         }
284
285         /**
286          * Set whether or not the enabled button is selected.
287          *
288          * @param enabled
289          */

290         public void setEnabled(boolean enabled) {
291             enablementButton.setSelection(enabled);
292         }
293
294         /**
295          * Return whether or not the error button is selected.
296          *
297          * @return boolean
298          */

299         public boolean isErrorSelected() {
300             return errorButton.getSelection();
301         }
302
303         /**
304          * Set whether or not the error button is selected.
305          *
306          * @param selected
307          */

308         public void setErrorSelected(boolean selected) {
309             errorButton.setSelection(selected);
310         }
311
312         /**
313          * Return whether or not the warning button is selected.
314          *
315          * @return boolean
316          */

317         public boolean isWarningSelected() {
318             return warningButton.getSelection();
319         }
320
321         /**
322          * Set whether or not the warning button is selected.
323          *
324          * @param selected
325          */

326         public void setWarningSelected(boolean selected) {
327             warningButton.setSelection(selected);
328         }
329
330         /**
331          * Return whether or not the info button is selected.
332          *
333          * @return boolean
334          */

335         public boolean isInfoSelected() {
336             return infoButton.getSelection();
337         }
338
339         /**
340          * Set whether or not the erinforor button is selected.
341          *
342          * @param selected
343          */

344         public void setInfoSelected(boolean selected) {
345             infoButton.setSelection(selected);
346         }
347
348         /**
349          * Update enablement based on the enabled flag.
350          *
351          * @param enabled
352          */

353         public void updateEnablement(boolean enabled) {
354
355             boolean showingSeverity = isSeveritySelected();
356             enablementButton.setEnabled(enabled);
357             errorButton.setEnabled(showingSeverity && enabled);
358             warningButton.setEnabled(showingSeverity && enabled);
359             infoButton.setEnabled(showingSeverity && enabled);
360
361         }
362     }
363
364     /**
365      * Create a new instance of the receiver.
366      *
367      * @param parentShell
368      * @param filters
369      */

370     public DialogProblemFilter(Shell parentShell, ProblemFilter[] filters) {
371         super(parentShell, filters);
372     }
373
374     /*
375      * (non-Javadoc)
376      *
377      * @see org.eclipse.ui.views.markers.internal.DialogMarkerFilter#createAttributesArea(org.eclipse.swt.widgets.Composite)
378      */

379     protected void createAttributesArea(Composite parent) {
380         Composite composite = new Composite(parent, SWT.NONE);
381         composite.setFont(parent.getFont());
382         composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
383         GridLayout layout = new GridLayout();
384         composite.setLayout(layout);
385
386         descriptionGroup = new DescriptionGroup(composite);
387         severityGroup = new SeverityGroup(composite);
388     }
389
390     /*
391      * (non-Javadoc)
392      *
393      * @see org.eclipse.ui.views.markers.internal.DialogMarkerFilter#updateFilterFromUI(org.eclipse.ui.views.markers.internal.MarkerFilter)
394      */

395     protected void updateFilterFromUI(MarkerFilter filter) {
396         super.updateFilterFromUI(filter);
397
398         ProblemFilter problemFilter = (ProblemFilter) filter;
399         problemFilter.setContains(descriptionGroup.getContains());
400         problemFilter.setDescription(descriptionGroup.getDescription().trim());
401
402         problemFilter.setSelectBySeverity(severityGroup.isSeveritySelected());
403         int severity = 0;
404         if (severityGroup.isErrorSelected()) {
405             severity = severity | ProblemFilter.SEVERITY_ERROR;
406         }
407         if (severityGroup.isWarningSelected()) {
408             severity = severity | ProblemFilter.SEVERITY_WARNING;
409         }
410         if (severityGroup.isInfoSelected()) {
411             severity = severity | ProblemFilter.SEVERITY_INFO;
412         }
413         problemFilter.setSeverity(severity);
414
415     }
416
417     /*
418      * (non-Javadoc)
419      *
420      * @see org.eclipse.ui.views.markers.internal.DialogMarkerFilter#updateUIWithFilter(org.eclipse.ui.views.markers.internal.MarkerFilter)
421      */

422     protected void updateUIWithFilter(MarkerFilter filter) {
423
424         ProblemFilter problemFilter = (ProblemFilter) filter;
425         descriptionGroup.setContains(problemFilter.getContains());
426         descriptionGroup.setDescription(problemFilter.getDescription());
427
428         severityGroup.setEnabled(problemFilter.getSelectBySeverity());
429         int severity = problemFilter.getSeverity();
430
431         severityGroup
432                 .setErrorSelected((severity & ProblemFilter.SEVERITY_ERROR) > 0);
433         severityGroup
434                 .setWarningSelected((severity & ProblemFilter.SEVERITY_WARNING) > 0);
435         severityGroup
436                 .setInfoSelected((severity & ProblemFilter.SEVERITY_INFO) > 0);
437
438         super.updateUIWithFilter(filter);
439
440     }
441
442     /*
443      * (non-Javadoc)
444      *
445      * @see org.eclipse.ui.views.markers.internal.DialogMarkerFilter#updateEnabledState(boolean)
446      */

447     protected void updateEnabledState(boolean enabled) {
448         super.updateEnabledState(enabled);
449         descriptionGroup.updateEnablement(enabled);
450         severityGroup.updateEnablement(enabled);
451     }
452
453     /*
454      * (non-Javadoc)
455      *
456      * @see org.eclipse.ui.views.markerview.FiltersDialog#resetPressed()
457      */

458     protected void resetPressed() {
459         descriptionGroup.setContains(ProblemFilter.DEFAULT_CONTAINS);
460         descriptionGroup.setDescription(ProblemFilter.DEFAULT_DESCRIPTION);
461
462         severityGroup.setEnabled(ProblemFilter.DEFAULT_SELECT_BY_SEVERITY);
463         severityGroup
464                 .setErrorSelected((ProblemFilter.DEFAULT_SEVERITY & ProblemFilter.SEVERITY_ERROR) > 0);
465         severityGroup
466                 .setWarningSelected((ProblemFilter.DEFAULT_SEVERITY & ProblemFilter.SEVERITY_WARNING) > 0);
467         severityGroup
468                 .setInfoSelected((ProblemFilter.DEFAULT_SEVERITY & ProblemFilter.SEVERITY_INFO) > 0);
469
470         super.resetPressed();
471     }
472
473     protected MarkerFilter newFilter(String JavaDoc newName) {
474         return new ProblemFilter(newName);
475     }
476
477     /*
478      * (non-Javadoc)
479      *
480      * @see org.eclipse.ui.views.markers.internal.DialogMarkerFilter#createFiltersArea(org.eclipse.swt.widgets.Composite)
481      */

482     void createFiltersArea(Composite dialogArea) {
483
484         if (MarkerSupportRegistry.getInstance().getRegisteredFilters().size() == 0) {
485             super.createFiltersArea(dialogArea);
486             return;
487         }
488
489         Composite mainComposite = new Composite(dialogArea, SWT.NONE);
490         mainComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false,
491                 true));
492
493         mainComposite.setLayout(new FormLayout());
494
495         Composite topComposite = new Composite(mainComposite, SWT.NONE);
496         FormData topData = new FormData();
497         topData.top = new FormAttachment(0);
498         topData.left = new FormAttachment(0);
499         topData.right = new FormAttachment(100);
500         topData.bottom = new FormAttachment(50);
501
502         topComposite.setLayoutData(topData);
503         topComposite.setLayout(new GridLayout());
504
505         createUserFiltersArea(topComposite);
506
507         Composite bottomComposite = new Composite(mainComposite, SWT.NONE);
508         FormData bottomData = new FormData();
509         bottomData.top = new FormAttachment(50);
510         bottomData.left = new FormAttachment(0);
511         bottomData.right = new FormAttachment(100);
512         bottomData.bottom = new FormAttachment(100);
513
514         bottomComposite.setLayoutData(bottomData);
515         bottomComposite.setLayout(new GridLayout());
516
517         createRegisteredFilters(bottomComposite);
518         createFilterSelectButtons(bottomComposite);
519
520     }
521
522     /**
523      * Create a composite for the registered filters.
524      *
525      * @param bottomComposite
526      */

527     private void createRegisteredFilters(Composite bottomComposite) {
528
529         Composite listArea = new Composite(bottomComposite, SWT.NONE);
530         listArea.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
531         listArea.setLayout(new GridLayout());
532
533         Label title = new Label(listArea, SWT.NONE);
534         title.setText(MarkerMessages.ProblemFilterDialog_System_Filters_Title);
535         definedList = CheckboxTableViewer.newCheckList(listArea, SWT.BORDER);
536         definedList.setContentProvider(new IStructuredContentProvider() {
537             /*
538              * (non-Javadoc)
539              *
540              * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
541              */

542             public Object JavaDoc[] getElements(Object JavaDoc inputElement) {
543                 return MarkerSupportRegistry.getInstance()
544                         .getRegisteredFilters().toArray();
545             }
546
547             /*
548              * (non-Javadoc)
549              *
550              * @see org.eclipse.jface.viewers.IContentProvider#dispose()
551              */

552             public void dispose() {
553                 // Do nothing
554
}
555
556             /*
557              * (non-Javadoc)
558              *
559              * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
560              * java.lang.Object, java.lang.Object)
561              */

562             public void inputChanged(Viewer viewer, Object JavaDoc oldInput,
563                     Object JavaDoc newInput) {
564                 // Do nothing
565
}
566         });
567
568         definedList.setLabelProvider(new LabelProvider() {
569             /*
570              * (non-Javadoc)
571              *
572              * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
573              */

574             public String JavaDoc getText(Object JavaDoc element) {
575                 return ((MarkerFilter) element).getName();
576             }
577         });
578
579         definedList
580                 .addSelectionChangedListener(new ISelectionChangedListener() {
581
582                     /*
583                      * (non-Javadoc)
584                      *
585                      * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
586                      */

587                     public void selectionChanged(SelectionChangedEvent event) {
588
589                         ISelection selection = event.getSelection();
590                         if (selection instanceof IStructuredSelection) {
591                             Object JavaDoc selected = ((IStructuredSelection) selection)
592                                     .getFirstElement();
593                             if (selected == null) {
594                                 systemSettingsLabel.setText(Util.EMPTY_STRING);
595                             } else {
596                                 systemSettingsLabel
597                                         .setText(getSystemFilterString((ProblemFilter) selected));
598                             }
599                         } else {
600                             systemSettingsLabel.setText(Util.EMPTY_STRING);
601                         }
602                         showSystemLabel(true);
603
604                     }
605                 });
606
607         Iterator JavaDoc definedFilters = MarkerSupportRegistry.getInstance()
608                 .getRegisteredFilters().iterator();
609         definedList.setInput(this);
610         while (definedFilters.hasNext()) {
611             MarkerFilter next = (MarkerFilter) definedFilters.next();
612             definedList.setChecked(next, next.isEnabled());
613         }
614
615         definedList.getControl().setLayoutData(
616                 new GridData(SWT.FILL, SWT.FILL, true, true));
617
618     }
619
620     /**
621      * Return the string with the details of filter.
622      *
623      * @param filter
624      * @return String
625      */

626     protected String JavaDoc getSystemFilterString(ProblemFilter filter) {
627         StringBuffer JavaDoc filterBuffer = new StringBuffer JavaDoc();
628
629         String JavaDoc scopeString = getScopeString(filter);
630         if (scopeString != null) {
631             filterBuffer.append(scopeString);
632         }
633
634         String JavaDoc descriptionString = getDescriptionString(filter);
635         if (descriptionString != null) {
636             filterBuffer.append(Util.TWO_LINE_FEED);
637             filterBuffer.append(descriptionString);
638         }
639
640         String JavaDoc severityString = getSeverityString(filter);
641         if (severityString != null) {
642             filterBuffer.append(Util.TWO_LINE_FEED);
643             filterBuffer.append(severityString);
644         }
645
646         String JavaDoc typesString = getProblemTypesString(filter);
647         filterBuffer.append(Util.TWO_LINE_FEED);
648         filterBuffer.append(typesString);
649
650         return filterBuffer.toString();
651     }
652
653     /**
654      * Get the problem types String for filter.
655      *
656      * @param filter
657      * @return String
658      */

659     private String JavaDoc getProblemTypesString(ProblemFilter filter) {
660         List JavaDoc types = filter.getSelectedTypes();
661         if (types.size() == getRootEntries(filter).length) {
662             return MarkerMessages.ProblemFilterDialog_All_Problems;
663         }
664         StringBuffer JavaDoc typesBuffer = new StringBuffer JavaDoc();
665         Iterator JavaDoc typesIterator = types.iterator();
666         typesBuffer.append(MarkerMessages.ProblemFilterDialog_Selected_Types);
667
668         while (typesIterator.hasNext()) {
669             typesBuffer.append(Util.LINE_FEED_AND_TAB);
670             typesBuffer.append(((MarkerType) typesIterator.next()).getLabel());
671
672         }
673         return typesBuffer.toString();
674     }
675
676     /**
677      * Return the string for severity if there is one. Otherwise return
678      * <code>null</code>.
679      *
680      * @param filter
681      * @return String
682      */

683     private String JavaDoc getSeverityString(ProblemFilter filter) {
684         if (filter.getSelectBySeverity()) {
685             switch (filter.getSeverity()) {
686             case ProblemFilter.SEVERITY_INFO:
687                 return MarkerMessages.ProblemFilterDialog_Info_Severity;
688             case ProblemFilter.SEVERITY_WARNING:
689                 return MarkerMessages.ProblemFilterDialog_Warning_Severity;
690             case ProblemFilter.SEVERITY_ERROR:
691                 return MarkerMessages.ProblemFilterDialog_Error_Severity;
692             default:
693                 return null;
694             }
695         }
696         return null;
697     }
698
699     /**
700      * Return the string for the description if there is one. If not return
701      * <code>null</code>.
702      *
703      * @param filter
704      * @return String or <code>null</code>.
705      */

706     private String JavaDoc getDescriptionString(ProblemFilter filter) {
707         if (filter.getDescription().length() == 0) {
708             return null;
709         }
710         if (filter.getContains()) {
711             return NLS.bind(
712                     MarkerMessages.ProblemFilterDialog_Contains_Description,
713                     filter.getDescription());
714         }
715         return NLS
716                 .bind(
717                         MarkerMessages.ProblemFilterDialog_Does_Not_Contain_Description,
718                         filter.getDescription());
719
720     }
721
722     /**
723      * Return the string that describes the scope.
724      *
725      * @param filter
726      * @return String or <code>null</code> if the severity does not match.
727      */

728     private String JavaDoc getScopeString(ProblemFilter filter) {
729
730         switch (filter.onResource) {
731         case MarkerFilter.ON_ANY:
732             return MarkerMessages.ProblemFilterDialog_any;
733         case MarkerFilter.ON_ANY_IN_SAME_CONTAINER:
734             return MarkerMessages.ProblemFilterDialog_sameContainer;
735         case MarkerFilter.ON_SELECTED_AND_CHILDREN:
736             return MarkerMessages.ProblemFilterDialog_selectedAndChildren;
737         case MarkerFilter.ON_SELECTED_ONLY:
738             return MarkerMessages.ProblemFilterDialog_selected;
739         case MarkerFilter.ON_WORKING_SET:
740             return NLS.bind(MarkerMessages.ProblemFilterDialog_workingSet,
741                     filter.getWorkingSet());
742
743         default:
744             return null;
745
746         }
747     }
748
749     /*
750      * (non-Javadoc)
751      *
752      * @see org.eclipse.ui.views.markers.internal.DialogMarkerFilter#setSelectedFilter(org.eclipse.jface.viewers.SelectionChangedEvent)
753      */

754     protected void setSelectedFilter(SelectionChangedEvent event) {
755         showSystemLabel(false);
756         super.setSelectedFilter(event);
757     }
758
759     /**
760      * Show or hide the system label.
761      *
762      * @param systemLabelShowing
763      */

764     protected void showSystemLabel(boolean systemLabelShowing) {
765
766         systemSettingsLabel.setVisible(systemLabelShowing);
767         userFilterComposite.setVisible(!systemLabelShowing);
768         userFilterComposite.getParent().layout();
769     }
770
771     /*
772      * (non-Javadoc)
773      *
774      * @see org.eclipse.ui.views.markers.internal.DialogMarkerFilter#createSelectedFilterArea(org.eclipse.swt.widgets.Composite)
775      */

776     Composite createSelectedFilterArea(Composite composite) {
777
778         Composite wrapper = new Composite(composite, SWT.NONE);
779         FormLayout wrapperLayout = new FormLayout();
780         wrapperLayout.marginHeight = 0;
781         wrapperLayout.marginWidth = 0;
782         wrapper.setLayout(wrapperLayout);
783
784         systemSettingsLabel = createSystemSettingsLabel(wrapper);
785         systemSettingsLabel.setVisible(false);
786
787         FormData systemData = new FormData();
788         systemData.top = new FormAttachment(0, IDialogConstants.VERTICAL_MARGIN);
789         systemData.left = new FormAttachment(0,
790                 IDialogConstants.HORIZONTAL_MARGIN);
791         systemData.right = new FormAttachment(100, -1
792                 * IDialogConstants.HORIZONTAL_MARGIN);
793         systemData.bottom = new FormAttachment(100, -1
794                 * IDialogConstants.VERTICAL_MARGIN);
795
796         systemSettingsLabel.setLayoutData(systemData);
797
798         userFilterComposite = super.createSelectedFilterArea(wrapper);
799
800         FormData userData = new FormData();
801         userData.top = new FormAttachment(0);
802         userData.left = new FormAttachment(0);
803         userData.right = new FormAttachment(100);
804         userData.bottom = new FormAttachment(100);
805
806         userFilterComposite.setLayoutData(userData);
807
808         return wrapper;
809     }
810
811     /**
812      * Create the label for system filters.
813      *
814      * @param wrapper
815      * @return Label
816      */

817     private Label createSystemSettingsLabel(Composite wrapper) {
818
819         return new Label(wrapper, SWT.NONE);
820     }
821
822     /*
823      * (non-Javadoc)
824      *
825      * @see org.eclipse.ui.views.markers.internal.DialogMarkerFilter#buttonPressed(int)
826      */

827     protected void buttonPressed(int buttonId) {
828         if (definedList != null) {
829             if (buttonId == SELECT_ALL_FILTERS_ID) {
830                 definedList.setAllChecked(true);
831             } else if (buttonId == DESELECT_ALL_FILTERS_ID) {
832                 definedList.setAllChecked(false);
833             }
834         }
835
836         super.buttonPressed(buttonId);
837     }
838
839     /*
840      * (non-Javadoc)
841      *
842      * @see org.eclipse.ui.views.markers.internal.DialogMarkerFilter#okPressed()
843      */

844     protected void okPressed() {
845
846         Iterator JavaDoc registered = MarkerSupportRegistry.getInstance()
847                 .getRegisteredFilters().iterator();
848         while (registered.hasNext()) {
849             ProblemFilter next = (ProblemFilter) registered.next();
850             next.setEnabled(definedList.getChecked(next));
851
852         }
853         super.okPressed();
854     }
855 }
856
Popular Tags