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();
}