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
   }