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

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

Introduction

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

Prototype

void update(boolean force);

Source Link

Document

Updates this manager's underlying widget(s) with any changes which have been made to it or its items.

Usage

From source file:org.jboss.tools.openshift.internal.common.ui.utils.UIUtils.java

License:Open Source License

/**
 * Register a {@link ContributionManager}. The contribution manager gets
 * unregistered on control disposal// ww w.  j  a  v  a  2s . c  o m
 * 
 * @param id
 *            the id
 * @param contributionManager
 *            the contribution manager
 * @param control
 *            the control
 * 
 * @see ContributionManager
 * @see IMenuService
 * @see DisposeListener
 */
public static void registerContributionManager(final String id, final IContributionManager contributionManager,
        final Control control) {
    Assert.isNotNull(id);
    Assert.isNotNull(contributionManager);
    Assert.isTrue(control != null && !control.isDisposed());

    final IMenuService menuService = (IMenuService) PlatformUI.getWorkbench().getService(IMenuService.class);
    menuService.populateContributionManager((ContributionManager) contributionManager, id);
    contributionManager.update(true);
    control.addDisposeListener(new DisposeListener() {
        @Override
        public void widgetDisposed(DisposeEvent e) {
            menuService.releaseContributions((ContributionManager) contributionManager);
        }
    });
}

From source file:org.jkiss.dbeaver.ui.controls.StatusLineContributionItemEx.java

License:Apache License

private void updateUI() {
    setVisible(true);//from   w  w  w.  j a  v  a 2  s.  c  om
    IContributionManager contributionManager = getParent();

    if (contributionManager != null) {
        contributionManager.update(true);
    }
}

From source file:org.kalypso.ui.internal.layoutwizard.map.MapLayoutPart.java

License:Open Source License

/**
 * Fills the toolbar according to the configuration.
 *///from   ww  w.  j a  v  a  2s  .  co  m
private void fillMapToolbar(final IContributionManager manager, final Arguments toolbarArguments) {
    final String[] urisKeys = toolbarArguments.findAllKeys(PROP_MAP_TOOLBAR_URI);

    for (final String key : urisKeys) {
        final String uri = toolbarArguments.getProperty(key);

        // REMARK: we use a general eclipse mechanism to populate the toolbar here
        // we only use 'toolbar'-uris at the moment, maybe we can later add popup and menu.
        if (uri.startsWith("toolbar")) //$NON-NLS-1$
            ContributionUtils.populateContributionManager(getContext(), manager, uri);
    }

    manager.update(true);
}

From source file:org.netxms.ui.eclipse.console.ServerNameStatusLineItem.java

License:Open Source License

/**
 * Sets the text to be displayed in the status line.
 * // ww w .j  av a 2  s.com
 * @param text the text to be displayed, must not be <code>null</code>
 */
public void setServerInfo(String name, String color) {
    serverName = name;
    serverColor = (color != null) ? ColorConverter.parseColorDefinition(color) : null;

    if (label != null && !label.isDisposed()) {
        label.setText(serverName);
        setColors();
    }

    // Always update if using 'CALC_TRUE_WIDTH'
    if (!isVisible() || charWidth == CALC_TRUE_WIDTH) {
        setVisible(true);
        IContributionManager contributionManager = getParent();
        if (contributionManager != null) {
            contributionManager.update(true);
        }
    }
}

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

License:Open Source License

/**
 * Removes all contributions of this registry from the CoolBar of the
 * given coolBarManager. Ideally this is done by making the contributions
 * invisible, so Eclipse can remember their positions. However
 * this is currently not possible and thats why this method
 * removes the affected contributions from the CoolBar.
 * This behaviour can is configured via {@link #useRemoveInsteadOfUnvisibleWorkaround}.
 *
 * @param coolBarManager The {@link ICoolBarManager} where the contributions of this registry should be removed from.
 *///from  w  w  w. j  ava 2 s.c o m
public void removeAllFromCoolBar(ICoolBarManager coolBarManager) {
    if (Display.getCurrent() == null)
        throw new IllegalStateException("This method must be called on the UI thread!"); //$NON-NLS-1$

    IContributionManager coolBarContributionManager = coolBarManager;
    if (coolBarManager instanceof SubCoolBarManager)
        coolBarContributionManager = ((SubCoolBarManager) coolBarManager).getParent();

    if (!useRemoveInsteadOfUnvisibleWorkaround)
        ((SubCoolBarManager) coolBarManager).setVisible(false);

    String baseID = this.getClass().getName();
    String orphanageToolbarID = baseID + '.' + ORPHANAGE_TOOLBAR_ID;
    // We use a temporary MenuManager which will be translated into the real
    // coolbar afterwards.
    MenuManager tmpMenu = new MenuManager();
    ActionVisibilityDecider backupActionVisibilityDecider = this.actionVisibilityDecider;
    try {
        this.actionVisibilityDecider = actionVisibilityDeciderAlwaysVisible;
        contribute(tmpMenu, ContributionManagerKind.coolBar);
    } finally {
        this.actionVisibilityDecider = backupActionVisibilityDecider;
    }

    // convert the existing items of the real coolbar-manager into a Map - the new items might
    // already exist because of Eclipse's workspace memory (and then the old ones need to be
    // manipulated - new ones would be ignored because of a bug/feature in the EclipseRCP)
    //      IContributionItem[] coolBarItems = ((SubCoolBarManager)coolBarManager).getParent().getItems();
    IContributionItem[] coolBarItems = coolBarContributionManager.getItems();

    // key: String itemId
    // value: IXContributionItem
    Map<String, IContributionItem> coolBarItemMap = new HashMap<String, IContributionItem>(coolBarItems.length);
    for (int i = 0; i < coolBarItems.length; ++i) {
        IContributionItem coolBarItem = coolBarItems[i];
        coolBarItemMap.put(coolBarItem.getId(), coolBarItem);
        logger.debug("Having " + coolBarItem.getId() + " in CoolBar"); //$NON-NLS-1$ //$NON-NLS-2$
    }

    ToolBarContributionItem orphanageToolBarContributionItem = getToolBarContributionItem(
            coolBarItemMap.get(orphanageToolbarID));
    if (orphanageToolBarContributionItem != null) {
        IContributionItem item = coolBarContributionManager.find(orphanageToolBarContributionItem.getId());
        if (item != null) {
            if (useRemoveInsteadOfUnvisibleWorkaround) {
                coolBarContributionManager.remove(orphanageToolBarContributionItem.getId());
            } else {
                orphanageToolBarContributionItem.setVisible(false);
                item.setVisible(false);
            }
        }
    }

    // Now, we iterate all the "precompiled" items and contribute them to the coolbar
    IContributionItem[] tmpItems = tmpMenu.getItems();
    for (int i = 0; i < tmpItems.length; ++i) {
        IContributionItem tmpItem = tmpItems[i];

        // Test for items that are already in the parent
        if (tmpItem instanceof IMenuManager) {
            IMenuManager tmpSubMenu = (IMenuManager) tmpItem;
            String tmpSubMenuID = baseID + '.' + tmpSubMenu.getId();

            ToolBarContributionItem toolBarContributionItem = getToolBarContributionItem(
                    coolBarItemMap.get(tmpSubMenuID));
            if (toolBarContributionItem != null) {
                IContributionItem item = coolBarContributionManager.find(toolBarContributionItem.getId());
                if (item != null) {
                    if (useRemoveInsteadOfUnvisibleWorkaround) {
                        coolBarContributionManager.remove(tmpSubMenuID);
                    } else {
                        toolBarContributionItem.setVisible(false);
                        item.setVisible(false);
                    }
                }
            }
        }
    }

    try {
        coolBarContributionManager.update(true);
    } catch (Exception x) {
        // https://bugs.eclipse.org/bugs/show_bug.cgi?id=239945
        logger.error("CoolBarManager.update failed: " + x.getLocalizedMessage(), x); //$NON-NLS-1$
    }
}

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  va2s . c  o 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:uk.ac.gda.ui.status.LinkContributionItem.java

License:Open Source License

private void updateManager() {
    if (this.text.length() == 0) {
        if (isVisible()) {
            setVisible(false);/*  w w w . jav a  2s  . c om*/
            IContributionManager contributionManager = getParent();

            if (contributionManager != null) {
                contributionManager.update(true);
            }
        }
    } else {
        if (!isVisible()) {
            setVisible(true);
            IContributionManager contributionManager = getParent();

            if (contributionManager != null) {
                contributionManager.update(true);
            }
        }
    }
}