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;
import com.vaadin.terminal.gwt.client.Util;
public class VMenuBar extends Widget implements Paintable,
- CloseHandler<PopupPanel>, ContainerResizedListener {
+CloseHandler<PopupPanel>, ContainerResizedListener,
+ValueChangeHandler<String> {
/** Set the CSS class name to allow styling. */
public static final String CLASSNAME = "v-menubar";
if (!subMenu) {
setStylePrimaryName(CLASSNAME);
+ // Monitor back&forward buttons
+ History.addValueChangeHandler(this);
} else {
setStylePrimaryName(CLASSNAME + "-submenu");
}
return w;
}
+ public void onValueChange(ValueChangeEvent<String> arg0) {
+ // Close menu if user uses back & forward buttons #4109
+ if (!subMenu) {
+ setSelected(null);
+ hideChildren();
+ menuVisible = false;
+ }
+ }
}
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;
*
* TODO implement unregistering for child components in Cells
*/
-public class VScrollTable extends FlowPanel implements Table, ScrollHandler {
+public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
+ ValueChangeHandler<String> {
public static final String CLASSNAME = "v-table";
public static final String ITEM_CLICK_EVENT_ID = "itemClick";
rowRequestHandler = new RowRequestHandler();
+ // Handle back & forward browser buttons
+ History.addValueChangeHandler(this);
}
@SuppressWarnings("unchecked")
}
}
+ public void onValueChange(ValueChangeEvent<String> arg0) {
+ client.getContextMenu().hide();
+ }
+
}