package org.deved.antlride.internal.ui.wizards; import java.util.Comparator; import java.util.List; import org.deved.antlride.ui.dialogs.FilteredElementsSelectionDialog; import org.eclipse.core.resources.IResource; import org.eclipse.swt.widgets.Shell; public class AntlrTokenVocabSelectionDialog extends FilteredElementsSelectionDialog<IResource> { public AntlrTokenVocabSelectionDialog(Shell shell) { super(shell); } @Override protected ItemsFilter createFilter() { return new ItemsFilter() { @Override public boolean matchItem(Object item) { if (item instanceof IResource) { IResource resource = (IResource) item; return matches(resource.getName()); } return false; } @Override public boolean isConsistentItem(Object item) { return item instanceof IResource; } }; } @Override protected IResource findElement(String id) { List<IResource> resources = getElements(); for (IResource resource : resources) { if (id.equals(getElementDescription(resource))) return resource; } return null; } @Override public String getElementDescription(Object element) { if (element instanceof IResource) { return ((IResource) element).getFullPath().toString().substring(1); } return null; } @Override public String getElementId(Object element) { return getElementDescription(element); } @Override public String getElementName(Object item) { return getElementDescription(item); } @Override protected Comparator<IResource> getItemsComparator() { return new Comparator<IResource>() { public int compare(IResource o1, IResource o2) { return o1.getName().compareToIgnoreCase(o2.getName()); } }; } @Override protected String getTitle() { return "Select a lexer or combined grammar"; } }