private class ResourceSelectionHistory extends SelectionHistory { /* * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.SelectionHistory#restoreItemFromMemento(org.eclipse.ui.IMemento) */ protected Object restoreItemFromMemento(IMemento element) { return element.getString("resource"); //$NON-NLS-1$ } /* * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.SelectionHistory#storeItemToMemento(java.lang.Object, * org.eclipse.ui.IMemento) */ protected void storeItemToMemento(Object item, IMemento element) { element.putString("resource", item.toString()); //$NON-NLS-1$ } }
private boolean onlyLowerCase = true; private class ResourceFilter extends ItemsFilter { public final boolean onlyLowerCase = FilteredResourcesSelectionDialogExample.this.onlyLowerCase; public boolean matchItem(Object item) { String resource = item.toString(); if (onlyLowerCase && Character.isUpperCase(resource.charAt(0))) return false; return matches(resource); } public boolean equalsFilter(ItemsFilter filter) { ResourceFilter resourceFilter = (ResourceFilter) filter; if (onlyLowerCase != resourceFilter.onlyLowerCase) return false; return super.equalsFilter(filter); } public boolean isSubFilter(ItemsFilter filter) { ResourceFilter resourceFilter = (ResourceFilter) filter; if (onlyLowerCase != resourceFilter.onlyLowerCase) return false; return super.isSubFilter(filter); } public boolean isConsistentItem(Object item) { return true; } }
protected ItemsFilter createFilter() { return new ResourceFilter(); }
We will use a check-box and a menu action to indicate whether to filter strings that start with a lower case character.
private Button checkButton; protected Control createExtendedContentArea(Composite parent) { checkButton = new Button(parent, SWT.CHECK); checkButton.setText("Only Lower Case Strings"); //$NON-NLS-1$ checkButton.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { } public void widgetSelected(SelectionEvent e) { if (onlyLowerCase != ((Button) e.widget).getSelection()) { onlyLowerCase = ((Button) e.widget).getSelection(); applyFilter(); } } }); return checkButton; }
private Action showOnlyLowerCaseStringsAction = new ShowOnlyLowerCaseStringsAction(); private class ShowOnlyLowerCaseStringsAction extends Action { /** * Creates a new instance of the action. */ public ShowOnlyLowerCaseStringsAction() { super("Only Lower Case String", //$NON-NLS-1$ IAction.AS_CHECK_BOX); } public void run() { if (onlyLowerCase != isChecked()) { onlyLowerCase = isChecked(); applyFilter(); } } } protected void fillViewMenu(IMenuManager menuManager) { super.fillViewMenu(menuManager); menuManager.add(showOnlyLowerCaseStringsAction); }
protected void applyFilter() { super.applyFilter(); checkButton.setSelection(onlyLowerCase); showOnlyLowerCaseStringsAction.setChecked(onlyLowerCase); }