package enfo.ui.command; import org.eclipse.core.commands.Category; import org.eclipse.core.commands.Command; import org.eclipse.core.commands.common.NotDefinedException; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerComparator; public class CommandComparator extends ViewerComparator { private static final String UNCATEGORIZED_ID = "org.eclipse.core.commands.categories.autogenerated" ; public CommandComparator() { super(); } @Override public int compare(Viewer viewer, Object e1, Object e2) { if ((e1 instanceof Command) && (e2 instanceof Command)) { Command cmd1 = (Command) e1; Command cmd2 = (Command) e2; if (!cmd1.isDefined()) { return 1; } if (!cmd2.isDefined()) { return -1; } try { return cmd1.getName().compareTo(cmd2.getName()); } catch (NotDefinedException e) { return cmd1.getId().compareTo(cmd2.getId()); } } else if ((e1 instanceof Category) && (e2 instanceof Category)) { Category cat1 = (Category) e1; Category cat2 = (Category) e2; if (cat1.getId().equals(UNCATEGORIZED_ID)) { return 1; } if (cat2.getId().equals(UNCATEGORIZED_ID)) { return -1; } try { return cat1.getName().compareTo(cat2.getName()); } catch (NotDefinedException e) { return cat1.getId().compareTo(cat2.getId()); } } return super.compare(viewer, e1, e2); } }