Example usage for org.eclipse.jface.action IContributionItem isVisible

List of usage examples for org.eclipse.jface.action IContributionItem isVisible

Introduction

In this page you can find the example usage for org.eclipse.jface.action IContributionItem isVisible.

Prototype

boolean isVisible();

Source Link

Document

Returns whether this contribution item is visibile within its manager.

Usage

From source file:com.github.haixing_hu.swt.menu.MenuManagerEx.java

License:Open Source License

private boolean isChildVisible(IContributionItem item) {
    final Boolean v = getOverrides().getVisible(item);
    if (v != null) {
        return v.booleanValue();
    }//from  w w w.  j  a  va2 s .c  o m
    return item.isVisible();
}

From source file:com.isb.datamodeler.internal.ui.views.actions.workingset.CompoundContributionItem.java

License:Open Source License

public void fill(Menu menu, int index) {
    if (index == -1) {
        index = menu.getItemCount();/* w ww . jav  a 2  s.c  om*/
    }
    if (!dirty && menu.getParentItem() != null) {
        // insert a dummy item so that the parent item is not disabled
        new MenuItem(menu, SWT.NONE, index);
        return;
    }

    IContributionItem[] items = getContributionItemsToFill();
    for (int i = 0; i < items.length; i++) {
        IContributionItem item = items[i];
        int oldItemCount = menu.getItemCount();
        if (item.isVisible()) {
            item.fill(menu, index);
        }
        int newItemCount = menu.getItemCount();
        int numAdded = newItemCount - oldItemCount;
        index += numAdded;
    }
    dirty = false;
}

From source file:com.sap.dirigible.ide.ui.rap.managers.ContribItem.java

License:Open Source License

public boolean isVisible() {
    boolean visibleItem = false;
    if (toolBarManager != null) {
        IContributionItem[] contributionItems = toolBarManager.getItems();
        for (int i = 0; i < contributionItems.length && !visibleItem; i++) {
            IContributionItem contributionItem = contributionItems[i];
            if ((!contributionItem.isGroupMarker()) && (!contributionItem.isSeparator())
                    && (contributionItem.isVisible())) {
                visibleItem = true;//from   w ww.  j a  v a  2 s  . c om
            }
        }
    }

    return (visibleItem || super.isVisible());
}

From source file:com.sap.dirigible.ide.ui.rap.managers.CoolBarManager.java

License:Open Source License

public void update(final boolean force) {
    if ((isDirty() || force) && getControl2() != null) {
        refresh();// w w w  .  j ava2 s.c  om
        boolean changed = false;

        /*
         * Make a list of items including only those items that are visible.
         * Separators are being removed. Because we use only one Toolbar all
         * ToolBarContributionItems will be extracted in their IContribution
         * Items.
         */
        final IContributionItem[] items = getItems();
        final List<IContributionItem> visibleItems = new ArrayList<IContributionItem>(items.length);
        for (int i = 0; i < items.length; i++) {
            final IContributionItem item = items[i];
            if (item.isVisible()) {
                if (item instanceof IToolBarContributionItem) {
                    IToolBarContributionItem toolbarItem = (IToolBarContributionItem) item;
                    IToolBarManager toolBarManager = toolbarItem.getToolBarManager();
                    IContributionItem[] toolbarItems = toolBarManager.getItems();
                    for (int j = 0; j < toolbarItems.length; j++) {
                        final IContributionItem toolItem = toolbarItems[j];
                        if (toolItem.isVisible() && !toolItem.isSeparator()) {
                            visibleItems.add(toolItem);
                        }
                    }
                }
            }
        }

        /*
         * Make a list of ToolItem widgets in the tool bar for which there
         * is no current visible contribution item. These are the widgets to
         * be disposed. Dynamic items are also removed.
         */
        ToolItem[] toolItems = toolbar.getItems();
        final ArrayList<ToolItem> toolItemsToRemove = new ArrayList<ToolItem>(toolItems.length);
        for (int i = 0; i < toolItems.length; i++) {
            final Object data = toolItems[i].getData();
            if ((data == null) || (!visibleItems.contains(data))
                    || ((data instanceof IContributionItem) && ((IContributionItem) data).isDynamic())) {
                toolItemsToRemove.add(toolItems[i]);
            }
        }

        // Dispose of any items in the list to be removed.
        for (int i = toolItemsToRemove.size() - 1; i >= 0; i--) {
            ToolItem toolItem = (ToolItem) toolItemsToRemove.get(i);
            if (!toolItem.isDisposed()) {
                Control control = toolItem.getControl();
                if (control != null) {
                    toolItem.setControl(null);
                    control.dispose();
                }
                toolItem.dispose();
            }
        }

        // Add any new items by telling them to fill.
        toolItems = toolbar.getItems();
        IContributionItem sourceItem;
        IContributionItem destinationItem;
        int sourceIndex = 0;
        int destinationIndex = 0;
        final Iterator<IContributionItem> visibleItemItr = visibleItems.iterator();
        while (visibleItemItr.hasNext()) {
            sourceItem = visibleItemItr.next();

            // Retrieve the corresponding contribution item from SWT's
            // data.
            if (sourceIndex < toolItems.length) {
                destinationItem = (IContributionItem) toolItems[sourceIndex].getData();
            } else {
                destinationItem = null;
            }

            // The items match if they are equal or both separators.
            if (destinationItem != null) {
                if (sourceItem.equals(destinationItem)) {
                    sourceIndex++;
                    destinationIndex++;
                    sourceItem.update();
                    continue;
                } else if ((destinationItem.isSeparator()) && (sourceItem.isSeparator())) {
                    toolItems[sourceIndex].setData(sourceItem);
                    sourceIndex++;
                    destinationIndex++;
                    sourceItem.update();
                    continue;
                }
            }

            // Otherwise, a new item has to be added.
            final int start = toolbar.getItemCount();
            sourceItem.fill(toolbar, destinationIndex);
            final int newItems = toolbar.getItemCount() - start;
            // add the selection listener for the styling
            StylingSelectionAdapter listener = new StylingSelectionAdapter(HEADER_TOOLBAR_VARIANT);
            for (int i = 0; i < newItems; i++) {
                ToolItem item = toolbar.getItem(destinationIndex++);
                item.setData(sourceItem);
                item.addSelectionListener(listener);
            }
            changed = true;
        }

        // Remove any old widgets not accounted for.
        for (int i = toolItems.length - 1; i >= sourceIndex; i--) {
            final ToolItem item = toolItems[i];
            if (!item.isDisposed()) {
                Control control = item.getControl();
                if (control != null) {
                    item.setControl(null);
                    control.dispose();
                }
                item.dispose();
                changed = true;
            }
        }

        // Update wrap indices. only needed by a coolbar
        // updateWrapIndices();

        // Update the sizes.
        for (int i = 0; i < items.length; i++) {
            IContributionItem item = items[i];
            item.update(SIZE);
        }

        if (changed) {
            updateToolbarTabOrder();
        }

        // We are no longer dirty.
        setDirty(false);
        styleToolItems();
        toolbar.pack();
        toolbar.layout(true, true);
        manageOverflow();
    }
}

From source file:com.sap.dirigible.ide.ui.rap.managers.MenuBarManager.java

License:Open Source License

protected void update(final boolean force, final boolean recursive) {
    super.update(force, recursive);
    if (menuParent != null && (force || isDirty())) {
        disposeToolItems();//w w  w.ja v a2 s .co m
        IContributionItem[] items = getItems();
        if (items.length > 0 && menuParent != null) {
            for (int i = 0; i < items.length; i++) {
                IContributionItem item = items[i];
                if (item.isVisible()) {
                    makeEntry(item);
                }
            }
        }
        menuParent.layout(true, true);
    }
}

From source file:gov.nasa.ensemble.core.plan.editor.actions.AbstractCommandItemContributor.java

License:Open Source License

@Override
public void fill(Menu menu, int index) {
    dirty = true;//from  w  w w. j  a  va  2s .  com
    if (index == -1) {
        index = menu.getItemCount();
    }
    if (!dirty && menu.getParentItem() != null) {
        // insert a dummy item so that the parent item is not disabled
        new MenuItem(menu, SWT.NONE, index);
        return;
    }

    for (IContributionItem item : getItems()) {
        int oldItemCount = menu.getItemCount();
        if (item.isVisible()) {
            item.fill(menu, index);
        }
        int newItemCount = menu.getItemCount();
        int numAdded = newItemCount - oldItemCount;
        index += numAdded;
    }
    dirty = false;
}

From source file:net.enilink.komma.edit.ui.action.ActionMenuManager.java

License:Open Source License

public boolean isVisible() {
    IContributionItem[] items = getRealItems();
    for (int i = 0; i < items.length; i++) {
        IContributionItem item = items[i];
        if (!(item instanceof AbstractGroupMarker) && item.isVisible()) {
            return actionContributionItem.isVisible();
        }//w  w  w .  j  a v a  2 s .  c  o  m
    }
    return false;
}

From source file:net.sf.eclipsensis.editor.NSISActionContributor.java

License:Open Source License

private boolean showHideAction(IContributionManager manager, String id, boolean show) {
    IContributionItem item = manager.find(id);
    if (item != null) {
        if (item.isVisible() != show) {
            item.setVisible(show);//  ww  w.j ava 2s. c o m
            item.update();
            return true;
        }
    }
    return false;
}

From source file:net.yatomiya.e4.ui.workbench.renderers.swt.MenuManagerRenderer.java

License:Open Source License

/**
 * @param menuManager//from   ww w. j a  v a  2 s . c o  m
 * @param menuModel
 */
public void reconcileManagerToModel(MenuManager menuManager, MMenu menuModel) {
    List<MMenuElement> modelChildren = menuModel.getChildren();

    HashSet<MMenuItem> oldModelItems = new HashSet<>();
    HashSet<MMenu> oldMenus = new HashSet<>();
    HashSet<MMenuSeparator> oldSeps = new HashSet<>();
    for (MMenuElement itemModel : modelChildren) {
        if (OpaqueElementUtil.isOpaqueMenuSeparator(itemModel)) {
            oldSeps.add((MMenuSeparator) itemModel);
        } else if (OpaqueElementUtil.isOpaqueMenuItem(itemModel)) {
            oldModelItems.add((MMenuItem) itemModel);
        } else if (OpaqueElementUtil.isOpaqueMenu(itemModel)) {
            oldMenus.add((MMenu) itemModel);
        }
    }

    IContributionItem[] items = menuManager.getItems();
    for (int src = 0, dest = 0; src < items.length; src++, dest++) {
        IContributionItem item = items[src];

        if (item instanceof SubContributionItem) {
            // get the wrapped contribution item
            item = ((SubContributionItem) item).getInnerItem();
        }

        if (item instanceof MenuManager) {
            MenuManager childManager = (MenuManager) item;
            MMenu childModel = getMenuModel(childManager);
            if (childModel == null) {
                MMenu legacyModel = OpaqueElementUtil.createOpaqueMenu();
                legacyModel.setElementId(childManager.getId());
                legacyModel.setVisible(childManager.isVisible());
                legacyModel.setLabel(childManager.getMenuText());

                linkModelToManager(legacyModel, childManager);
                OpaqueElementUtil.setOpaqueItem(legacyModel, childManager);
                if (modelChildren.size() > dest) {
                    modelChildren.add(dest, legacyModel);
                } else {
                    modelChildren.add(legacyModel);
                }
                reconcileManagerToModel(childManager, legacyModel);
            } else {
                if (OpaqueElementUtil.isOpaqueMenu(childModel)) {
                    oldMenus.remove(childModel);
                }
                if (modelChildren.size() > dest) {
                    if (modelChildren.get(dest) != childModel) {
                        modelChildren.remove(childModel);
                        modelChildren.add(dest, childModel);
                    }
                } else {
                    modelChildren.add(childModel);
                }
                if (childModel instanceof MPopupMenu) {
                    if (((MPopupMenu) childModel).getContext() == null) {
                        IEclipseContext lclContext = getContext(menuModel);
                        if (lclContext != null) {
                            ((MPopupMenu) childModel)
                                    .setContext(lclContext.createChild(childModel.getElementId()));
                        }
                    }
                }

                if (childModel.getChildren().size() != childManager.getSize()) {
                    reconcileManagerToModel(childManager, childModel);
                }
            }
        } else if (item.isSeparator() || item.isGroupMarker()) {
            MMenuElement menuElement = getMenuElement(item);
            if (menuElement == null) {
                MMenuSeparator legacySep = OpaqueElementUtil.createOpaqueMenuSeparator();
                legacySep.setElementId(item.getId());
                legacySep.setVisible(item.isVisible());
                OpaqueElementUtil.setOpaqueItem(legacySep, item);
                linkModelToContribution(legacySep, item);
                if (modelChildren.size() > dest) {
                    modelChildren.add(dest, legacySep);
                } else {
                    modelChildren.add(legacySep);
                }
            } else if (OpaqueElementUtil.isOpaqueMenuSeparator(menuElement)) {
                MMenuSeparator legacySep = (MMenuSeparator) menuElement;
                oldSeps.remove(legacySep);
                if (modelChildren.size() > dest) {
                    if (modelChildren.get(dest) != legacySep) {
                        modelChildren.remove(legacySep);
                        modelChildren.add(dest, legacySep);
                    }
                } else {
                    modelChildren.add(legacySep);
                }
            }
        } else {
            MMenuElement menuElement = getMenuElement(item);
            if (menuElement == null) {
                MMenuItem legacyItem = OpaqueElementUtil.createOpaqueMenuItem();
                legacyItem.setElementId(item.getId());
                legacyItem.setVisible(item.isVisible());
                OpaqueElementUtil.setOpaqueItem(legacyItem, item);
                linkModelToContribution(legacyItem, item);
                if (modelChildren.size() > dest) {
                    modelChildren.add(dest, legacyItem);
                } else {
                    modelChildren.add(legacyItem);
                }
            } else if (OpaqueElementUtil.isOpaqueMenuItem(menuElement)) {
                MMenuItem legacyItem = (MMenuItem) menuElement;
                oldModelItems.remove(legacyItem);
                if (modelChildren.size() > dest) {
                    if (modelChildren.get(dest) != legacyItem) {
                        modelChildren.remove(legacyItem);
                        modelChildren.add(dest, legacyItem);
                    }
                } else {
                    modelChildren.add(legacyItem);
                }
            }
        }
    }
    if (!oldModelItems.isEmpty()) {
        modelChildren.removeAll(oldModelItems);
        for (MMenuItem model : oldModelItems) {
            IContributionItem ici = (IContributionItem) OpaqueElementUtil.getOpaqueItem(model);
            clearModelToContribution(model, ici);
        }
    }
    if (!oldMenus.isEmpty()) {
        modelChildren.removeAll(oldMenus);
        for (MMenu oldMenu : oldMenus) {
            MenuManager oldManager = getManager(oldMenu);
            clearModelToManager(oldMenu, oldManager);
        }
    }
    if (!oldSeps.isEmpty()) {
        modelChildren.removeAll(oldSeps);
        for (MMenuSeparator model : oldSeps) {
            IContributionItem item = (IContributionItem) OpaqueElementUtil.getOpaqueItem(model);
            clearModelToContribution(model, item);
        }
    }
}

From source file:net.yatomiya.e4.ui.workbench.renderers.swt.StackRenderer.java

License:Open Source License

/**
 * Determine whether the given view menu has any visible menu items.
 *
 * @param viewMenu//w w w.j  a  va2s. c  o  m
 *            the view menu to check
 * @param part
 *            the view menu's parent part
 * @return <tt>true</tt> if the specified view menu has visible children,
 *         <tt>false</tt> otherwise
 */
private boolean hasVisibleMenuItems(MMenu viewMenu, MPart part) {
    if (!viewMenu.isToBeRendered() || !viewMenu.isVisible()) {
        return false;
    }

    for (MMenuElement menuElement : viewMenu.getChildren()) {
        if (menuElement.isToBeRendered() && menuElement.isVisible()) {
            if (OpaqueElementUtil.isOpaqueMenuItem(menuElement)
                    || OpaqueElementUtil.isOpaqueMenuSeparator(menuElement)) {
                IContributionItem item = (IContributionItem) OpaqueElementUtil.getOpaqueItem(menuElement);
                if (item != null && item.isVisible()) {
                    return true;
                }
            } else {
                return true;
            }
        }
    }

    Object menuRenderer = viewMenu.getRenderer();
    if (menuRenderer instanceof MenuManagerRenderer) {
        MenuManager manager = ((MenuManagerRenderer) menuRenderer).getManager(viewMenu);
        if (manager != null && manager.isVisible()) {
            return true;
        }
    }

    Control control = (Control) part.getWidget();
    if (control != null) {
        Menu menu = (Menu) renderer.createGui(viewMenu, control.getShell(), part.getContext());
        if (menu != null) {
            menuRenderer = viewMenu.getRenderer();
            if (menuRenderer instanceof MenuManagerRenderer) {
                MenuManagerRenderer menuManagerRenderer = (MenuManagerRenderer) menuRenderer;
                MenuManager manager = menuManagerRenderer.getManager(viewMenu);
                if (manager != null) {
                    // remark ourselves as dirty so that the menu will be
                    // reconstructed
                    manager.markDirty();
                }
            }
            return menu.getItemCount() != 0;
        }
    }
    return false;
}