]> source.dussan.org Git - vaadin-framework.git/commitdiff
fixes #6724
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Wed, 27 Apr 2011 12:38:30 +0000 (12:38 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Wed, 27 Apr 2011 12:38:30 +0000 (12:38 +0000)
Also removed old focusing hack required for ancient non supported browsers only. Latest Operas and Safari's from 3.x work fine without it.

svn changeset:18502/svn branch:6.6

src/com/vaadin/terminal/gwt/client/ApplicationConfiguration.java
src/com/vaadin/terminal/gwt/client/ApplicationConnection.java
src/com/vaadin/terminal/gwt/client/ui/VView.java
src/com/vaadin/terminal/gwt/server/AbstractApplicationServlet.java

index 9e062eee8078ba34dc907b4b647757a5d09a8afd..72e8afe8b393325f20cf59d94063f5c973780889 100644 (file)
@@ -41,6 +41,7 @@ public class ApplicationConfiguration implements EntryPoint {
     private String appUri;
     private JavaScriptObject versionInfo;
     private String windowName;
+    private boolean standalone;
     private String communicationErrorCaption;
     private String communicationErrorMessage;
     private String communicationErrorUrl;
@@ -95,6 +96,14 @@ public class ApplicationConfiguration implements EntryPoint {
         id = appId;
     }
 
+    /**
+     * @return true if the application is served by std. Vaadin servlet and is
+     *         considered to be the only or main content of the host page.
+     */
+    public boolean isStandalone() {
+        return standalone;
+    }
+
     public void setInitialWindowName(String name) {
         windowName = name;
     }
@@ -168,6 +177,9 @@ public class ApplicationConfiguration implements EntryPoint {
             if (jsobj.portletUidlURLBase) {
                 this.@com.vaadin.terminal.gwt.client.ApplicationConfiguration::portletUidlURLBase = jsobj.portletUidlURLBase;
             }
+            if (jsobj.standalone) {
+                this.@com.vaadin.terminal.gwt.client.ApplicationConfiguration::standalone = true;
+            }
         } else {
             $wnd.alert("Vaadin app failed to initialize: " + this.id);
         }
index d5d9578bd9b83ec37b5ac21c1f0755c25ce35d76..bc86b18daa66ad7046ce5d77a975e1329efbb644 100755 (executable)
@@ -171,7 +171,7 @@ public class ApplicationConnection {
 
         initializeClientHooks();
 
-        view.init(cnf.getRootPanelId());
+        view.init(cnf.getRootPanelId(), this);
         showLoadingIndicator();
     }
 
index 2858137517763189e38208c60448807dc380c183..9f1acb52fe564befa63d33888ce0ffa31a680500 100644 (file)
@@ -680,7 +680,8 @@ public class VView extends SimplePanel implements Container, ResizeHandler,
         return windows;
     }
 
-    public void init(String rootPanelId) {
+    public void init(String rootPanelId,
+            ApplicationConnection applicationConnection) {
         DOM.sinkEvents(getElement(), Event.ONKEYDOWN | Event.ONSCROLL);
 
         // iview is focused when created so element needs tabIndex
@@ -698,25 +699,11 @@ public class VView extends SimplePanel implements Container, ResizeHandler,
 
         root.add(this);
 
-        BrowserInfo browser = BrowserInfo.get();
-
-        // set focus to iview element by default to listen possible keyboard
-        // shortcuts
-        if (browser.isOpera() || browser.isSafari()
-                && browser.getWebkitVersion() < 526) {
-            // old webkits don't support focusing div elements
-            Element fElem = DOM.createInputCheck();
-            DOM.setStyleAttribute(fElem, "margin", "0");
-            DOM.setStyleAttribute(fElem, "padding", "0");
-            DOM.setStyleAttribute(fElem, "border", "0");
-            DOM.setStyleAttribute(fElem, "outline", "0");
-            DOM.setStyleAttribute(fElem, "width", "1px");
-            DOM.setStyleAttribute(fElem, "height", "1px");
-            DOM.setStyleAttribute(fElem, "position", "absolute");
-            DOM.setStyleAttribute(fElem, "opacity", "0.1");
-            DOM.appendChild(getElement(), fElem);
-            fElem.focus();
-        } else {
+        if (applicationConnection.getConfiguration().isStandalone()) {
+            // set focus to iview element by default to listen possible keyboard
+            // shortcuts. For embedded applications this is unacceptable as we
+            // don't want to steal focus from the main page nor we don't want
+            // side-effects from focusing (scrollIntoView).
             getElement().focus();
         }
 
index 6752f6013bf4c2fc2015d9c3bd0c42ad7aafdb4b..8a39b0307e9b9a779009e99f0d4499c1acf1d985 100644 (file)
@@ -1854,6 +1854,9 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements
             page.write("windowName: \""
                     + JsonPaintTarget.escapeJSON(window.getName()) + "\", ");
         }
+        if (isStandalone()) {
+            page.write("standalone: true, ");
+        }
         page.write("themeUri:");
         page.write(themeUri != null ? "\"" + themeUri + "\"" : "null");
         page.write(", versionInfo : {vaadinVersion:\"");
@@ -1927,6 +1930,15 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements
                 + widgetsetFilePath + "\")};',15000);\n" + "//]]>\n</script>\n");
     }
 
+    /**
+     * @return true if the served application is considered to be the only or
+     *         main content of the host page. E.g. various embedding solutions
+     *         should override this to false.
+     */
+    protected boolean isStandalone() {
+        return true;
+    }
+
     /**
      * 
      * Method to open the body tag of the html kickstart page.