In this example, we will contribute a basic search dialog to illustrate the steps needed to create a custom subclass of FilteredItemsSelectionDialog.
private static ArrayList resources = new ArrayList(); static { generateRescourcesTestCases('A', 'C', 8, ""); //$NON-NLS-1$ generateRescourcesTestCases('a', 'c', 4, ""); //$NON-NLS-1$ } private static void generateRescourcesTestCases(char startChar, char endChar, int length, String resource){ for (char ch = startChar; ch <= endChar; ch++) { String res = resource + String.valueOf(ch); if (length == res.length()) resources.add(res); else if ((res.trim().length() % 2) == 0) generateRescourcesTestCases(Character.toUpperCase((char)(startChar + 1)), Character.toUpperCase((char)(endChar + 1)), length, res); else generateRescourcesTestCases(Character.toLowerCase((char)(startChar + 1)), Character.toLowerCase((char)(endChar + 1)), length, res); } }
protected Control createExtendedContentArea(Composite parent) { return null; }
protected ItemsFilter createFilter() { return new ItemsFilter() { public boolean matchItem(Object item) { return matches(item.toString()); } public boolean isConsistentItem(Object item) { return true; } }; }
protected void fillContentProvider(AbstractContentProvider contentProvider, ItemsFilter itemsFilter, IProgressMonitor progressMonitor) throws CoreException { progressMonitor.beginTask("Searching", resources.size()); //$NON-NLS-1$ for (Iterator iter = resources.iterator(); iter.hasNext();) { contentProvider.add(iter.next(), itemsFilter); progressMonitor.worked(1); } progressMonitor.done(); }
private static final String DIALOG_SETTINGS = "FilteredResourcesSelectionDialogExampleSettings"; protected IDialogSettings getDialogSettings() { IDialogSettings settings = Activator.getDefault().getDialogSettings() .getSection(DIALOG_SETTINGS); if (settings == null) { settings = Activator.getDefault().getDialogSettings() .addNewSection(DIALOG_SETTINGS); } return settings; }
public String getElementName(Object item) { return item.toString(); }
protected Comparator getItemsComparator() { return new Comparator() { public int compare(Object arg0, Object arg1) { return arg0.toString().compareTo(arg1.toString()); } }; }
protected IStatus validateItem(Object item) { return Status.OK_STATUS; }
public FilteredResourcesSelectionDialogExample(Shell shell, boolean multi) { super(shell, multi); setTitle("Filtered Resources Selection Dialog Example"); setSelectionHistory(new ResourceSelectionHistory()); } private class ResourceSelectionHistory extends SelectionHistory { protected Object restoreItemFromMemento(IMemento element) { return null; } protected void storeItemToMemento(Object item, IMemento element) { } }
public void run(IAction action) { Shell shell = new Shell(); FilteredItemsSelectionDialog dialog = new FilteredResourcesSelectionDialogExample(shell, true); dialog.setInitialPattern("a"); dialog.open(); }