package com.aptana.ide.editor.yml.actions; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; import org.eclipse.ui.actions.ActionGroup; import org.eclipse.ui.texteditor.ITextEditor; import org.eclipse.ui.texteditor.IUpdate; public class YMLActionGroup extends ActionGroup { /** * Pop-up menu: id of the source sub menu (value <code>com.aptana.ide.editor.yml.source.menu</code>). * * @since 1.0.0 */ public static final String MENU_ID= "com.aptana.ide.editor.yml.source.menu"; //$NON-NLS-1$ /** * Pop-up menu: id of the comment group of the source sub menu (value * <code>commentGroup</code>). * * TODO: Make API */ private static final String GROUP_COMMENT= "commentGroup"; //$NON-NLS-1$ private ITextEditor fEditor; private String fGroupName; public YMLActionGroup(ITextEditor editor, String groupName) { fEditor= editor; fGroupName= groupName; } public void fillContextMenu(IMenuManager menu) { super.fillContextMenu(menu); String menuText= "Source";//ActionMessages.SourceMenu_label; IMenuManager subMenu= new MenuManager(menuText, MENU_ID); int added= 0; if (isEditorOwner()) { added= fillEditorSubMenu(subMenu); } else { added= fillViewSubMenu(subMenu); } if (added > 0) menu.appendToGroup(fGroupName, subMenu); } private int fillEditorSubMenu(IMenuManager source) { int added= 0; source.add(new Separator(GROUP_COMMENT)); added+= addEditorAction(source, "ToggleComment"); //$NON-NLS-1$ return added; } private int fillViewSubMenu(IMenuManager source) { int added= 0; source.add(new Separator(GROUP_COMMENT)); return added; } private int addEditorAction(IMenuManager menu, String actionID) { if (fEditor == null) return 0; IAction action= fEditor.getAction(actionID); if (action == null) return 0; if (action instanceof IUpdate) ((IUpdate)action).update(); if (action.isEnabled()) { menu.add(action); return 1; } return 0; } private boolean isEditorOwner() { return fEditor != null; } }