package com.cimphony.cimtoole.wizards; import java.util.Comparator; import java.util.Set; import java.util.TreeSet; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.emf.ecore.EPackage; import org.eclipse.jface.dialogs.DialogSettings; import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.dialogs.FilteredItemsSelectionDialog; public class EPackageSelectionDialog extends FilteredItemsSelectionDialog { public EPackageSelectionDialog(Shell shell){ super(shell); } @Override protected Control createExtendedContentArea(Composite parent) { // TODO Auto-generated method stub return null; } private static final String DIALOG_SETTINGS = EPackageSelectionDialog.class.getName()+".settings"; protected IDialogSettings getDialogSettings() { IDialogSettings settings = new DialogSettings(DIALOG_SETTINGS); return settings; } @Override protected IStatus validateItem(Object item) { return Status.OK_STATUS; } @Override protected ItemsFilter createFilter() { return new ItemsFilter() { public boolean matchItem(Object item) { return matches((String)item); } public boolean isConsistentItem(Object item) { return true; } }; } @Override protected Comparator<?> getItemsComparator() { Comparator<String> comparator = new Comparator<String>() { @Override public int compare(String arg0, String arg1) { return arg0.compareTo(arg1); } }; return comparator; } @Override protected void fillContentProvider(AbstractContentProvider contentProvider, ItemsFilter itemsFilter, IProgressMonitor progressMonitor) throws CoreException { progressMonitor.beginTask("Searching", EPackage.Registry.INSTANCE.size()); //$NON-NLS-1$ Set<String> keySet = new TreeSet<String>(EPackage.Registry.INSTANCE.keySet()); for(String entry : keySet){ try{ if ( EPackage.Registry.INSTANCE.getEPackage(entry)!=null){ EPackage p = EPackage.Registry.INSTANCE.getEPackage(entry); if (p.getESuperPackage()==null){ contentProvider.add(p.getName()+" ('"+p.getNsURI()+"')", itemsFilter); } } }catch (Exception ex){ ex.printStackTrace(); } progressMonitor.worked(1); } progressMonitor.done(); } @Override public String getElementName(Object item) { return item.toString(); } }