Search in sources :

Example 1 with IMenu

use of org.eclipse.scout.rt.client.ui.action.menu.IMenu in project scout.rt by eclipse.

the class FormFieldContextMenu method handleOwnerEnabledChanged.

protected void handleOwnerEnabledChanged() {
    T container = getContainer();
    if (container == null) {
        return;
    }
    final boolean enabled = container.isEnabledIncludingParents();
    acceptVisitor(new IActionVisitor() {

        @Override
        public int visit(IAction action) {
            if (action instanceof IMenu) {
                IMenu menu = (IMenu) action;
                if (!menu.hasChildActions() && menu.isInheritAccessibility()) {
                    menu.setEnabledInheritAccessibility(enabled);
                }
            }
            return CONTINUE;
        }
    });
}
Also used : IActionVisitor(org.eclipse.scout.rt.client.ui.action.IActionVisitor) IMenu(org.eclipse.scout.rt.client.ui.action.menu.IMenu) IAction(org.eclipse.scout.rt.client.ui.action.IAction)

Example 2 with IMenu

use of org.eclipse.scout.rt.client.ui.action.menu.IMenu in project scout.rt by eclipse.

the class AbstractContextMenu method removeScoutMenuVisibilityListenerRec.

protected void removeScoutMenuVisibilityListenerRec(Collection<? extends IMenu> menus) {
    if (menus != null) {
        for (IMenu m : menus) {
            m.removePropertyChangeListener(IMenu.PROP_CHILD_ACTIONS, m_menuVisibilityListener);
            m.removePropertyChangeListener(IMenu.PROP_VISIBLE, m_menuVisibilityListener);
            removeScoutMenuVisibilityListenerRec(m.getChildActions());
        }
    }
}
Also used : IMenu(org.eclipse.scout.rt.client.ui.action.menu.IMenu)

Example 3 with IMenu

use of org.eclipse.scout.rt.client.ui.action.menu.IMenu in project scout.rt by eclipse.

the class AbstractContextMenu method calculateLocalVisibility.

protected void calculateLocalVisibility() {
    final IActionFilter activeFilter = ActionUtility.createMenuFilterMenuTypes(getCurrentMenuTypes(), true);
    if (activeFilter != null) {
        final BooleanHolder visibleHolder = new BooleanHolder(false);
        acceptVisitor(new IActionVisitor() {

            @Override
            public int visit(IAction action) {
                if (action instanceof IMenu) {
                    IMenu menu = (IMenu) action;
                    if (menu.hasChildActions() || menu.isSeparator() || menu instanceof IContextMenu) {
                        return CONTINUE;
                    } else if (activeFilter.accept(menu)) {
                        visibleHolder.setValue(true);
                        return CANCEL;
                    }
                }
                return CONTINUE;
            }
        });
        setVisible(visibleHolder.getValue());
    }
}
Also used : IActionVisitor(org.eclipse.scout.rt.client.ui.action.IActionVisitor) IMenu(org.eclipse.scout.rt.client.ui.action.menu.IMenu) IAction(org.eclipse.scout.rt.client.ui.action.IAction) IActionFilter(org.eclipse.scout.rt.client.ui.action.IActionFilter) BooleanHolder(org.eclipse.scout.rt.platform.holders.BooleanHolder)

Example 4 with IMenu

use of org.eclipse.scout.rt.client.ui.action.menu.IMenu in project scout.rt by eclipse.

the class AbstractContextMenu method addScoutMenuVisibilityListenerRec.

protected void addScoutMenuVisibilityListenerRec(Collection<? extends IMenu> menus) {
    if (menus != null) {
        for (IMenu m : menus) {
            m.addPropertyChangeListener(IMenu.PROP_CHILD_ACTIONS, m_menuVisibilityListener);
            m.addPropertyChangeListener(IMenu.PROP_VISIBLE, m_menuVisibilityListener);
            addScoutMenuVisibilityListenerRec(m.getChildActions());
        }
    }
}
Also used : IMenu(org.eclipse.scout.rt.client.ui.action.menu.IMenu)

Example 5 with IMenu

use of org.eclipse.scout.rt.client.ui.action.menu.IMenu in project scout.rt by eclipse.

the class MobileDeviceTransformer method notifyPageDetailTableChanged.

@Override
public void notifyPageDetailTableChanged(ITable table) {
    IPage<?> activePage = getDesktop().getOutline().getActivePage();
    IPage<?> parentPage = activePage.getParentPage();
    if (parentPage == null) {
        return;
    }
    ITable parentTable = parentPage.getTable();
    if (parentTable == null) {
        return;
    }
    // Remove empty space menus of the current detail table which are already defined on the parent detail table as single selection menus
    // This prevents duplicate menus because the ui concatenates these menus when a node is shown
    // It is important to only remove outline wrapper menus which are defined on the parent table because the menu could be defined on a page and therefore needs to be displayed
    List<IMenu> newMenus = new ArrayList<IMenu>();
    for (IMenu menu : table.getMenus()) {
        if ((menu instanceof OutlineMenuWrapper)) {
            OutlineMenuWrapper menuWrapper = (OutlineMenuWrapper) menu;
            IMenu originalMenu = unwrapOutlineWrapperMenu(menuWrapper);
            if (menuWrapper.getMenuTypes().contains(TableMenuType.EmptySpace) && originalMenu.getMenuTypes().contains(TableMenuType.SingleSelection) && parentTable.getMenus().contains(originalMenu)) {
                // This menu should be removed -> don't add it to the list of new menus
                continue;
            }
        }
        newMenus.add(menu);
    }
    if (!CollectionUtility.equalsCollection(newMenus, table.getContextMenu().getChildActions())) {
        table.getContextMenu().setChildActions(newMenus);
    }
}
Also used : OutlineMenuWrapper(org.eclipse.scout.rt.client.ui.desktop.outline.OutlineMenuWrapper) IMenu(org.eclipse.scout.rt.client.ui.action.menu.IMenu) ArrayList(java.util.ArrayList) ITable(org.eclipse.scout.rt.client.ui.basic.table.ITable)

Aggregations

IMenu (org.eclipse.scout.rt.client.ui.action.menu.IMenu)64 ArrayList (java.util.ArrayList)17 Test (org.junit.Test)17 OrderedCollection (org.eclipse.scout.rt.platform.util.collection.OrderedCollection)12 IAction (org.eclipse.scout.rt.client.ui.action.IAction)8 JSONObject (org.json.JSONObject)8 TestMenus (org.eclipse.scout.rt.client.extension.ui.action.tree.fixture.TestMenus)6 IActionVisitor (org.eclipse.scout.rt.client.ui.action.IActionVisitor)6 JSONArray (org.json.JSONArray)6 IKeyStroke (org.eclipse.scout.rt.client.ui.action.keystroke.IKeyStroke)5 ITable (org.eclipse.scout.rt.client.ui.basic.table.ITable)5 ITreeNode (org.eclipse.scout.rt.client.ui.basic.tree.ITreeNode)5 ContributionComposite (org.eclipse.scout.rt.shared.extension.ContributionComposite)5 LinkedList (java.util.LinkedList)4 IOutline (org.eclipse.scout.rt.client.ui.desktop.outline.IOutline)4 ProcessingException (org.eclipse.scout.rt.platform.exception.ProcessingException)4 List (java.util.List)3 ActionFinder (org.eclipse.scout.rt.client.ui.action.ActionFinder)3 AbstractMenu (org.eclipse.scout.rt.client.ui.action.menu.AbstractMenu)3 IFormFieldContextMenu (org.eclipse.scout.rt.client.ui.action.menu.root.IFormFieldContextMenu)3