1 11 12 package org.eclipse.ui.views.tasklist; 13 14 import com.ibm.icu.text.Collator; 15 import java.util.ArrayList ; 16 import java.util.Collections ; 17 import java.util.Comparator ; 18 19 import org.eclipse.core.resources.IMarker; 20 import org.eclipse.jface.dialogs.IDialogConstants; 21 import org.eclipse.jface.dialogs.TrayDialog; 22 import org.eclipse.jface.viewers.AbstractTreeViewer; 23 import org.eclipse.jface.viewers.CheckStateChangedEvent; 24 import org.eclipse.jface.viewers.CheckboxTreeViewer; 25 import org.eclipse.jface.viewers.ICheckStateListener; 26 import org.eclipse.jface.viewers.ILabelProvider; 27 import org.eclipse.jface.viewers.ITreeContentProvider; 28 import org.eclipse.jface.viewers.LabelProvider; 29 import org.eclipse.jface.viewers.Viewer; 30 import org.eclipse.jface.viewers.ViewerComparator; 31 import org.eclipse.jface.window.Window; 32 import org.eclipse.osgi.util.NLS; 33 import org.eclipse.swt.SWT; 34 import org.eclipse.swt.events.SelectionAdapter; 35 import org.eclipse.swt.events.SelectionEvent; 36 import org.eclipse.swt.events.SelectionListener; 37 import org.eclipse.swt.graphics.Font; 38 import org.eclipse.swt.graphics.Image; 39 import org.eclipse.swt.layout.FillLayout; 40 import org.eclipse.swt.layout.GridData; 41 import org.eclipse.swt.layout.GridLayout; 42 import org.eclipse.swt.widgets.Button; 43 import org.eclipse.swt.widgets.Combo; 44 import org.eclipse.swt.widgets.Composite; 45 import org.eclipse.swt.widgets.Control; 46 import org.eclipse.swt.widgets.Label; 47 import org.eclipse.swt.widgets.MessageBox; 48 import org.eclipse.swt.widgets.Shell; 49 import org.eclipse.swt.widgets.Text; 50 import org.eclipse.ui.IWorkingSet; 51 import org.eclipse.ui.PlatformUI; 52 import org.eclipse.ui.dialogs.IWorkingSetSelectionDialog; 53 import org.eclipse.ui.internal.views.tasklist.TaskListMessages; 54 55 class FiltersDialog extends TrayDialog { 56 59 static final int RESET_ID = IDialogConstants.CLIENT_ID; 60 61 static final int SELECT_ID = IDialogConstants.CLIENT_ID + 1; 62 63 private static class EnumValue { 64 private int value; 65 66 private String text; 67 68 private Image image; 69 70 EnumValue(int value, String text, Image image) { 71 this.value = value; 72 this.text = text; 73 this.image = image; 74 } 75 76 int getValue() { 77 return value; 78 } 79 80 String getText() { 81 return text; 82 } 83 84 Image getImage() { 85 return image; 86 } 87 } 88 89 private static class EnumType { 90 private EnumValue[] values; 91 92 EnumType(EnumValue[] values) { 93 this.values = values; 94 } 95 96 EnumValue[] getValues() { 97 return values; 98 } 99 } 100 101 private EnumType severityType; 102 103 private EnumType priorityType; 104 105 private EnumType completionType; 106 107 private class CheckboxEnumGroup { 108 private EnumType type; 109 110 private Button enableButton; 111 112 private Button[] valueButtons; 113 114 CheckboxEnumGroup(Composite parent, String text, EnumType type) { 115 this.type = type; 116 Composite enableComposite = new Composite(parent, SWT.NONE); 118 enableComposite 119 .setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 120 enableComposite.setLayout(new FillLayout()); 121 enableButton = new Button(enableComposite, SWT.CHECK); 122 enableButton.addSelectionListener(selectionListener); 123 enableButton.setText(text); 124 Composite valueComposite = new Composite(parent, SWT.NONE); 125 valueComposite 126 .setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 127 valueComposite.setLayout(new FillLayout()); 128 EnumValue[] values = type.getValues(); 129 valueButtons = new Button[values.length]; 130 for (int i = 0; i < values.length; ++i) { 131 Button valueButton = new Button(valueComposite, SWT.CHECK); 132 valueButton.setText(values[i].getText()); 133 valueButtons[i] = valueButton; 134 } 135 } 136 137 boolean getEnabled() { 138 return enableButton.getEnabled(); 139 } 140 141 void setEnabled(boolean enabled) { 142 enableButton.setEnabled(enabled); 143 updateEnabledState(); 144 } 145 146 boolean getSelection() { 147 return enableButton.getSelection(); 148 } 149 150 void setSelection(boolean selected) { 151 enableButton.setSelection(selected); 152 updateEnabledState(); 153 } 154 155 void updateEnabledState() { 156 boolean enabled = enableButton.isEnabled() 157 && enableButton.getSelection(); 158 for (int i = 0; i < valueButtons.length; ++i) { 159 valueButtons[i].setEnabled(enabled); 160 } 161 } 162 163 int getValueMask() { 164 int mask = 0; 165 EnumValue[] values = type.getValues(); 166 for (int i = 0; i < valueButtons.length; ++i) { 167 if (valueButtons[i].getSelection()) { 168 mask |= (1 << values[i].getValue()); 169 } 170 } 171 return mask; 172 } 173 174 void setValueMask(int mask) { 175 EnumValue[] values = type.getValues(); 176 for (int i = 0; i < values.length; ++i) { 177 valueButtons[i] 178 .setSelection((mask & (1 << values[i].getValue())) != 0); 179 } 180 } 181 } 182 183 private class LabelComboTextGroup { 184 Label label; 185 186 Combo combo; 187 188 Text text; 189 190 LabelComboTextGroup(Composite parent, String labelText, 191 String [] comboStrings, String initialText, int widthHint) { 192 Font font = parent.getFont(); 193 Composite group = new Composite(parent, SWT.NONE); 194 GridLayout layout = new GridLayout(); 195 layout.numColumns = 3; 196 layout.marginWidth = 0; 198 group.setLayout(layout); 199 group.setFont(font); 200 label = new Label(group, SWT.NONE); 201 label.setText(labelText); 202 label.setFont(font); 203 combo = createCombo(group, comboStrings, 0); 204 text = new Text(parent, SWT.SINGLE | SWT.BORDER); 205 GridData gridData = new GridData(GridData.FILL_HORIZONTAL); 206 gridData.widthHint = widthHint; 207 text.setLayoutData(gridData); 208 text.setFont(font); 209 text.setText(initialText); 210 } 211 } 212 213 217 private class WorkingSetGroup { 218 private Button button; 219 220 225 WorkingSetGroup(Composite parent) { 226 button = createRadioButton(parent, TaskListMessages.TaskList_noWorkingSet); 228 GridData data = new GridData(GridData.FILL_HORIZONTAL); 229 button.setLayoutData(data); 230 231 Composite composite = new Composite(parent, SWT.NONE); 232 composite.setFont(parent.getFont()); 233 GridLayout layout = new GridLayout(); 234 Button radio = new Button(parent, SWT.RADIO); 235 layout.marginWidth = radio.computeSize(SWT.DEFAULT, SWT.DEFAULT).x; 236 layout.marginHeight = 0; 237 radio.dispose(); 238 composite.setLayout(layout); 239 createButton(composite, SELECT_ID, TaskListMessages.TaskList_workingSetSelect, false); 240 } 241 242 249 boolean getSelection() { 250 return button.getSelection(); 251 } 252 253 260 IWorkingSet getWorkingSet() { 261 return (IWorkingSet) button.getData(); 262 } 263 264 270 void setSelection(boolean selected) { 271 button.setSelection(selected); 272 if (selected) { 273 anyResourceButton.setSelection(false); 274 anyResourceInSameProjectButton.setSelection(false); 275 selectedResourceButton.setSelection(false); 276 selectedResourceAndChildrenButton.setSelection(false); 277 } 278 } 279 280 283 void selectPressed() { 284 IWorkingSetSelectionDialog dialog = PlatformUI.getWorkbench() 285 .getWorkingSetManager().createWorkingSetSelectionDialog( 286 getShell(), false); 287 IWorkingSet workingSet = getWorkingSet(); 288 289 if (workingSet != null) { 290 dialog.setSelection(new IWorkingSet[] { workingSet }); 291 } 292 if (dialog.open() == Window.OK) { 293 IWorkingSet[] result = dialog.getSelection(); 294 if (result != null && result.length > 0) { 295 setWorkingSet(result[0]); 296 } else { 297 setWorkingSet(null); 298 } 299 if (getSelection() == false) { 300 setSelection(true); 301 } 302 } 303 } 304 305 310 void setWorkingSet(IWorkingSet workingSet) { 311 button.setData(workingSet); 312 if (workingSet != null) { 313 button.setText(NLS.bind(TaskListMessages.TaskList_workingSet, workingSet.getLabel())); 314 } else { 315 button.setText(TaskListMessages.TaskList_noWorkingSet); 316 } 317 } 318 } 319 320 private TasksFilter filter; 321 322 MarkerTypesModel markerTypesModel = new MarkerTypesModel(); 323 324 private MarkerType[] markerTypes; 325 326 private CheckboxTreeViewer typesViewer; 327 328 Button anyResourceButton; 329 330 Button anyResourceInSameProjectButton; 332 Button selectedResourceButton; 333 334 Button selectedResourceAndChildrenButton; 335 336 private WorkingSetGroup workingSetGroup; 337 338 private LabelComboTextGroup descriptionGroup; 339 340 private CheckboxEnumGroup severityGroup; 341 342 private CheckboxEnumGroup priorityGroup; 343 344 private CheckboxEnumGroup completionGroup; 345 346 private Button filterOnMarkerLimit; 347 348 private Text markerLimit; 349 350 SelectionListener selectionListener = new SelectionAdapter() { 351 public void widgetSelected(SelectionEvent e) { 352 FiltersDialog.this.widgetSelected(e); 353 } 354 }; 355 356 private ICheckStateListener checkStateListener = new ICheckStateListener() { 357 public void checkStateChanged(CheckStateChangedEvent event) { 358 FiltersDialog.this.checkStateChanged(event); 359 } 360 }; 361 362 367 public FiltersDialog(Shell parentShell) { 368 super(parentShell); 369 initTypes(); 370 } 371 372 375 protected void buttonPressed(int buttonId) { 376 if (RESET_ID == buttonId) { 377 resetPressed(); 378 } else if (SELECT_ID == buttonId) { 379 workingSetGroup.selectPressed(); 380 } else { 381 super.buttonPressed(buttonId); 382 } 383 } 384 385 390 public void checkStateChanged(CheckStateChangedEvent event) { 391 MarkerType type = (MarkerType) event.getElement(); 392 typesViewer.setSubtreeChecked(type, event.getChecked()); 393 MarkerType[] allSupertypes = type.getAllSupertypes(); 394 for (int i = 0; i < allSupertypes.length; ++i) { 395 typesViewer.setChecked(allSupertypes[i], false); 396 } 397 updateEnabledState(); 398 } 399 400 403 protected void configureShell(Shell newShell) { 404 super.configureShell(newShell); 405 newShell.setText(TaskListMessages.TaskList_filter); 406 PlatformUI.getWorkbench().getHelpSystem().setHelp(newShell, 407 ITaskListHelpContextIds.FILTERS_DIALOG); 408 } 409 410 415 void createAttributesArea(Composite parent) { 416 Composite composite = new Composite(parent, SWT.NONE); 417 GridLayout layout = new GridLayout(); 418 layout.numColumns = 2; 419 composite.setLayout(layout); 420 composite.setFont(parent.getFont()); 421 422 String [] filters = { 423 TaskListMessages.TaskList_contains, TaskListMessages.TaskList_doesNotContain }; 424 descriptionGroup = new LabelComboTextGroup(composite, TaskListMessages.TaskList_whereDescription, filters, "", 200); severityGroup = new CheckboxEnumGroup(composite, TaskListMessages.TaskList_severity_label, severityType); 426 priorityGroup = new CheckboxEnumGroup(composite, TaskListMessages.TaskList_priority_label, priorityType); 427 completionGroup = new CheckboxEnumGroup(composite, TaskListMessages.TaskList_status_label, completionType); 428 } 429 430 void createResetArea(Composite parent) { 431 Composite composite = new Composite(parent, SWT.NONE); 432 composite.setFont(parent.getFont()); 433 composite.setLayout(new GridLayout()); 434 composite.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); 435 436 Button reset = new Button(composite, SWT.PUSH); 437 reset.setText(TaskListMessages.TaskList_resetText); 438 reset.setData(new Integer (RESET_ID)); 439 440 reset.addSelectionListener(new SelectionAdapter() { 441 public void widgetSelected(SelectionEvent event) { 442 buttonPressed(((Integer ) event.widget.getData()).intValue()); 443 } 444 }); 445 446 reset.setFont(composite.getFont()); 447 setButtonLayoutData(reset); 448 } 449 450 458 Button createCheckbox(Composite parent, String text, boolean grabRow) { 459 Button button = new Button(parent, SWT.CHECK); 460 if (grabRow) { 461 GridData gridData = new GridData(GridData.FILL_HORIZONTAL); 462 button.setLayoutData(gridData); 463 } 464 button.setText(text); 465 button.addSelectionListener(selectionListener); 466 button.setFont(parent.getFont()); 467 return button; 468 } 469 470 478 Combo createCombo(Composite parent, String [] items, int selectionIndex) { 479 Combo combo = new Combo(parent, SWT.DROP_DOWN | SWT.READ_ONLY); 480 combo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 481 combo.setFont(parent.getFont()); 482 combo.setItems(items); 483 combo.select(selectionIndex); 484 combo.addSelectionListener(selectionListener); 485 return combo; 486 } 487 488 491 protected Control createDialogArea(Composite parent) { 492 Composite composite = (Composite) super.createDialogArea(parent); 493 createMarkerLimitArea(composite); 494 createTypesArea(composite); 495 createResourceArea(composite); 496 createAttributesArea(composite); 497 createResetArea(composite); 498 createSeparatorLine(composite); 499 500 updateUIFromFilter(getFilter()); 501 502 return composite; 503 } 504 505 510 void createSeparatorLine(Composite parent) { 511 Label separator = new Label(parent, SWT.HORIZONTAL | SWT.SEPARATOR); 513 GridData gd = new GridData(GridData.FILL_HORIZONTAL); 514 gd.horizontalSpan = 1; 515 separator.setLayoutData(gd); 516 } 517 518 525 Button createRadioButton(Composite parent, String text) { 526 Button button = new Button(parent, SWT.RADIO); 527 button.setText(text); 528 button.setFont(parent.getFont()); 529 button.addSelectionListener(selectionListener); 530 return button; 531 } 532 533 538 void createResourceArea(Composite parent) { 539 Composite group = new Composite(parent, SWT.NONE); 540 group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 541 group.setLayout(new GridLayout()); 542 group.setFont(parent.getFont()); 543 anyResourceButton = createRadioButton(group, TaskListMessages.TaskList_anyResource); 544 anyResourceInSameProjectButton = createRadioButton(group, 545 TaskListMessages.TaskList_anyResourceInSameProject); selectedResourceButton = createRadioButton(group, TaskListMessages.TaskList_selectedResource); 547 selectedResourceAndChildrenButton = createRadioButton(group, 548 TaskListMessages.TaskList_selectedAndChildren); 549 workingSetGroup = new WorkingSetGroup(group); 550 } 551 552 557 void createTypesArea(Composite parent) { 558 Composite composite = new Composite(parent, SWT.NONE); 559 composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 560 GridLayout layout = new GridLayout(); 561 composite.setLayout(layout); 562 563 Label label = new Label(composite, SWT.NONE); 564 label.setText(TaskListMessages.TaskList_showItemsOfType); 565 566 typesViewer = new CheckboxTreeViewer(composite); 567 GridData gridData = new GridData(GridData.FILL_HORIZONTAL); 568 gridData.heightHint = 100; 569 typesViewer.getControl().setLayoutData(gridData); 570 typesViewer.setContentProvider(getContentProvider()); 571 typesViewer.setLabelProvider(getLabelProvider()); 572 typesViewer.setComparator(getViewerComparator()); 573 typesViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS); 574 typesViewer.addCheckStateListener(checkStateListener); 575 typesViewer.setInput(getMarkerTypes()); 576 } 577 578 ITreeContentProvider getContentProvider() { 579 return new ITreeContentProvider() { 580 public void inputChanged(Viewer viewer, Object oldInput, 581 Object newInput) { 582 } 583 584 public void dispose() { 585 } 586 587 public Object [] getElements(Object inputElement) { 588 return new Object [] { 589 markerTypesModel.getType(IMarker.PROBLEM), 590 markerTypesModel.getType(IMarker.TASK) }; 591 } 592 593 public Object [] getChildren(Object parentElement) { 594 MarkerType type = (MarkerType) parentElement; 595 return type.getSubtypes(); 596 } 597 598 public Object getParent(Object element) { 599 return null; 600 } 601 602 public boolean hasChildren(Object element) { 603 return getChildren(element).length > 0; 604 } 605 }; 606 } 607 608 void createMarkerLimitArea(Composite parent) { 609 Font font = parent.getFont(); 610 Composite composite = new Composite(parent, SWT.NONE); 611 composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 612 composite.setFont(font); 613 GridLayout layout = new GridLayout(); 614 layout.numColumns = 2; 615 composite.setLayout(layout); 616 filterOnMarkerLimit = createCheckbox(composite, TaskListMessages.TaskList_limitVisibleTasksTo, false); 617 filterOnMarkerLimit.setLayoutData(new GridData()); 618 markerLimit = new Text(composite, SWT.SINGLE | SWT.BORDER); 619 markerLimit.setTextLimit(6); 620 GridData gridData = new GridData(); 621 gridData.widthHint = convertWidthInCharsToPixels(10); 622 markerLimit.setLayoutData(gridData); 623 markerLimit.setFont(font); 624 } 625 626 631 public TasksFilter getFilter() { 632 if (filter == null) { 633 filter = new TasksFilter(); 634 } 635 return filter; 636 } 637 638 ILabelProvider getLabelProvider() { 639 return new LabelProvider() { 640 public String getText(Object element) { 641 MarkerType type = (MarkerType) element; 642 return type.getLabel(); 643 } 644 }; 645 } 646 647 652 MarkerType[] getMarkerTypes() { 653 if (markerTypes == null) { 654 ArrayList typesList = new ArrayList (); 655 MarkerType[] types = markerTypesModel.getTypes(); 656 for (int i = 0; i < types.length; ++i) { 657 MarkerType type = types[i]; 658 if (type.getLabel().length() > 0) { 659 if (type.isSubtypeOf(markerTypesModel 660 .getType(IMarker.PROBLEM)) 661 || type.isSubtypeOf(markerTypesModel 662 .getType(IMarker.TASK))) { 663 typesList.add(type); 664 } 665 } 666 } 667 Collections.sort(typesList, new Comparator () { 668 Collator collator = Collator.getInstance(); 669 670 public int compare(Object o1, Object o2) { 671 return collator.compare(((MarkerType) o1).getLabel(), 672 ((MarkerType) o2).getLabel()); 673 } 674 }); 675 markerTypes = new MarkerType[typesList.size()]; 676 typesList.toArray(markerTypes); 677 } 678 return markerTypes; 679 } 680 681 686 String [] getSelectedTypes() { 687 Object [] checked = typesViewer.getCheckedElements(); 688 ArrayList list = new ArrayList (); 689 for (int i = 0; i < checked.length; ++i) { 690 MarkerType type = (MarkerType) checked[i]; 691 boolean found = false; 695 for (int j = list.size(); --j >= 0;) { 696 if (type.isSubtypeOf((MarkerType) list.get(j))) { 697 found = true; 698 break; 699 } 700 } 701 if (!found) { 702 list.add(type); 703 } 704 } 705 String [] types = new String [list.size()]; 706 for (int i = 0; i < list.size(); ++i) { 707 types[i] = ((MarkerType) list.get(i)).getId(); 708 } 709 return types; 710 } 711 712 private ViewerComparator getViewerComparator() { 713 return new ViewerComparator() { 714 public int compare(Viewer viewer, Object e1, Object e2) { 715 MarkerType t1 = (MarkerType) e1; 716 MarkerType t2 = (MarkerType) e2; 717 return getComparator().compare(t1.getLabel(), t2.getLabel()); 718 } 719 }; 720 } 721 722 728 String getTypeId(int typeIndex) { 729 return getMarkerTypes()[typeIndex].getId(); 730 } 731 732 738 int getTypeIndex(String markerType) { 739 MarkerType[] types = getMarkerTypes(); 740 for (int i = 0; i < types.length; ++i) { 741 String id = types[i].getId(); 742 if (id == null ? markerType == null : id.equals(markerType)) { 743 return i; 744 } 745 } 746 return -1; 747 } 748 749 void initTypes() { 750 severityType = new EnumType( 751 new EnumValue[] { 752 new EnumValue( 753 IMarker.SEVERITY_ERROR, 754 TaskListMessages.TaskList_severity_error, MarkerUtil.getImage("error")), new EnumValue( 756 IMarker.SEVERITY_WARNING, 757 TaskListMessages.TaskList_severity_warning, MarkerUtil.getImage("warn")), new EnumValue( 759 IMarker.SEVERITY_INFO, 760 TaskListMessages.TaskList_severity_info, MarkerUtil.getImage("info")) }); 762 763 priorityType = new EnumType( 764 new EnumValue[] { 765 new EnumValue( 766 IMarker.PRIORITY_HIGH, 767 TaskListMessages.TaskList_priority_high, MarkerUtil.getImage("hprio")), new EnumValue(IMarker.PRIORITY_NORMAL, TaskListMessages.TaskList_priority_normal, null), 769 new EnumValue( 770 IMarker.PRIORITY_LOW, 771 TaskListMessages.TaskList_priority_low, MarkerUtil.getImage("lprio")) }); 773 774 completionType = new EnumType(new EnumValue[] { 775 new EnumValue(1, TaskListMessages.TaskList_status_completed, null), 776 new EnumValue(0, TaskListMessages.TaskList_status_notCompleted, null) 777 }); 778 } 779 780 785 protected void okPressed() { 786 try { 787 int parseResult = Integer.parseInt(this.markerLimit.getText()); 788 789 if (parseResult < 1) { 790 throw new NumberFormatException (); 791 } 792 793 updateFilterFromUI(getFilter()); 794 super.okPressed(); 795 } catch (NumberFormatException eNumberFormat) { 796 MessageBox messageBox = new MessageBox(getShell(), SWT.OK 797 | SWT.APPLICATION_MODAL | SWT.ICON_ERROR); 798 messageBox.setText(TaskListMessages.TaskList_titleMarkerLimitInvalid); 799 messageBox.setMessage(TaskListMessages.TaskList_messageMarkerLimitInvalid); 800 messageBox.open(); 801 802 if (markerLimit.forceFocus()) { 803 markerLimit.setSelection(0, markerLimit.getCharCount()); 804 markerLimit.showSelection(); 805 } 806 } 807 } 808 809 814 void resetPressed() { 815 updateUIFromFilter(new TasksFilter()); 816 } 817 818 821 boolean selectionIncludesSubtypeOf(String type) { 822 MarkerType superType = markerTypesModel.getType(type); 823 if (superType == null) { 824 return false; 825 } 826 Object [] checked = typesViewer.getCheckedElements(); 827 for (int i = 0; i < checked.length; ++i) { 828 if (((MarkerType) checked[i]).isSubtypeOf(superType)) { 829 return true; 830 } 831 } 832 return false; 833 } 834 835 840 public void setFilter(TasksFilter filter) { 841 this.filter = filter; 842 } 843 844 849 void setSelectedTypes(String [] typeIds) { 850 typesViewer.setCheckedElements(new MarkerType[0]); 851 for (int i = 0; i < typeIds.length; ++i) { 852 MarkerType type = markerTypesModel.getType(typeIds[i]); 853 if (type != null) { 854 typesViewer.setSubtreeChecked(type, true); 855 } 856 } 857 } 858 859 862 void updateEnabledState() { 863 markerLimit.setEnabled(filterOnMarkerLimit.getSelection()); 864 boolean isProblemSelected = selectionIncludesSubtypeOf(IMarker.PROBLEM); 865 boolean isTaskSelected = selectionIncludesSubtypeOf(IMarker.TASK); 866 severityGroup.setEnabled(isProblemSelected); 867 priorityGroup.setEnabled(isTaskSelected); 868 completionGroup.setEnabled(isTaskSelected); 869 } 870 871 876 void updateFilterFromUI(TasksFilter tasksFilter) { 877 878 tasksFilter.types = getSelectedTypes(); 879 880 if (selectedResourceButton.getSelection()) { 881 tasksFilter.onResource = TasksFilter.ON_SELECTED_RESOURCE_ONLY; 882 } else if (selectedResourceAndChildrenButton.getSelection()) { 883 tasksFilter.onResource = TasksFilter.ON_SELECTED_RESOURCE_AND_CHILDREN; 884 } else if (anyResourceInSameProjectButton.getSelection()) { 885 tasksFilter.onResource = TasksFilter.ON_ANY_RESOURCE_OF_SAME_PROJECT; 886 } else if (workingSetGroup.getSelection()) { 887 tasksFilter.onResource = TasksFilter.ON_WORKING_SET; 888 } else { 889 tasksFilter.onResource = TasksFilter.ON_ANY_RESOURCE; 890 } 891 892 tasksFilter.workingSet = workingSetGroup.getWorkingSet(); 893 tasksFilter.descriptionFilterKind = descriptionGroup.combo 894 .getSelectionIndex(); 895 tasksFilter.descriptionFilter = descriptionGroup.text.getText(); 896 tasksFilter.filterOnDescription = !tasksFilter.descriptionFilter 897 .equals(""); 899 tasksFilter.filterOnSeverity = severityGroup.getSelection(); 900 tasksFilter.severityFilter = severityGroup.getValueMask(); 901 902 tasksFilter.filterOnPriority = priorityGroup.getSelection(); 903 tasksFilter.priorityFilter = priorityGroup.getValueMask(); 904 905 tasksFilter.filterOnCompletion = completionGroup.getSelection(); 906 tasksFilter.completionFilter = completionGroup.getValueMask(); 907 908 int limit = TasksFilter.DEFAULT_MARKER_LIMIT; 909 910 try { 911 limit = Integer.parseInt(this.markerLimit.getText()); 912 } catch (NumberFormatException eNumberFormat) { 913 } 914 915 tasksFilter.setMarkerLimit(limit); 916 tasksFilter.setFilterOnMarkerLimit(filterOnMarkerLimit.getSelection()); 917 } 918 919 924 void updateUIFromFilter(TasksFilter tasksFilter) { 925 926 setSelectedTypes(tasksFilter.types); 927 928 int on = tasksFilter.onResource; 929 anyResourceButton.setSelection(on == TasksFilter.ON_ANY_RESOURCE); 930 anyResourceInSameProjectButton 931 .setSelection(on == TasksFilter.ON_ANY_RESOURCE_OF_SAME_PROJECT); selectedResourceButton 933 .setSelection(on == TasksFilter.ON_SELECTED_RESOURCE_ONLY); 934 selectedResourceAndChildrenButton 935 .setSelection(on == TasksFilter.ON_SELECTED_RESOURCE_AND_CHILDREN); 936 workingSetGroup.setSelection(on == TasksFilter.ON_WORKING_SET); 937 workingSetGroup.setWorkingSet(tasksFilter.workingSet); 938 939 descriptionGroup.combo.select(tasksFilter.descriptionFilterKind); 940 descriptionGroup.text.setText(tasksFilter.descriptionFilter); 941 942 severityGroup.setSelection(tasksFilter.filterOnSeverity); 943 severityGroup.setValueMask(tasksFilter.severityFilter); 944 945 priorityGroup.setSelection(tasksFilter.filterOnPriority); 946 priorityGroup.setValueMask(tasksFilter.priorityFilter); 947 948 completionGroup.setSelection(tasksFilter.filterOnCompletion); 949 completionGroup.setValueMask(tasksFilter.completionFilter); 950 951 markerLimit.setText("" + tasksFilter.getMarkerLimit()); filterOnMarkerLimit.setSelection(tasksFilter.getFilterOnMarkerLimit()); 953 954 updateEnabledState(); 955 } 956 957 960 void widgetSelected(SelectionEvent e) { 961 updateEnabledState(); 962 } 963 } 964 | Popular Tags |