Example usage for org.eclipse.jface.action IContributionManager add

List of usage examples for org.eclipse.jface.action IContributionManager add

Introduction

In this page you can find the example usage for org.eclipse.jface.action IContributionManager add.

Prototype

void add(IContributionItem item);

Source Link

Document

Adds a contribution item to this manager.

Usage

From source file:org.nightlabs.base.ui.action.registry.AbstractActionRegistry.java

License:Open Source License

/**
 * This method contributes WITHOUT removing items before.
 *
 * @param contributionManager//  w w  w  .  j  a  v  a 2s  . co m
 * @param kind
 * @return Returns the number of visible contribution items (i.e. actions) that have been added.
 */
protected Map<Class<? extends ItemDescriptor>, List<ItemDescriptor>> contribute(
        IContributionManager contributionManager, ContributionManagerKind kind) {
    Map<Class<? extends ItemDescriptor>, List<ItemDescriptor>> visibleItemDescriptors = new HashMap<Class<? extends ItemDescriptor>, List<ItemDescriptor>>();
    ActionVisibilityContext actionVisibilityContext = new ActionVisibilityContext(kind);
    List<ItemDescriptor> menuSorted = contributionManagerKind2menuSorted.get(kind);

    boolean firstRun = menuSorted == null;
    LinkedList<ItemDescriptor> menuRaw = null;
    int lastMenuRawSize = 0;
    if (firstRun) {
        menuRaw = new LinkedList<ItemDescriptor>(this.menuRaw);
        menuRaw.add(new SeparatorDescriptor("additions")); //$NON-NLS-1$
        lastMenuRawSize = menuRaw.size();
        menuSorted = new LinkedList<ItemDescriptor>();
    }

    //      contributionManager.removeAll();

    while ((firstRun && !menuRaw.isEmpty()) || !firstRun) {
        for (Iterator<?> itTopLevel = (firstRun ? menuRaw : menuSorted).iterator(); itTopLevel.hasNext();) {
            ItemDescriptor item = (ItemDescriptor) itTopLevel.next();
            if (item instanceof ActionDescriptor) {
                ActionDescriptor ad = (ActionDescriptor) item;

                String path = getPath(ad, kind);

                IContributionItem anchor = path == null ? null : findUsingPath(contributionManager, path);
                if (anchor != null) {
                    if (actionVisibilityDecider.isVisible(actionVisibilityContext, ad)) {
                        addVisibleItemDescriptor(visibleItemDescriptors, ActionDescriptor.class, ad);

                        if (anchor instanceof MenuManager) {
                            if (ad.getAction() != null)
                                ((MenuManager) anchor).add(ad.getAction());
                            else if (ad.getContributionItem() != null)
                                ((MenuManager) anchor).add(ad.getContributionItem());
                        } else {
                            if (ad.getAction() != null)
                                ((ContributionItem) anchor).getParent().insertAfter(anchor.getId(),
                                        ad.getAction());
                            else if (ad.getContributionItem() != null)
                                ((ContributionItem) anchor).getParent().insertAfter(anchor.getId(),
                                        ad.getContributionItem());
                        }
                    }

                    if (firstRun) {
                        menuSorted.add(item);
                        itTopLevel.remove();
                    }
                }
            } else if (item instanceof SeparatorDescriptor) {
                addVisibleItemDescriptor(visibleItemDescriptors, SeparatorDescriptor.class, item);

                SeparatorDescriptor s = (SeparatorDescriptor) item;
                String path = s.getPath();
                IContributionItem anchor = path == null ? null : findUsingPath(contributionManager, path);
                if (path == null || anchor != null) {
                    Separator separator = new Separator(s.getName());

                    if (anchor == null) {
                        if (contributionManager.find(item.getID()) == null)
                            contributionManager.add(separator);
                    } else {
                        if (((ContributionItem) anchor).getParent().find(item.getID()) == null)
                            ((ContributionItem) anchor).getParent().insertAfter(anchor.getId(), separator);
                    }

                    if (firstRun) {
                        menuSorted.add(item);
                        itTopLevel.remove();
                    }
                }
            } else if (item instanceof GroupMarkerDescriptor) {
                addVisibleItemDescriptor(visibleItemDescriptors, GroupMarkerDescriptor.class, item);

                GroupMarkerDescriptor gm = (GroupMarkerDescriptor) item;
                String path = gm.getPath();
                IContributionItem anchor = path == null ? null : findUsingPath(contributionManager, path);
                if (path == null || anchor != null) {
                    GroupMarker groupMarker = new GroupMarker(gm.getName());

                    if (anchor == null) {
                        if (contributionManager.find(item.getID()) == null)
                            contributionManager.add(groupMarker);
                    } else {
                        if (((ContributionItem) anchor).getParent().find(item.getID()) == null)
                            ((ContributionItem) anchor).getParent().insertAfter(anchor.getId(), groupMarker);
                    }

                    if (firstRun) {
                        menuSorted.add(item);
                        itTopLevel.remove();
                    }
                }
            } else if (item instanceof MenuDescriptor) {
                addVisibleItemDescriptor(visibleItemDescriptors, MenuDescriptor.class, item);
                MenuDescriptor md = (MenuDescriptor) item;
                String path = md.getPath();

                // already existing in the contribution-manager?
                IContributionItem anchor = path == null ? null : findUsingPath(contributionManager, path);
                if (path == null || anchor != null) {
                    MenuManager subMenu = new MenuManager(md.getLabel(), md.getID());

                    for (Iterator<?> itSub = md.getSubItems().iterator(); itSub.hasNext();) {
                        Object obj = itSub.next();
                        if (obj instanceof SeparatorDescriptor) {
                            SeparatorDescriptor separator = (SeparatorDescriptor) obj;
                            subMenu.add(new Separator(separator.getName()));
                        } else if (obj instanceof GroupMarkerDescriptor) {
                            GroupMarkerDescriptor groupMarker = (GroupMarkerDescriptor) obj;
                            subMenu.add(new GroupMarker(groupMarker.getName()));
                        } else
                            throw new IllegalStateException(
                                    "SubItem of menu is neither a SeparatorDescriptor nor a GroupMarkerDescriptor but " //$NON-NLS-1$
                                            + obj.getClass().getName());
                    }

                    if (anchor == null) {
                        if (contributionManager.find(item.getID()) == null)
                            contributionManager.add(subMenu);
                    } else {
                        if (((ContributionItem) anchor).getParent().find(item.getID()) == null)
                            ((ContributionItem) anchor).getParent().insertAfter(anchor.getId(), subMenu);
                    }

                    if (firstRun) {
                        menuSorted.add(item);
                        itTopLevel.remove();
                    }
                }
            } else
                throw new IllegalStateException(
                        "Item in menuRaw of type " + item.getClass() + " is an instance of an unknown class!"); //$NON-NLS-1$ //$NON-NLS-2$
        }

        if (firstRun && (lastMenuRawSize == menuRaw.size())) {
            if (logger.isDebugEnabled()) {
                logger.debug("Could not add the following contributions to the menu (kind " + kind + "):"); //$NON-NLS-1$ //$NON-NLS-2$
                for (Iterator<ItemDescriptor> it = menuRaw.iterator(); it.hasNext();) {
                    ItemDescriptor item = it.next();
                    if (item instanceof ActionDescriptor) {
                        logger.debug("    Action with id=" + ((ActionDescriptor) item).getID()); //$NON-NLS-1$
                    } else if (item instanceof MenuDescriptor) {
                        logger.debug("    Menu with id=" + ((MenuDescriptor) item).getID()); //$NON-NLS-1$
                    } else if (item instanceof SeparatorDescriptor) {
                        logger.debug("    Separator with name=" + ((SeparatorDescriptor) item).getName()); //$NON-NLS-1$
                    } else if (item instanceof GroupMarkerDescriptor) {
                        logger.debug("    GroupMarker with name=" + ((GroupMarkerDescriptor) item).getName()); //$NON-NLS-1$
                    } else
                        logger.debug("    " + item); //$NON-NLS-1$
                }
            }
            break;
        }

        if (!firstRun)
            break;

        lastMenuRawSize = menuRaw.size();
    } // while ((firstRun && !menuRaw.isEmpty()) || !firstRun) {

    if (firstRun)
        contributionManagerKind2menuSorted.put(kind, menuSorted);

    // flatten the menus if we're contributing to the toolbar (which doesn't understand sub-menus)
    // the coolbar is handled by contributeToCoolBar(...) directly
    if (ContributionManagerKind.toolBar == kind) {
        IContributionItem[] items = contributionManager.getItems();
        contributionManager.removeAll();
        for (int i = 0; i < items.length; ++i) {
            IContributionItem item = items[i];
            if (item instanceof IMenuManager)
                addFlattenedMenu(contributionManager, null, (IMenuManager) item);
            else
                contributionManager.add(item);
        }
    }
    contributionManager.update(true);

    debugContributions(visibleItemDescriptors, kind, true);

    return visibleItemDescriptors;
}

From source file:org.nightlabs.base.ui.search.SearchContributionItem.java

License:Open Source License

@Override
public void fill(ToolBar parent, int index) {
    //      fillToolBar(parent, index);
    IContributionManager toolBarManager = getParent();

    String id1 = ToolBarContributionItemText.class.getName();
    toolBarManager.remove(id1);/*from w w w . j  a  va  2s .c  o  m*/
    toolBarManager.add(new ToolBarContributionItemText(id1));

    String id2 = ToolBarContributionItemButton.class.getName();
    toolBarManager.remove(id2);
    toolBarManager.add(new ToolBarContributionItemButton(id2));
}

From source file:org.nightlabs.base.ui.search.SearchContributionItem.java

License:Open Source License

@Override
public void fill(Menu menu, int index) {
    if (logger.isDebugEnabled())
        logger.debug("fill called for menu " + menu); //$NON-NLS-1$

    String id = SearchContributionItem.class.getName();
    if (getParent() != null) {
        IContributionManager parent = getParent();
        IContributionItem removedItem = parent.remove(id);
        if (removedItem != null) {
            if (logger.isDebugEnabled())
                logger.debug("item " + removedItem + " was removed from contributionManager " + parent); //$NON-NLS-1$ //$NON-NLS-2$
        }//from  ww  w .  ja v  a2s.c om

        IMenuManager menuManager = new MenuManager(
                Messages.getString("org.nightlabs.base.ui.search.SearchContributionItem.menu.search.title"), //$NON-NLS-1$
                id);

        Map<ISearchResultProviderFactory, ISearchResultProvider> factory2Instance = getUseCase()
                .getFactory2Instance();
        for (Map.Entry<ISearchResultProviderFactory, ISearchResultProvider> entry : factory2Instance
                .entrySet()) {
            ISearchResultProviderFactory factory = entry.getKey();
            MenuContributionItem item = new MenuContributionItem(factory);
            menuManager.add(item);
        }

        if (parent != null) {
            if (parent.find(IWorkbenchActionConstants.M_FILE) != null) {
                parent.insertAfter(IWorkbenchActionConstants.M_FILE, menuManager);
                if (logger.isDebugEnabled())
                    logger.debug("added contribution after file menu of contributionManager " + getParent()); //$NON-NLS-1$
            } else {
                parent.add(menuManager);
                if (logger.isDebugEnabled())
                    logger.debug("added contribution to the end of the contributionManager " + getParent()); //$NON-NLS-1$
            }
        } else {
            if (logger.isDebugEnabled())
                logger.info("getParent() == null, nothing contributed"); //$NON-NLS-1$
        }
    }
    if (logger.isDebugEnabled())
        logger.info("getParent() == null, nothing contributed"); //$NON-NLS-1$
    //      createMenu(menu);
}

From source file:org.nightlabs.editor2d.ui.EditorActionBarContributor.java

License:Open Source License

protected void addOrderActions(IContributionManager cm) {
    cm.add(getAction(ChangeOrderToLocalFront.ID));
    cm.add(getAction(ChangeOrderOneUp.ID));
    cm.add(getAction(ChangeOrderOneDown.ID));
    cm.add(getAction(ChangeOrderToLocalBack.ID));
}

From source file:org.nightlabs.editor2d.ui.EditorActionBarContributor.java

License:Open Source License

protected void addAlignActions(IContributionManager cm) {
    cm.add(getAction(GEFActionConstants.ALIGN_LEFT));
    cm.add(getAction(GEFActionConstants.ALIGN_CENTER));
    cm.add(getAction(GEFActionConstants.ALIGN_RIGHT));
    cm.add(new Separator());
    cm.add(getAction(GEFActionConstants.ALIGN_TOP));
    cm.add(getAction(GEFActionConstants.ALIGN_MIDDLE));
    cm.add(getAction(GEFActionConstants.ALIGN_BOTTOM));
    cm.add(new Separator());
    cm.add(getAction(GEFActionConstants.MATCH_WIDTH));
    cm.add(getAction(GEFActionConstants.MATCH_HEIGHT));
}

From source file:org.nightlabs.editor2d.ui.EditorActionBarContributor.java

License:Open Source License

protected void addZoomActions(IContributionManager cm) {
    IAction zoomInAction = getAction(GEFActionConstants.ZOOM_IN);
    zoomInAction.setImageDescriptor(SharedImages.getSharedImageDescriptor(EditorPlugin.getDefault(),
            EditorActionBarContributor.class, "ZoomIn")); //$NON-NLS-1$
    cm.add(zoomInAction);

    IAction zoomOutAction = getAction(GEFActionConstants.ZOOM_OUT);
    zoomOutAction.setImageDescriptor(SharedImages.getSharedImageDescriptor(EditorPlugin.getDefault(),
            EditorActionBarContributor.class, "ZoomOut")); //$NON-NLS-1$
    cm.add(zoomOutAction);//w w w .  j a  v a  2s  .co  m

    cm.add(getAction(ZoomAllAction.ID));
    cm.add(getAction(ZoomSelectionAction.ID));
    cm.add(getAction(ZoomPageAction.ID));
}

From source file:org.nightlabs.editor2d.ui.EditorActionBarContributor.java

License:Open Source License

protected void addBooleanShapeActions(IContributionManager cm) {
    cm.add(getAction(ShapeUnionAction.ID));
    cm.add(getAction(ShapeIntersectAction.ID));
    cm.add(getAction(ShapeSubtractAction.ID));
    cm.add(getAction(ShapeExclusiveOrAction.ID));
}

From source file:org.obeonetwork.dsl.uml2.editor.internal.UmlCommonActionProvider.java

License:Open Source License

/**
 * 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.
 * /*from ww w. j  a  v a  2 s.c  o  m*/
 * Code duplicated from UMLActionBarContributor
 * 
 * @see UMLActionBarContributor#populateManager
 */
private 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);
        }
    }
}

From source file:org.obeonetwork.dsl.uml2.editor.internal.UmlCommonActionProvider.java

License:Open Source License

/**
 * 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.
 * /* www .j a v a2  s  .c  om*/
 * Code duplicated from UMLActionBarContributor
 * 
 * @see UMLActionBarContributor#populateManager
 */
private 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);
            }
        }
    }
}

From source file:org.projectusus.ui.internal.coveredprojects.CoveredProjectsView.java

License:Open Source License

private void enableContributions(IContributionManager manager) {
    manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
}