summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorHenri Sara <henri.sara@itmill.com>2011-07-27 08:15:35 +0000
committerHenri Sara <henri.sara@itmill.com>2011-07-27 08:15:35 +0000
commitca96dca574f2412c760b0b70a72b3166e9f813fc (patch)
treeb2ff4a57d3fef72eb6bb56d0d1b52eb415a3a5f1 /src
parent4adc69a6e80b2320952b7658171ca170bfaa251f (diff)
downloadvaadin-framework-ca96dca574f2412c760b0b70a72b3166e9f813fc.tar.gz
vaadin-framework-ca96dca574f2412c760b0b70a72b3166e9f813fc.zip
Merged changes to 6.7
svn changeset:19972/svn branch:6.7
Diffstat (limited to 'src')
-rw-r--r--src/com/vaadin/terminal/gwt/client/ApplicationConfiguration.java40
-rw-r--r--src/com/vaadin/terminal/gwt/client/CSSRule.java2
-rwxr-xr-xsrc/com/vaadin/terminal/gwt/client/VDebugConsole.java8
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java12
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/VTree.java24
-rw-r--r--src/com/vaadin/terminal/gwt/widgetsetutils/WidgetMapGenerator.java8
-rw-r--r--src/com/vaadin/ui/AbstractTextField.java48
7 files changed, 80 insertions, 62 deletions
diff --git a/src/com/vaadin/terminal/gwt/client/ApplicationConfiguration.java b/src/com/vaadin/terminal/gwt/client/ApplicationConfiguration.java
index 4b6194b79b..6787b36022 100644
--- a/src/com/vaadin/terminal/gwt/client/ApplicationConfiguration.java
+++ b/src/com/vaadin/terminal/gwt/client/ApplicationConfiguration.java
@@ -223,7 +223,6 @@ public class ApplicationConfiguration implements EntryPoint {
}
}
- deferredWidgetLoadLoop.scheduleRepeating(100);
}
/**
@@ -257,6 +256,7 @@ public class ApplicationConfiguration implements EntryPoint {
runningApplications.add(a);
return true;
} else {
+ deferredWidgetLoader = new DeferredWidgetLoader();
return false;
}
}
@@ -361,6 +361,8 @@ public class ApplicationConfiguration implements EntryPoint {
cmd.execute();
}
callbacks.clear();
+ } else if(widgetsLoading == 0 && deferredWidgetLoader != null) {
+ deferredWidgetLoader.trigger();
}
}
@@ -368,22 +370,44 @@ public class ApplicationConfiguration implements EntryPoint {
/*
* This loop loads widget implementation that should be loaded deferred.
*/
- private static final Timer deferredWidgetLoadLoop = new Timer() {
+ static class DeferredWidgetLoader extends Timer {
private static final int FREE_LIMIT = 4;
+ private static final int FREE_CHECK_TIMEOUT = 100;
int communicationFree = 0;
int nextWidgetIndex = 0;
+ private boolean pending;
+
+ public DeferredWidgetLoader() {
+ schedule(5000);
+ }
+
+ public void trigger() {
+ if(!pending) {
+ schedule(FREE_CHECK_TIMEOUT);
+ }
+ }
+
+ @Override
+ public void schedule(int delayMillis) {
+ super.schedule(delayMillis);
+ pending = true;
+ }
@Override
public void run() {
+ pending = false;
if (!isBusy()) {
Class<? extends Paintable> nextType = getNextType();
if (nextType == null) {
// ensured that all widgets are loaded
- cancel();
+ deferredWidgetLoader = null;
} else {
+ communicationFree = 0;
widgetSet.loadImplementation(nextType);
}
+ } else {
+ schedule(FREE_CHECK_TIMEOUT);
}
}
@@ -400,21 +424,23 @@ public class ApplicationConfiguration implements EntryPoint {
private boolean isBusy() {
if (widgetsLoading > 0) {
communicationFree = 0;
- return false;
+ return true;
}
for (ApplicationConnection app : runningApplications) {
if (app.hasActiveRequest()) {
// if an UIDL request or widget loading is active, mark as
// busy
communicationFree = 0;
- return false;
+ return true;
}
}
communicationFree++;
return communicationFree < FREE_LIMIT;
}
- };
-
+ }
+
+ private static DeferredWidgetLoader deferredWidgetLoader;
+
public void onModuleLoad() {
// Enable IE6 Background image caching
diff --git a/src/com/vaadin/terminal/gwt/client/CSSRule.java b/src/com/vaadin/terminal/gwt/client/CSSRule.java
index 5c7758e0dd..97604d242e 100644
--- a/src/com/vaadin/terminal/gwt/client/CSSRule.java
+++ b/src/com/vaadin/terminal/gwt/client/CSSRule.java
@@ -72,7 +72,7 @@ public class CSSRule {
var j = theRules.length;
for(var i=0; i<j; i++) {
var r = theRules[i];
- if(r.type == 1 || sheet.imports) {
+ if(r.type == 1 || sheet.imports) {
var selectors = r.selectorText.toLowerCase().split(",");
var n = selectors.length;
for(var m=0; m<n; m++) {
diff --git a/src/com/vaadin/terminal/gwt/client/VDebugConsole.java b/src/com/vaadin/terminal/gwt/client/VDebugConsole.java
index ec172f67f8..5d7c0be437 100755
--- a/src/com/vaadin/terminal/gwt/client/VDebugConsole.java
+++ b/src/com/vaadin/terminal/gwt/client/VDebugConsole.java
@@ -56,7 +56,7 @@ import com.vaadin.terminal.gwt.client.ui.VOverlay;
* This implementation can be overridden with GWT deferred binding.
*
*/
-public final class VDebugConsole extends VOverlay implements Console {
+public class VDebugConsole extends VOverlay implements Console {
private static final String POS_COOKIE_NAME = "VDebugConsolePos";
@@ -287,11 +287,7 @@ public final class VDebugConsole extends VOverlay implements Console {
protected void remoteLog(String msg) {
msgQueue.add(msg);
- if (msg.length() > 4) {
- doSend.execute();
- } else {
- sendToRemoteLog.trigger();
- }
+ sendToRemoteLog.trigger();
}
/**
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java
index 1226c5ae79..8f8958d365 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java
@@ -807,6 +807,18 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
enabled = !uidl.hasAttribute("disabled");
+ if (BrowserInfo.get().isIE8() && !enabled) {
+ /*
+ * The disabled shim will not cover the table body if it is
+ * relative in IE8. See #7324
+ */
+ scrollBodyPanel.getElement().getStyle()
+ .setPosition(Position.STATIC);
+ } else if (BrowserInfo.get().isIE8()) {
+ scrollBodyPanel.getElement().getStyle()
+ .setPosition(Position.RELATIVE);
+ }
+
this.client = client;
paintableId = uidl.getStringAttribute("id");
immediate = uidl.getBooleanAttribute("immediate");
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VTree.java b/src/com/vaadin/terminal/gwt/client/ui/VTree.java
index ef08e81e10..eb8a2e63c5 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VTree.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VTree.java
@@ -511,9 +511,27 @@ public class VTree extends FocusElementPanel implements Paintable,
* Sends the selection to the server
*/
private void sendSelectionToServer() {
- client.updateVariable(paintableId, "selected", selectedIds
- .toArray(new String[selectedIds.size()]), immediate);
- selectionHasChanged = false;
+ Command command = new Command() {
+ public void execute() {
+ client.updateVariable(paintableId, "selected",
+ selectedIds.toArray(new String[selectedIds.size()]),
+ immediate);
+ selectionHasChanged = false;
+ }
+ };
+
+ /*
+ * Delaying the sending of the selection in webkit to ensure the
+ * selection is always sent when the tree has focus and after click
+ * events have been processed. This is due to the focusing
+ * implementation in FocusImplSafari which uses timeouts when focusing
+ * and blurring.
+ */
+ if (BrowserInfo.get().isWebkit()) {
+ Scheduler.get().scheduleDeferred(command);
+ } else {
+ command.execute();
+ }
}
/**
diff --git a/src/com/vaadin/terminal/gwt/widgetsetutils/WidgetMapGenerator.java b/src/com/vaadin/terminal/gwt/widgetsetutils/WidgetMapGenerator.java
index a3f1c59846..7ad790e25e 100644
--- a/src/com/vaadin/terminal/gwt/widgetsetutils/WidgetMapGenerator.java
+++ b/src/com/vaadin/terminal/gwt/widgetsetutils/WidgetMapGenerator.java
@@ -8,6 +8,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.TreeSet;
@@ -244,10 +245,16 @@ public class WidgetMapGenerator extends Generator {
boolean first = true;
ArrayList<Class<? extends Paintable>> lazyLoadedWidgets = new ArrayList<Class<? extends Paintable>>();
+
+ HashSet<Class<? extends com.vaadin.terminal.gwt.client.Paintable>> widgetsWithInstantiator = new HashSet<Class<? extends com.vaadin.terminal.gwt.client.Paintable>>();
+
for (Class<? extends Paintable> class1 : paintablesHavingWidgetAnnotation) {
ClientWidget annotation = class1.getAnnotation(ClientWidget.class);
Class<? extends com.vaadin.terminal.gwt.client.Paintable> clientClass = annotation
.value();
+ if(widgetsWithInstantiator.contains(clientClass)) {
+ continue;
+ }
if (clientClass == VView.class) {
// VView's are not instantiated by widgetset
continue;
@@ -288,6 +295,7 @@ public class WidgetMapGenerator extends Generator {
sourceWriter.print(");");
}
sourceWriter.print("}");
+ widgetsWithInstantiator.add(clientClass);
}
sourceWriter.println("}");
diff --git a/src/com/vaadin/ui/AbstractTextField.java b/src/com/vaadin/ui/AbstractTextField.java
index 622b8d18d9..4ed76d367b 100644
--- a/src/com/vaadin/ui/AbstractTextField.java
+++ b/src/com/vaadin/ui/AbstractTextField.java
@@ -1,4 +1,4 @@
-/*
+/*
@ITMillApache2LicenseForJavaFiles@
*/
@@ -123,20 +123,7 @@ public abstract class AbstractTextField extends AbstractField implements
throw new IllegalStateException(
"Null values are not allowed if the null-representation is null");
}
-
- if (requestRepaintInTextChangeEvent && !valueChangeInTextChangeEvent) {
- /*
- * If the repaint occurred in a text change event then we do not
- * want to send back the old value since it will just overwrite the
- * typed value so we send the last known value instead which is
- * updated by the text change event.
- */
- target.addVariable(this, "text", lastKnownTextContent);
- } else {
- target.addVariable(this, "text", value);
- }
- requestRepaintInTextChangeEvent = false;
- valueChangeInTextChangeEvent = false;
+ target.addVariable(this, "text", value);
if (selectionPosition != -1) {
target.addAttribute("selpos", selectionPosition);
@@ -184,22 +171,6 @@ public abstract class AbstractTextField extends AbstractField implements
}
}
- /**
- * Flag for monitoring if a repaint gets requested in a text change event
- */
- private boolean requestRepaintInTextChangeEvent = false;
-
- @Override
- public void requestRepaint() {
- if (textChangeEventPending) {
- /*
- * Textchange event listener triggered this repaint
- */
- requestRepaintInTextChangeEvent = true;
- }
- super.requestRepaint();
- }
-
@Override
public void changeVariables(Object source, Map<String, Object> variables) {
changingVariables = true;
@@ -467,26 +438,13 @@ public abstract class AbstractTextField extends AbstractField implements
private void firePendingTextChangeEvent() {
if (textChangeEventPending) {
- fireEvent(new TextChangeEventImpl(this));
textChangeEventPending = false;
+ fireEvent(new TextChangeEventImpl(this));
}
}
- /**
- * Flag for monitoring if the value got changed in a TextChangeEvent
- * listener
- */
- protected boolean valueChangeInTextChangeEvent = false;
-
@Override
protected void setInternalValue(Object newValue) {
- if (textChangeEventPending) {
- /*
- * Value changed in a TextChangeEvent listener
- */
- valueChangeInTextChangeEvent = true;
- }
-
if (changingVariables && !textChangeEventPending) {
/*
* Fire a "simulated" text change event before value change event if