Force a ownerValueChanged trigger on table/tree context menus when a
row/cell gets updated. To ensure the possibility update visibility on
particular cell values.
Change-Id: I424c4255fcb1144a5b2e3b8000b5d1a7f0ef6c94
diff --git a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/action/menu/AbstractMenu.java b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/action/menu/AbstractMenu.java
index 9ffd0fb..b6f4a54 100644
--- a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/action/menu/AbstractMenu.java
+++ b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/action/menu/AbstractMenu.java
@@ -77,11 +77,14 @@
}
@Override
+ public Object getOwnerValue() {
+ return m_ownerValue;
+ }
+
+ @Override
public final void handleOwnerValueChanged(Object newValue) throws ProcessingException {
- if (!CompareUtility.equals(m_ownerValue, newValue)) {
- m_ownerValue = newValue;
- interceptOwnerValueChanged(newValue);
- }
+ m_ownerValue = newValue;
+ interceptOwnerValueChanged(newValue);
}
/**
@@ -222,7 +225,9 @@
if (action instanceof IMenu) {
IMenu menu = (IMenu) action;
try {
- menu.handleOwnerValueChanged(ownerValue);
+ if (!CompareUtility.equals(menu.getOwnerValue(), ownerValue)) {
+ menu.handleOwnerValueChanged(ownerValue);
+ }
}
catch (ProcessingException e) {
LOG.error("error during handle owner value changed.", e);
diff --git a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/action/menu/IMenu.java b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/action/menu/IMenu.java
index f9ac0e3..c77e5d2 100644
--- a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/action/menu/IMenu.java
+++ b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/action/menu/IMenu.java
@@ -39,6 +39,8 @@
*/
void aboutToShow();
+ Object getOwnerValue();
+
/**
* @param newValue
* @throws ProcessingException
diff --git a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/action/menu/root/internal/TableContextMenu.java b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/action/menu/root/internal/TableContextMenu.java
index 80ec584..2a132e8 100644
--- a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/action/menu/root/internal/TableContextMenu.java
+++ b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/action/menu/root/internal/TableContextMenu.java
@@ -147,9 +147,10 @@
handleOwnerValueChanged();
}
else if (e.getType() == TableEvent.TYPE_ROWS_UPDATED) {
- handleRowsUpdated(e.getRows());
+ if (CollectionUtility.containsAny(e.getRows(), m_currentSelection)) {
+ handleOwnerValueChanged();
+ }
}
}
-
}
}
diff --git a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/action/menu/root/internal/TreeContextMenu.java b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/action/menu/root/internal/TreeContextMenu.java
index c30980c..d79fc9a 100644
--- a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/action/menu/root/internal/TreeContextMenu.java
+++ b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/action/menu/root/internal/TreeContextMenu.java
@@ -130,9 +130,6 @@
* @param nodes
*/
protected void handleNodesUpdated(Collection<ITreeNode> nodes) {
- if (CollectionUtility.containsAny(nodes, m_currentSelection)) {
- calculateEnableState(m_currentSelection);
- }
}
@Override
@@ -150,7 +147,9 @@
handleOwnerValueChanged();
}
else if (e.getType() == TreeEvent.TYPE_NODES_UPDATED) {
- handleNodesUpdated(e.getNodes());
+ if (CollectionUtility.containsAny(e.getNodes(), m_currentSelection)) {
+ handleOwnerValueChanged();
+ }
}
}
}
diff --git a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/basic/table/internal/TablePageTreeMenuWrapper.java b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/basic/table/internal/TablePageTreeMenuWrapper.java
index 30dd207..4ec288d 100644
--- a/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/basic/table/internal/TablePageTreeMenuWrapper.java
+++ b/org.eclipse.scout.rt.client/src/org/eclipse/scout/rt/client/ui/basic/table/internal/TablePageTreeMenuWrapper.java
@@ -78,6 +78,11 @@
}
@Override
+ public Object getOwnerValue() {
+ return m_wrappedMenu.getOwnerValue();
+ }
+
+ @Override
public void handleOwnerValueChanged(Object newValue) throws ProcessingException {
// void
}