package org.xmind.ui.internal.handlers; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.ui.IEditorPart; import org.xmind.gef.EditDomain; import org.xmind.gef.GEF; import org.xmind.gef.IViewer; import org.xmind.gef.Request; import org.xmind.ui.commands.MindMapCommandConstants; import org.xmind.ui.internal.MindMapUIPlugin; import org.xmind.ui.internal.actions.ActionConstants; public class SortHandler extends AbstractHandler { public Object execute(ExecutionEvent event) throws ExecutionException { sort(MindMapHandlerUtil.findContributingEditor(event), event.getParameter(MindMapCommandConstants.SORT_PARAM)); return null; } private void sort(IEditorPart editor, String param) { if (param == null || editor == null) return; String value = getSortId(param); if (value == null) return; IViewer viewer = MindMapUIPlugin.getAdapter(editor, IViewer.class); if (viewer == null) return; EditDomain domain = viewer.getEditDomain(); if (domain == null) return; domain.handleRequest(new Request(GEF.REQ_SORT).setViewer(viewer) .setParameter(GEF.PARAM_COMPARAND, value)); } private String getSortId(String param) { if (MindMapCommandConstants.SORT_PARAM_TITLE.equals(param)) { return ActionConstants.SORT_TITLE_ID; } else if (MindMapCommandConstants.SORT_PARAM_PRIORITY.equals(param)) { return ActionConstants.SORT_PRIORITY_ID; } else if (MindMapCommandConstants.SORT_PARAM_MODIFIED.equals(param)) { return ActionConstants.SORT_MODIFIED_ID; } return null; } }