@Override public void run() { try { getPage().showView("org.eclipse.ui.views.PropertySheet"); } catch (PartInitException exception) { MindstormsEditorPlugin.INSTANCE.log(exception); } }
/** * This populates the pop-up menu before it appears. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ @Override public void menuAboutToShow(IMenuManager menuManager) { super.menuAboutToShow(menuManager); MenuManager submenuManager = null; submenuManager = new MenuManager(MindstormsEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); populateManager(submenuManager, createChildSubmenuActions, null); populateManager(submenuManager, createChildActions, null); menuManager.insertBefore("edit", submenuManager); submenuManager = new MenuManager(MindstormsEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); populateManager(submenuManager, createSiblingSubmenuActions, null); populateManager(submenuManager, createSiblingActions, null); menuManager.insertBefore("edit", submenuManager); }
/** * This adds to the menu bar a menu and some separators for editor additions, as well as the * sub-menus for object creation items. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ @Override public void contributeToMenu(IMenuManager menuManager) { super.contributeToMenu(menuManager); IMenuManager submenuManager = new MenuManager( MindstormsEditorPlugin.INSTANCE.getString("_UI_MindstormsEditor_menu"), "fr.obeo.dsl.tuto.mindstormsMenuID"); menuManager.insertAfter("additions", submenuManager); submenuManager.add(new Separator("settings")); submenuManager.add(new Separator("actions")); submenuManager.add(new Separator("additions")); submenuManager.add(new Separator("additions-end")); // Prepare for CreateChild item addition or removal. // createChildMenuManager = new MenuManager(MindstormsEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); submenuManager.insertBefore("additions", createChildMenuManager); // Prepare for CreateSibling item addition or removal. // createSiblingMenuManager = new MenuManager(MindstormsEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); submenuManager.insertBefore("additions", createSiblingMenuManager); // Force an update because Eclipse hides empty menus now. // submenuManager.addMenuListener( new IMenuListener() { public void menuAboutToShow(IMenuManager menuManager) { menuManager.updateAll(true); } }); addGlobalActions(submenuManager); }
/** * This is the action bar contributor for the Mindstorms model editor. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ public class MindstormsActionBarContributor extends EditingDomainActionBarContributor implements ISelectionChangedListener { /** * * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ public static final String copyright = "Copyright (c) 2016 Obeo.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\n\r\nContributors:\r\n Obeo - initial API and implementation"; /** * This keeps track of the active editor. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ protected IEditorPart activeEditorPart; /** * This keeps track of the current selection provider. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ protected ISelectionProvider selectionProvider; /** * This action opens the Properties view. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ protected IAction showPropertiesViewAction = new Action(MindstormsEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) { @Override public void run() { try { getPage().showView("org.eclipse.ui.views.PropertySheet"); } catch (PartInitException exception) { MindstormsEditorPlugin.INSTANCE.log(exception); } } }; /** * This action refreshes the viewer of the current editor if the editor implements {@link * org.eclipse.emf.common.ui.viewer.IViewerProvider}. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ protected IAction refreshViewerAction = new Action(MindstormsEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) { @Override public boolean isEnabled() { return activeEditorPart instanceof IViewerProvider; } @Override public void run() { if (activeEditorPart instanceof IViewerProvider) { Viewer viewer = ((IViewerProvider) activeEditorPart).getViewer(); if (viewer != null) { viewer.refresh(); } } } }; /** * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to * each descriptor generated for the current selection by the item provider. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ protected Collection<IAction> createChildActions; /** * This will contain a map of {@link org.eclipse.emf.edit.ui.action.CreateChildAction}s, keyed by * sub-menu text. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ protected Map<String, Collection<IAction>> createChildSubmenuActions; /** * This is the menu manager into which menu contribution items should be added for CreateChild * actions. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ protected IMenuManager createChildMenuManager; /** * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding * to each descriptor generated for the current selection by the item provider. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ protected Collection<IAction> createSiblingActions; /** * This will contain a map of {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction}s, keyed * by submenu text. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ protected Map<String, Collection<IAction>> createSiblingSubmenuActions; /** * This is the menu manager into which menu contribution items should be added for CreateSibling * actions. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ protected IMenuManager createSiblingMenuManager; /** * This creates an instance of the contributor. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ public MindstormsActionBarContributor() { super(ADDITIONS_LAST_STYLE); loadResourceAction = new LoadResourceAction(); validateAction = new ValidateAction(); controlAction = new ControlAction(); } /** * This adds Separators for editor additions to the tool bar. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ @Override public void contributeToToolBar(IToolBarManager toolBarManager) { toolBarManager.add(new Separator("mindstorms-settings")); toolBarManager.add(new Separator("mindstorms-additions")); } /** * This adds to the menu bar a menu and some separators for editor additions, as well as the * sub-menus for object creation items. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ @Override public void contributeToMenu(IMenuManager menuManager) { super.contributeToMenu(menuManager); IMenuManager submenuManager = new MenuManager( MindstormsEditorPlugin.INSTANCE.getString("_UI_MindstormsEditor_menu"), "fr.obeo.dsl.tuto.mindstormsMenuID"); menuManager.insertAfter("additions", submenuManager); submenuManager.add(new Separator("settings")); submenuManager.add(new Separator("actions")); submenuManager.add(new Separator("additions")); submenuManager.add(new Separator("additions-end")); // Prepare for CreateChild item addition or removal. // createChildMenuManager = new MenuManager(MindstormsEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); submenuManager.insertBefore("additions", createChildMenuManager); // Prepare for CreateSibling item addition or removal. // createSiblingMenuManager = new MenuManager(MindstormsEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); submenuManager.insertBefore("additions", createSiblingMenuManager); // Force an update because Eclipse hides empty menus now. // submenuManager.addMenuListener( new IMenuListener() { public void menuAboutToShow(IMenuManager menuManager) { menuManager.updateAll(true); } }); addGlobalActions(submenuManager); } /** * When the active editor changes, this remembers the change and registers with it as a selection * provider. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ @Override public void setActiveEditor(IEditorPart part) { super.setActiveEditor(part); activeEditorPart = part; // Switch to the new selection provider. // if (selectionProvider != null) { selectionProvider.removeSelectionChangedListener(this); } if (part == null) { selectionProvider = null; } else { selectionProvider = part.getSite().getSelectionProvider(); selectionProvider.addSelectionChangedListener(this); // Fake a selection changed event to update the menus. // if (selectionProvider.getSelection() != null) { selectionChanged( new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection())); } } } /** * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener}, handling {@link * org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings * that can be added to the selected object and updating the menus accordingly. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ public void selectionChanged(SelectionChangedEvent event) { // Remove any menu items for old selection. // if (createChildMenuManager != null) { depopulateManager(createChildMenuManager, createChildSubmenuActions); depopulateManager(createChildMenuManager, createChildActions); } if (createSiblingMenuManager != null) { depopulateManager(createSiblingMenuManager, createSiblingSubmenuActions); depopulateManager(createSiblingMenuManager, createSiblingActions); } // Query the new selection for appropriate new child/sibling descriptors // Collection<?> newChildDescriptors = null; Collection<?> newSiblingDescriptors = null; ISelection selection = event.getSelection(); if (selection instanceof IStructuredSelection && ((IStructuredSelection) selection).size() == 1) { Object object = ((IStructuredSelection) selection).getFirstElement(); EditingDomain domain = ((IEditingDomainProvider) activeEditorPart).getEditingDomain(); newChildDescriptors = domain.getNewChildDescriptors(object, null); newSiblingDescriptors = domain.getNewChildDescriptors(null, object); } // Generate actions for selection; populate and redraw the menus. // createChildActions = generateCreateChildActions(newChildDescriptors, selection); createChildSubmenuActions = extractSubmenuActions(createChildActions); createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection); createSiblingSubmenuActions = extractSubmenuActions(createSiblingActions); if (createChildMenuManager != null) { populateManager(createChildMenuManager, createChildSubmenuActions, null); populateManager(createChildMenuManager, createChildActions, null); createChildMenuManager.update(true); } if (createSiblingMenuManager != null) { populateManager(createSiblingMenuManager, createSiblingSubmenuActions, null); populateManager(createSiblingMenuManager, createSiblingActions, null); createSiblingMenuManager.update(true); } } /** * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in * <code>descriptors</code>, and returns the collection of these actions. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ protected Collection<IAction> generateCreateChildActions( Collection<?> descriptors, ISelection selection) { Collection<IAction> actions = new ArrayList<IAction>(); if (descriptors != null) { for (Object descriptor : descriptors) { actions.add(new CreateChildAction(activeEditorPart, selection, descriptor)); } } return actions; } /** * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in * <code>descriptors</code>, and returns the collection of these actions. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ protected Collection<IAction> generateCreateSiblingActions( Collection<?> descriptors, ISelection selection) { Collection<IAction> actions = new ArrayList<IAction>(); if (descriptors != null) { for (Object descriptor : descriptors) { actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor)); } } return actions; } /** * This populates the specified <code>manager</code> with {@link * org.eclipse.jface.action.ActionContributionItem}s based on the {@link * org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection, by * inserting them before the specified contribution item <code>contributionID</code>. If <code> * contributionID</code> is <code>null</code>, they are simply added. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ protected void populateManager( IContributionManager manager, Collection<? extends IAction> actions, String contributionID) { if (actions != null) { for (IAction action : actions) { if (contributionID != null) { manager.insertBefore(contributionID, action); } else { manager.add(action); } } } } /** * This removes from the specified <code>manager</code> all {@link * org.eclipse.jface.action.ActionContributionItem}s based on the {@link * org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ protected void depopulateManager( IContributionManager manager, Collection<? extends IAction> actions) { if (actions != null) { IContributionItem[] items = manager.getItems(); for (int i = 0; i < items.length; i++) { // Look into SubContributionItems // IContributionItem contributionItem = items[i]; while (contributionItem instanceof SubContributionItem) { contributionItem = ((SubContributionItem) contributionItem).getInnerItem(); } // Delete the ActionContributionItems with matching action. // if (contributionItem instanceof ActionContributionItem) { IAction action = ((ActionContributionItem) contributionItem).getAction(); if (actions.contains(action)) { manager.remove(contributionItem); } } } } } /** * This extracts those actions in the <code>submenuActions</code> collection whose text is * qualified and returns a map of these actions, keyed by submenu text. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ protected Map<String, Collection<IAction>> extractSubmenuActions( Collection<IAction> createActions) { Map<String, Collection<IAction>> createSubmenuActions = new LinkedHashMap<String, Collection<IAction>>(); if (createActions != null) { for (Iterator<IAction> actions = createActions.iterator(); actions.hasNext(); ) { IAction action = actions.next(); StringTokenizer st = new StringTokenizer(action.getText(), "|"); if (st.countTokens() == 2) { String text = st.nextToken().trim(); Collection<IAction> submenuActions = createSubmenuActions.get(text); if (submenuActions == null) { createSubmenuActions.put(text, submenuActions = new ArrayList<IAction>()); } action.setText(st.nextToken().trim()); submenuActions.add(action); actions.remove(); } } } return createSubmenuActions; } /** * This populates the specified <code>manager</code> with {@link * org.eclipse.jface.action.MenuManager}s containing {@link * org.eclipse.jface.action.ActionContributionItem}s based on the {@link * org.eclipse.jface.action.IAction}s contained in the <code>submenuActions</code> collection, by * inserting them before the specified contribution item <code>contributionID</code>. If <code> * contributionID</code> is <code>null</code>, they are simply added. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ protected void populateManager( IContributionManager manager, Map<String, Collection<IAction>> submenuActions, String contributionID) { if (submenuActions != null) { for (Map.Entry<String, Collection<IAction>> entry : submenuActions.entrySet()) { MenuManager submenuManager = new MenuManager(entry.getKey()); if (contributionID != null) { manager.insertBefore(contributionID, submenuManager); } else { manager.add(submenuManager); } populateManager(submenuManager, entry.getValue(), null); } } } /** * This removes from the specified <code>manager</code> all {@link * org.eclipse.jface.action.MenuManager}s and their {@link * org.eclipse.jface.action.ActionContributionItem}s based on the {@link * org.eclipse.jface.action.IAction}s contained in the <code>submenuActions</code> map. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ protected void depopulateManager( IContributionManager manager, Map<String, Collection<IAction>> submenuActions) { if (submenuActions != null) { IContributionItem[] items = manager.getItems(); for (int i = 0; i < items.length; i++) { IContributionItem contributionItem = items[i]; if (contributionItem instanceof MenuManager) { MenuManager submenuManager = (MenuManager) contributionItem; if (submenuActions.containsKey(submenuManager.getMenuText())) { depopulateManager(submenuManager, submenuActions.get(contributionItem)); manager.remove(contributionItem); } } } } } /** * This populates the pop-up menu before it appears. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ @Override public void menuAboutToShow(IMenuManager menuManager) { super.menuAboutToShow(menuManager); MenuManager submenuManager = null; submenuManager = new MenuManager(MindstormsEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); populateManager(submenuManager, createChildSubmenuActions, null); populateManager(submenuManager, createChildActions, null); menuManager.insertBefore("edit", submenuManager); submenuManager = new MenuManager(MindstormsEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); populateManager(submenuManager, createSiblingSubmenuActions, null); populateManager(submenuManager, createSiblingActions, null); menuManager.insertBefore("edit", submenuManager); } /** * This inserts global actions before the "additions-end" separator. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ @Override protected void addGlobalActions(IMenuManager menuManager) { menuManager.insertAfter("additions-end", new Separator("ui-actions")); menuManager.insertAfter("ui-actions", showPropertiesViewAction); refreshViewerAction.setEnabled(refreshViewerAction.isEnabled()); menuManager.insertAfter("ui-actions", refreshViewerAction); super.addGlobalActions(menuManager); } /** * This ensures that a delete action will clean up all references to deleted objects. * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ @Override protected boolean removeAllReferencesOnDelete() { return true; } }