]> source.dussan.org Git - vaadin-framework.git/commitdiff
Backport from 6.3 for [11755]
authorJohn Alhroos <john.ahlroos@itmill.com>
Thu, 11 Mar 2010 08:25:37 +0000 (08:25 +0000)
committerJohn Alhroos <john.ahlroos@itmill.com>
Thu, 11 Mar 2010 08:25:37 +0000 (08:25 +0000)
svn changeset:11768/svn branch:6.2

src/com/vaadin/terminal/gwt/client/ui/VContextMenu.java
src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java
src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java

index e66e8279b72c27a9852660585867f561bab646a3..fe5678bdc0f9e3c72e55b5439cac9e3ec0164828 100644 (file)
@@ -155,4 +155,15 @@ public class VContextMenu extends VOverlay implements SubPartAware {
             return null;
         }
     }
+
+    /**
+     * Hides context menu if it is currently shown by given action owner.
+     * 
+     * @param actionOwner
+     */
+    public void ensureHidden(ActionOwner actionOwner) {
+        if (this.actionOwner == actionOwner) {
+            hide();
+        }
+    }
 }
index 75ecbd324941bc6e5722bdc1bb98395815751b2f..0b110889cf002afb4e7585dc0b98cc194952974f 100644 (file)
@@ -8,14 +8,11 @@ import java.util.Stack;
 import com.google.gwt.dom.client.NodeList;
 import com.google.gwt.event.logical.shared.CloseEvent;
 import com.google.gwt.event.logical.shared.CloseHandler;
-import com.google.gwt.event.logical.shared.ValueChangeEvent;
-import com.google.gwt.event.logical.shared.ValueChangeHandler;
 import com.google.gwt.user.client.Command;
 import com.google.gwt.user.client.DOM;
 import com.google.gwt.user.client.DeferredCommand;
 import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
-import com.google.gwt.user.client.History;
 import com.google.gwt.user.client.Timer;
 import com.google.gwt.user.client.ui.HasHTML;
 import com.google.gwt.user.client.ui.PopupPanel;
@@ -30,8 +27,7 @@ import com.vaadin.terminal.gwt.client.UIDL;
 import com.vaadin.terminal.gwt.client.Util;
 
 public class VMenuBar extends Widget implements Paintable,
-CloseHandler<PopupPanel>, ContainerResizedListener,
-ValueChangeHandler<String> {
+CloseHandler<PopupPanel>, ContainerResizedListener {
 
     /** Set the CSS class name to allow styling. */
     public static final String CLASSNAME = "v-menubar";
@@ -80,8 +76,6 @@ ValueChangeHandler<String> {
 
         if (!subMenu) {
             setStylePrimaryName(CLASSNAME);
-            // Monitor back&forward buttons
-            History.addValueChangeHandler(this);
         } else {
             setStylePrimaryName(CLASSNAME + "-submenu");
         }
@@ -115,7 +109,7 @@ ValueChangeHandler<String> {
         if (client.updateComponent(this, uidl, true)) {
             return;
         }
-        this.enabled = !uidl.getBooleanAttribute("disabled");
+        enabled = !uidl.getBooleanAttribute("disabled");
 
         // For future connections
         this.client = client;
@@ -398,6 +392,16 @@ ValueChangeHandler<String> {
         }
     }
 
+    @Override
+    protected void onDetach() {
+        super.onDetach();
+        if (!subMenu) {
+            setSelected(null);
+            hideChildren();
+            menuVisible = false;
+        }
+    }
+
     private boolean isEnabled() {
         return enabled;
     }
@@ -871,13 +875,4 @@ ValueChangeHandler<String> {
         }
         return w;
     }
-
-    public void onValueChange(ValueChangeEvent<String> arg0) {
-        // Close menu if user uses back & forward buttons #4109
-        if (!subMenu) {
-            setSelected(null);
-            hideChildren();
-            menuVisible = false;
-        }
-    }
 }
index a33a831b7cbcf47d358aadad619263a183c4b2a7..465f4b38ae6a3bbbff9c6bc6e53eadce0a8e0a97 100644 (file)
@@ -19,14 +19,11 @@ import com.google.gwt.dom.client.TableRowElement;
 import com.google.gwt.dom.client.TableSectionElement;
 import com.google.gwt.event.dom.client.ScrollEvent;
 import com.google.gwt.event.dom.client.ScrollHandler;
-import com.google.gwt.event.logical.shared.ValueChangeEvent;
-import com.google.gwt.event.logical.shared.ValueChangeHandler;
 import com.google.gwt.user.client.Command;
 import com.google.gwt.user.client.DOM;
 import com.google.gwt.user.client.DeferredCommand;
 import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
-import com.google.gwt.user.client.History;
 import com.google.gwt.user.client.Timer;
 import com.google.gwt.user.client.Window;
 import com.google.gwt.user.client.ui.FlowPanel;
@@ -67,8 +64,7 @@ import com.vaadin.terminal.gwt.client.ui.VScrollTable.VScrollTableBody.VScrollTa
  * 
  * TODO implement unregistering for child components in Cells
  */
-public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
-        ValueChangeHandler<String> {
+public class VScrollTable extends FlowPanel implements Table, ScrollHandler {
 
     public static final String CLASSNAME = "v-table";
     public static final String ITEM_CLICK_EVENT_ID = "itemClick";
@@ -162,9 +158,6 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
         add(bodyContainer);
 
         rowRequestHandler = new RowRequestHandler();
-
-        // Handle back & forward browser buttons
-        History.addValueChangeHandler(this);
     }
 
     @SuppressWarnings("unchecked")
@@ -1653,6 +1646,12 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
             }
         }
 
+        @Override
+        protected void onDetach() {
+            super.onDetach();
+            client.getContextMenu().ensureHidden(this);
+        }
+
         class VisibleColumnAction extends Action {
 
             String colKey;
@@ -2266,6 +2265,12 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
                 }
             }
 
+            @Override
+            protected void onDetach() {
+                super.onDetach();
+                client.getContextMenu().ensureHidden(this);
+            }
+
             public String getKey() {
                 return String.valueOf(rowKey);
             }
@@ -3070,9 +3075,4 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
             rowRequestHandler.deferRowFetch();
         }
     }
-
-    public void onValueChange(ValueChangeEvent<String> arg0) {
-        client.getContextMenu().hide();
-    }
-
 }