Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClaudio Guglielmo2018-03-09 16:27:01 +0000
committerClaudio Guglielmo2018-03-09 16:27:01 +0000
commit2781a6353aba919bf3545689065904c60a080071 (patch)
treeea464b1500f4c889731a4ec1f12bbccdd764bb20
parenta3440a8a6d349564429cedadee98de501424bf6d (diff)
downloadorg.eclipse.scout.rt-features/cguglielmo/tile_menu.tar.gz
org.eclipse.scout.rt-features/cguglielmo/tile_menu.tar.xz
org.eclipse.scout.rt-features/cguglielmo/tile_menu.zip
TileAccordion: simplify menu handlingfeatures/cguglielmo/tile_menu
-rw-r--r--org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/action/menu/MenuUtility.java15
-rw-r--r--org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/desktop/outline/OutlineMenuWrapper.java12
2 files changed, 24 insertions, 3 deletions
diff --git a/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/action/menu/MenuUtility.java b/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/action/menu/MenuUtility.java
index 5dd6dc1e5e..ea9c14ab86 100644
--- a/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/action/menu/MenuUtility.java
+++ b/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/action/menu/MenuUtility.java
@@ -29,6 +29,7 @@ import org.eclipse.scout.rt.client.ui.basic.planner.Activity;
import org.eclipse.scout.rt.client.ui.basic.planner.Resource;
import org.eclipse.scout.rt.client.ui.basic.table.ITableRow;
import org.eclipse.scout.rt.client.ui.basic.tree.ITreeNode;
+import org.eclipse.scout.rt.client.ui.desktop.outline.OutlineMenuWrapper;
import org.eclipse.scout.rt.client.ui.tile.ITile;
import org.eclipse.scout.rt.client.ui.tile.ITileGrid;
import org.eclipse.scout.rt.platform.util.CollectionUtility;
@@ -213,7 +214,9 @@ public final class MenuUtility {
}
/**
- * Updates the visibility of every single menu (including child menus) according to the given acceptedMenuTypes.
+ * Updates the visibility of every single menu (including child menus) according to the given acceptedMenuTypes. If
+ * one of the given menu is an {@link OutlineMenuWrapper}, the visibility will be changed on the original menu,
+ * because the wrapper won't delegate the change.
*
* @param filter
* (optional) menus are filtered with this predicate before visibility is updated
@@ -224,10 +227,16 @@ public final class MenuUtility {
if (filter != null && !filter.test(menu)) {
return;
}
+ if (menu.isSeparator()) {
+ return;
+ }
- if (!menu.isSeparator()) {
- menu.setVisible(activeFilter.test(menu));
+ // The visibility can only be changed on the original menu
+ if (menu instanceof OutlineMenuWrapper) {
+ menu = ((OutlineMenuWrapper) menu).getOriginalMenu();
}
+
+ menu.setVisible(activeFilter.test(menu));
}, IMenu.class);
}
}
diff --git a/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/desktop/outline/OutlineMenuWrapper.java b/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/desktop/outline/OutlineMenuWrapper.java
index 22ca7859a8..d971adb67b 100644
--- a/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/desktop/outline/OutlineMenuWrapper.java
+++ b/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/desktop/outline/OutlineMenuWrapper.java
@@ -160,6 +160,18 @@ public class OutlineMenuWrapper extends AbstractWidget implements IMenu, IReadOn
return m_wrappedMenu;
}
+ /**
+ * @return the original menu which has been wrapped even if the wrapped menu was wrapped again. Will never be of type
+ * {@link OutlineMenuWrapper}.
+ */
+ public IMenu getOriginalMenu() {
+ IMenu originalMenu = m_wrappedMenu;
+ while (originalMenu instanceof OutlineMenuWrapper) {
+ originalMenu = ((OutlineMenuWrapper) originalMenu).getWrappedMenu();
+ }
+ return originalMenu;
+ }
+
@Override
public Object getOwnerValue() {
return m_wrappedMenu.getOwnerValue();

Back to the top