1 8 package com.nightlabs.editor2d; 9 10 import org.eclipse.gef.ContextMenuProvider; 11 import org.eclipse.gef.EditPartViewer; 12 import org.eclipse.gef.ui.actions.ActionRegistry; 13 import org.eclipse.gef.ui.actions.GEFActionConstants; 14 import org.eclipse.jface.action.IAction; 15 import org.eclipse.jface.action.IMenuManager; 16 import org.eclipse.jface.action.MenuManager; 17 import org.eclipse.jface.action.Separator; 18 import org.eclipse.jface.action.SubMenuManager; 19 import org.eclipse.ui.actions.ActionFactory; 20 21 import com.nightlabs.editor2d.actions.EditShapeAction; 22 import com.nightlabs.editor2d.actions.NormalSelectionAction; 23 import com.nightlabs.editor2d.actions.ResetRotationCenterAction; 24 import com.nightlabs.editor2d.actions.RotateAction; 25 import com.nightlabs.editor2d.actions.ShowDefaultRenderAction; 26 27 28 public class EditorContextMenuProvider 29 extends ContextMenuProvider 30 { 31 public static final String CONTEXT_MENU_ID = "com.nightlabs.editor2d.outline.contextmenu"; 32 33 34 private ActionRegistry actionRegistry; 35 36 43 public EditorContextMenuProvider(EditPartViewer viewer, ActionRegistry registry) { 44 super(viewer); 45 if (registry == null) { 46 throw new IllegalArgumentException (); 47 } 48 actionRegistry = registry; 49 } 50 51 56 public void buildContextMenu(IMenuManager manager) 57 { 58 GEFActionConstants.addStandardActionGroups(manager); 60 61 IAction action; 62 63 action = getActionRegistry().getAction(ActionFactory.UNDO.getId()); 64 manager.appendToGroup(GEFActionConstants.GROUP_UNDO, action); 65 66 action = getActionRegistry().getAction(ActionFactory.REDO.getId()); 67 manager.appendToGroup(GEFActionConstants.GROUP_UNDO, action); 68 69 action = getActionRegistry().getAction(ActionFactory.PASTE.getId()); 70 if (action.isEnabled()) 71 manager.appendToGroup(GEFActionConstants.GROUP_EDIT, action); 72 73 action = getActionRegistry().getAction(ActionFactory.DELETE.getId()); 74 if (action.isEnabled()) 75 manager.appendToGroup(GEFActionConstants.GROUP_EDIT, action); 76 77 action = getActionRegistry().getAction(GEFActionConstants.DIRECT_EDIT); 78 if (action.isEnabled()) 79 manager.appendToGroup(GEFActionConstants.GROUP_EDIT, action); 80 81 MenuManager viewsubmenu = new MenuManager(EditorPlugin.getResourceString("menu_view")); 83 buildViewSubMenu(viewsubmenu); 84 if (!viewsubmenu.isEmpty()) 85 manager.appendToGroup(GEFActionConstants.GROUP_REST, viewsubmenu); 86 87 MenuManager editsubmenu = new MenuManager(EditorPlugin.getResourceString("menu.edit")); 89 buildEditSubMenu(editsubmenu); 90 if (!editsubmenu.isEmpty()) 91 manager.appendToGroup(GEFActionConstants.GROUP_REST, editsubmenu); 92 93 MenuManager alignSubMenu = new MenuManager(EditorPlugin.getResourceString("menu.align")); 95 buildAlignSubMenu(alignSubMenu); 96 if (!alignSubMenu.isEmpty()) 97 manager.appendToGroup(GEFActionConstants.GROUP_REST, alignSubMenu); 98 99 } 102 103 protected IAction getAction(String actionId) { 104 return actionRegistry.getAction(actionId); 105 } 106 107 protected ActionRegistry getActionRegistry() { 108 return actionRegistry; 109 } 110 111 protected void setActionRegistry(ActionRegistry registry) { 112 actionRegistry = registry; 113 } 114 115 protected void buildViewSubMenu(MenuManager menuMan) 116 { 117 IAction action = getActionRegistry().getAction(ShowDefaultRenderAction.ID); 118 if (action.isEnabled()) 119 menuMan.add(action); 120 } 121 122 protected void buildEditSubMenu(MenuManager menuMan) 123 { 124 IAction action = getActionRegistry().getAction(EditShapeAction.ID); 126 if (action.isEnabled()) 127 menuMan.add(action); 128 129 action = getActionRegistry().getAction(RotateAction.ID); 131 if (action.isEnabled()) 132 menuMan.add(action); 133 134 action = getActionRegistry().getAction(NormalSelectionAction.ID); 136 if (action.isEnabled()) 137 menuMan.add(action); 138 139 action = getActionRegistry().getAction(ResetRotationCenterAction.ID); 141 menuMan.add(action); 144 } 145 146 protected void buildAlignSubMenu(MenuManager menuMan) 147 { 148 IAction action = getActionRegistry().getAction(GEFActionConstants.ALIGN_LEFT); 149 if (action.isEnabled()) 150 menuMan.add(action); 151 152 action = getActionRegistry().getAction(GEFActionConstants.ALIGN_CENTER); 153 if (action.isEnabled()) 154 menuMan.add(action); 155 156 action = getActionRegistry().getAction(GEFActionConstants.ALIGN_RIGHT); 157 if (action.isEnabled()) 158 menuMan.add(action); 159 160 menuMan.add(new Separator()); 161 162 action = getActionRegistry().getAction(GEFActionConstants.ALIGN_TOP); 163 if (action.isEnabled()) 164 menuMan.add(action); 165 166 action = getActionRegistry().getAction(GEFActionConstants.ALIGN_MIDDLE); 167 if (action.isEnabled()) 168 menuMan.add(action); 169 170 action = getActionRegistry().getAction(GEFActionConstants.ALIGN_BOTTOM); 171 if (action.isEnabled()) 172 menuMan.add(action); 173 } 174 175 } 176
| Popular Tags
|