|
|
@@ -1,12 +1,12 @@ |
|
|
|
/* |
|
|
|
* Copyright 2000-2014 Vaadin Ltd. |
|
|
|
* |
|
|
|
* |
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not |
|
|
|
* use this file except in compliance with the License. You may obtain a copy of |
|
|
|
* the License at |
|
|
|
* |
|
|
|
* |
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0 |
|
|
|
* |
|
|
|
* |
|
|
|
* Unless required by applicable law or agreed to in writing, software |
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
|
|
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
|
|
@@ -43,7 +43,6 @@ import com.vaadin.client.LayoutManager; |
|
|
|
import com.vaadin.client.Profiler; |
|
|
|
import com.vaadin.client.VConsole; |
|
|
|
import com.vaadin.client.WidgetUtil; |
|
|
|
import com.vaadin.client.legacy.ui.VLegacyTextField; |
|
|
|
import com.vaadin.client.ui.ShortcutActionHandler.ShortcutActionHandlerOwner; |
|
|
|
import com.vaadin.client.ui.TouchScrollDelegate.TouchScrollHandler; |
|
|
|
import com.vaadin.client.ui.ui.UIConnector; |
|
|
@@ -51,7 +50,7 @@ import com.vaadin.shared.ApplicationConstants; |
|
|
|
import com.vaadin.shared.ui.ui.UIConstants; |
|
|
|
|
|
|
|
/** |
|
|
|
* |
|
|
|
* |
|
|
|
*/ |
|
|
|
public class VUI extends SimplePanel implements ResizeHandler, |
|
|
|
Window.ClosingHandler, ShortcutActionHandlerOwner, Focusable, |
|
|
@@ -86,7 +85,7 @@ public class VUI extends SimplePanel implements ResizeHandler, |
|
|
|
|
|
|
|
/** |
|
|
|
* Keep track of possible parent size changes when an embedded application. |
|
|
|
* |
|
|
|
* |
|
|
|
* Uses {@link #parentWidth} and {@link #parentHeight} as an optimization to |
|
|
|
* keep track of when there is a real change. |
|
|
|
*/ |
|
|
@@ -132,14 +131,13 @@ public class VUI extends SimplePanel implements ResizeHandler, |
|
|
|
/* |
|
|
|
* Ensure the fragment is properly encoded in all browsers |
|
|
|
* (#10769) |
|
|
|
* |
|
|
|
* |
|
|
|
* createUrlBuilder does not properly pass an empty fragment to |
|
|
|
* UrlBuilder on Webkit browsers so do it manually (#11686) |
|
|
|
*/ |
|
|
|
String location = Window.Location |
|
|
|
.createUrlBuilder() |
|
|
|
.setHash( |
|
|
|
URL.decodeQueryString(Window.Location.getHash())) |
|
|
|
String location = Window.Location.createUrlBuilder() |
|
|
|
.setHash(URL |
|
|
|
.decodeQueryString(Window.Location.getHash())) |
|
|
|
.buildString(); |
|
|
|
|
|
|
|
currentFragment = newFragment; |
|
|
@@ -222,7 +220,7 @@ public class VUI extends SimplePanel implements ResizeHandler, |
|
|
|
|
|
|
|
/** |
|
|
|
* Called when the window or parent div might have been resized. |
|
|
|
* |
|
|
|
* |
|
|
|
* This immediately checks the sizes of the window and the parent div (if |
|
|
|
* monitoring it) and triggers layout recalculation if they have changed. |
|
|
|
*/ |
|
|
@@ -233,15 +231,15 @@ public class VUI extends SimplePanel implements ResizeHandler, |
|
|
|
|
|
|
|
/** |
|
|
|
* Called when the window or parent div might have been resized. |
|
|
|
* |
|
|
|
* |
|
|
|
* This immediately checks the sizes of the window and the parent div (if |
|
|
|
* monitoring it) and triggers layout recalculation if they have changed. |
|
|
|
* |
|
|
|
* |
|
|
|
* @param newWindowWidth |
|
|
|
* The new width of the window |
|
|
|
* @param newWindowHeight |
|
|
|
* The new height of the window |
|
|
|
* |
|
|
|
* |
|
|
|
* @deprecated use {@link #performSizeCheck()} |
|
|
|
*/ |
|
|
|
@Deprecated |
|
|
@@ -294,7 +292,8 @@ public class VUI extends SimplePanel implements ResizeHandler, |
|
|
|
* should shrink as the content's size is fixed and would thus not |
|
|
|
* automatically shrink.) |
|
|
|
*/ |
|
|
|
VConsole.log("Running layout functions due to window or parent resize"); |
|
|
|
VConsole.log( |
|
|
|
"Running layout functions due to window or parent resize"); |
|
|
|
|
|
|
|
// update size to avoid (most) redundant re-layout passes |
|
|
|
// there can still be an extra layout recalculation if webkit |
|
|
@@ -329,7 +328,7 @@ public class VUI extends SimplePanel implements ResizeHandler, |
|
|
|
* Returns true if the body is NOT generated, i.e if someone else has made |
|
|
|
* the page that we're running in. Otherwise we're in charge of the whole |
|
|
|
* page. |
|
|
|
* |
|
|
|
* |
|
|
|
* @return true if we're running embedded |
|
|
|
*/ |
|
|
|
public boolean isEmbedded() { |
|
|
@@ -340,7 +339,7 @@ public class VUI extends SimplePanel implements ResizeHandler, |
|
|
|
/** |
|
|
|
* Returns true if the size of the parent should be checked periodically and |
|
|
|
* the application should react to its changes. |
|
|
|
* |
|
|
|
* |
|
|
|
* @return true if size of parent should be tracked |
|
|
|
*/ |
|
|
|
protected boolean isMonitoringParentSize() { |
|
|
@@ -350,7 +349,7 @@ public class VUI extends SimplePanel implements ResizeHandler, |
|
|
|
|
|
|
|
/* |
|
|
|
* (non-Javadoc) |
|
|
|
* |
|
|
|
* |
|
|
|
* @see |
|
|
|
* com.google.gwt.event.logical.shared.ResizeHandler#onResize(com.google |
|
|
|
* .gwt.event.logical.shared.ResizeEvent) |
|
|
@@ -363,7 +362,7 @@ public class VUI extends SimplePanel implements ResizeHandler, |
|
|
|
|
|
|
|
/** |
|
|
|
* Called when a resize event is received. |
|
|
|
* |
|
|
|
* |
|
|
|
* This may trigger a lazy refresh or perform the size check immediately |
|
|
|
* depending on the browser used and whether the server side requests |
|
|
|
* resizes to be lazy. |
|
|
@@ -374,7 +373,7 @@ public class VUI extends SimplePanel implements ResizeHandler, |
|
|
|
* problems with scrollbars. Firefox 3 might also produce some extra |
|
|
|
* events. We postpone both the re-layouting and the server side event |
|
|
|
* for a while to deal with these issues. |
|
|
|
* |
|
|
|
* |
|
|
|
* We may also postpone these events to avoid slowness when resizing the |
|
|
|
* browser window. Constantly recalculating the layout causes the resize |
|
|
|
* operation to be really slow with complex layouts. |
|
|
@@ -410,13 +409,10 @@ public class VUI extends SimplePanel implements ResizeHandler, |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onWindowClosing(Window.ClosingEvent event) { |
|
|
|
// Change focus on this window in order to ensure that all state is |
|
|
|
// collected from textfields |
|
|
|
// TODO this is a naive hack, that only works with text fields and may |
|
|
|
// cause some odd issues. Should be replaced with a decent solution, see |
|
|
|
// also related BeforeShortcutActionListener interface. Same interface |
|
|
|
// might be usable here. |
|
|
|
VLegacyTextField.flushChangesFromFocusedTextField(); |
|
|
|
// Ensure that any change in the currently focused component is noted |
|
|
|
// before refreshing. Ensures that e.g. text in the focused text field |
|
|
|
// does not disappear on refresh (when preserve on refresh is enabled) |
|
|
|
connection.flushActiveConnector(); |
|
|
|
} |
|
|
|
|
|
|
|
private native static void loadAppIdListFromDOM(ArrayList<String> list) |
|
|
@@ -482,10 +478,10 @@ public class VUI extends SimplePanel implements ResizeHandler, |
|
|
|
|
|
|
|
/** |
|
|
|
* Allows to store the currently focused Element. |
|
|
|
* |
|
|
|
* |
|
|
|
* Current use case is to store the focus when a Window is opened. Does |
|
|
|
* currently handle only a single value. Needs to be extended for #12158 |
|
|
|
* |
|
|
|
* |
|
|
|
* @param focusedElement |
|
|
|
*/ |
|
|
|
public void storeFocus() { |
|
|
@@ -494,10 +490,10 @@ public class VUI extends SimplePanel implements ResizeHandler, |
|
|
|
|
|
|
|
/** |
|
|
|
* Restores the previously stored focus Element. |
|
|
|
* |
|
|
|
* |
|
|
|
* Current use case is to restore the focus when a Window is closed. Does |
|
|
|
* currently handle only a single value. Needs to be extended for #12158 |
|
|
|
* |
|
|
|
* |
|
|
|
* @return the lastFocusElementBeforeDialogOpened |
|
|
|
*/ |
|
|
|
public void focusStoredElement() { |