modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java | 50 ++++++++-- 1 file changed, 43 insertions(+), 7 deletions(-)
New commits: commit 4c0c992c2b1ebb560a6d4e9666591614ff1ff7c0 Author: Ian Springer ian.springer@redhat.com Date: Tue May 3 17:43:04 2011 -0400
add magic Event.NativePreviewHandler that makes anchor tags not reload the whole page in IE; remove unused printWidgetTree method
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java index 47a5c1f..a41031d 100644 --- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java +++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/CoreGUI.java @@ -1,6 +1,6 @@ /* * RHQ Management Platform - * Copyright (C) 2005-2010 Red Hat, Inc. + * Copyright (C) 2005-2011 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify @@ -22,10 +22,13 @@ import com.allen_sauer.gwt.log.client.Log; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Element; +import com.google.gwt.dom.client.EventTarget; +import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.http.client.URL; import com.google.gwt.user.client.DOM; +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; @@ -54,7 +57,6 @@ import org.rhq.enterprise.gui.coregui.client.test.TestRemoteServiceStatisticsVie import org.rhq.enterprise.gui.coregui.client.test.TestDataSourceResponseStatisticsView; import org.rhq.enterprise.gui.coregui.client.test.TestTopView; import org.rhq.enterprise.gui.coregui.client.util.ErrorHandler; -import org.rhq.enterprise.gui.coregui.client.util.WidgetUtility; import org.rhq.enterprise.gui.coregui.client.util.message.Message; import org.rhq.enterprise.gui.coregui.client.util.message.MessageCenter; import org.rhq.enterprise.gui.coregui.client.util.selenium.SeleniumUtility; @@ -65,7 +67,7 @@ import org.rhq.enterprise.gui.coregui.client.util.selenium.SeleniumUtility; * @author Greg Hinkle * @author Ian Springer */ -public class CoreGUI implements EntryPoint, ValueChangeHandler<String> { +public class CoreGUI implements EntryPoint, ValueChangeHandler<String>, Event.NativePreviewHandler {
public static final String CONTENT_CANVAS_ID = "BaseContent";
@@ -121,6 +123,8 @@ public class CoreGUI implements EntryPoint, ValueChangeHandler<String> {
coreGUI = this;
+ Event.addNativePreviewHandler(this); + registerPageKeys();
GWT.setUncaughtExceptionHandler(new GWT.UncaughtExceptionHandler() { @@ -147,6 +151,42 @@ public class CoreGUI implements EntryPoint, ValueChangeHandler<String> { loadingPanel.removeFromParent(); }
+ public void onPreviewNativeEvent(Event.NativePreviewEvent event) { + if (SC.isIE() && event.getTypeInt() == Event.ONCLICK) { + NativeEvent nativeEvent = event.getNativeEvent(); + EventTarget target = nativeEvent.getEventTarget(); + if (Element.is(target)) { + Element element = Element.as(target); + if ("a".equalsIgnoreCase(element.getTagName())) { + // make sure it's not a hyperlink that GWT already handles + if (element.getPropertyString("__listener") == null) { + String url = element.getAttribute("href"); + String token = getHistoryToken(url); + if (token != null) { + GWT.log("Forcing History.newItem("" + token + "")..."); + History.newItem(token); + nativeEvent.preventDefault(); + } + } + } + } + } + } + + private static String getHistoryToken(String url) { + String token; + if (url.startsWith("#")) { + token = url.substring(1); + } else if (url.startsWith("/#")) { + token = url.substring(2); + } else if (url.contains(Location.getHost()) && url.indexOf('#') > 0) { + token = url.substring(url.indexOf('#') + 1); + } else { + token = null; + } + return token; + } + private void registerPageKeys() { if (isDebugMode()) { KeyIdentifier debugKey = new KeyIdentifier(); @@ -310,10 +350,6 @@ public class CoreGUI implements EntryPoint, ValueChangeHandler<String> { return errorHandler; }
- public static void printWidgetTree() { - WidgetUtility.printWidgetTree(coreGUI.rootCanvas); - } - private static String getDefaultView() { // TODO: should this be Dashboard or a User Preference? return DEFAULT_VIEW;
rhq-commits@lists.fedorahosted.org