diff options
author | Henrik Paul <henrik@vaadin.com> | 2014-09-09 13:15:36 +0300 |
---|---|---|
committer | Henrik Paul <henrik@vaadin.com> | 2014-09-22 11:05:50 +0300 |
commit | b845b9e5f7e2586eb6436b6e6a9b8e5eb7cdaf46 (patch) | |
tree | 56ee5921f773f85fbca73d0360e400483fbcee27 /client | |
parent | 9542a79187efc287e0ac5d1c7ca3911587e6f059 (diff) | |
download | vaadin-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.java | 14 | ||||
-rw-r--r-- | client/src/com/vaadin/client/ui/grid/Grid.java | 18 |
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; + } } |