summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorHenrik Paul <henrik@vaadin.com>2014-09-09 13:15:36 +0300
committerHenrik Paul <henrik@vaadin.com>2014-09-22 11:05:50 +0300
commitb845b9e5f7e2586eb6436b6e6a9b8e5eb7cdaf46 (patch)
tree56ee5921f773f85fbca73d0360e400483fbcee27 /client
parent9542a79187efc287e0ac5d1c7ca3911587e6f059 (diff)
downloadvaadin-framework-b845b9e5f7e2586eb6436b6e6a9b8e5eb7cdaf46.tar.gz
vaadin-framework-b845b9e5f7e2586eb6436b6e6a9b8e5eb7cdaf46.zip
Makes Escalator and Grid DeferredWorkers (#13334)
Change-Id: Ia8c1b98e4e2c021b570e74f3527f58f15a469a17
Diffstat (limited to 'client')
-rw-r--r--client/src/com/vaadin/client/ui/grid/Escalator.java14
-rw-r--r--client/src/com/vaadin/client/ui/grid/Grid.java18
2 files changed, 30 insertions, 2 deletions
diff --git a/client/src/com/vaadin/client/ui/grid/Escalator.java b/client/src/com/vaadin/client/ui/grid/Escalator.java
index 23102caf10..0fbdfe82c5 100644
--- a/client/src/com/vaadin/client/ui/grid/Escalator.java
+++ b/client/src/com/vaadin/client/ui/grid/Escalator.java
@@ -48,6 +48,7 @@ import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.UIObject;
import com.google.gwt.user.client.ui.Widget;
+import com.vaadin.client.DeferredWorker;
import com.vaadin.client.Profiler;
import com.vaadin.client.Util;
import com.vaadin.client.ui.grid.Escalator.JsniUtil.TouchHandlerBundle;
@@ -248,7 +249,7 @@ abstract class JsniWorkaround {
* @since
* @author Vaadin Ltd
*/
-public class Escalator extends Widget {
+public class Escalator extends Widget implements DeferredWorker {
// todo comments legend
/*
@@ -2099,6 +2100,8 @@ public class Escalator extends Widget {
if (!domWasSorted) {
animationHandle = AnimationScheduler.get()
.requestAnimationFrame(this);
+ } else {
+ waiting = false;
}
}
};
@@ -2107,7 +2110,11 @@ public class Escalator extends Widget {
private double startTime;
private AnimationHandle animationHandle;
+ /** <code>true</code> if a sort is scheduled */
+ public boolean waiting = false;
+
public void reschedule() {
+ waiting = true;
resetConditions();
animationHandle = AnimationScheduler.get()
.requestAnimationFrame(frameCounter);
@@ -4693,4 +4700,9 @@ public class Escalator extends Widget {
public HandlerRegistration addScrollHandler(ScrollHandler handler) {
return addHandler(handler, ScrollEvent.TYPE);
}
+
+ @Override
+ public boolean isWorkPending() {
+ return body.domSorter.waiting;
+ }
}
diff --git a/client/src/com/vaadin/client/ui/grid/Grid.java b/client/src/com/vaadin/client/ui/grid/Grid.java
index c0d4053150..e8783c4270 100644
--- a/client/src/com/vaadin/client/ui/grid/Grid.java
+++ b/client/src/com/vaadin/client/ui/grid/Grid.java
@@ -44,6 +44,7 @@ import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasVisibility;
import com.google.gwt.user.client.ui.Widget;
+import com.vaadin.client.DeferredWorker;
import com.vaadin.client.Util;
import com.vaadin.client.data.DataChangeHandler;
import com.vaadin.client.data.DataSource;
@@ -121,7 +122,7 @@ import com.vaadin.shared.ui.grid.SortEventOriginator;
* @author Vaadin Ltd
*/
public class Grid<T> extends Composite implements
- HasSelectionChangeHandlers<T>, SubPartAware {
+ HasSelectionChangeHandlers<T>, SubPartAware, DeferredWorker {
public static abstract class AbstractGridKeyEvent<HANDLER extends AbstractGridKeyEventHandler>
extends KeyCodeEvent<HANDLER> {
@@ -764,6 +765,8 @@ public class Grid<T> extends Composite implements
private final EditorRow<T> editorRow = GWT.create(EditorRow.class);
+ private boolean dataIsBeingFetched = false;
+
/**
* Enumeration for easy setting of selection mode.
*/
@@ -1345,6 +1348,7 @@ public class Grid<T> extends Composite implements
public void onRowVisibilityChange(
RowVisibilityChangeEvent event) {
if (dataSource != null) {
+ dataIsBeingFetched = true;
dataSource.ensureAvailability(
event.getFirstVisibleRow(),
event.getVisibleRowCount());
@@ -1378,6 +1382,13 @@ public class Grid<T> extends Composite implements
sorter.sort(event.getActiveCell(), event.isShiftKeyDown());
}
});
+
+ addDataAvailableHandler(new DataAvailableHandler() {
+ @Override
+ public void onDataAvailable(DataAvailableEvent event) {
+ dataIsBeingFetched = false;
+ }
+ });
}
@Override
@@ -2874,4 +2885,9 @@ public class Grid<T> extends Composite implements
public HandlerRegistration addScrollHandler(ScrollHandler handler) {
return addHandler(handler, ScrollEvent.TYPE);
}
+
+ @Override
+ public boolean isWorkPending() {
+ return escalator.isWorkPending() || dataIsBeingFetched;
+ }
}