summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorHenrik Paul <henrik@vaadin.com>2014-08-27 15:18:30 +0300
committerHenrik Paul <henrik@vaadin.com>2014-08-28 11:31:41 +0000
commit1de6a75497bae315dfcb70c272225a6d3ea0af19 (patch)
treeb90ef2ae20c64438b795b34b8b306773197ebe53 /client
parentb49e431840030436bdcecfb0cff3ff38b6509b6b (diff)
downloadvaadin-framework-1de6a75497bae315dfcb70c272225a6d3ea0af19.tar.gz
vaadin-framework-1de6a75497bae315dfcb70c272225a6d3ea0af19.zip
ScrollbarBundle, Escalator and Grid fire Scroll events (#13334)
Change-Id: I362f1f8d2107d762b43ab52c1f22dfd218f67ba4
Diffstat (limited to 'client')
-rw-r--r--client/src/com/vaadin/client/ui/grid/Escalator.java22
-rw-r--r--client/src/com/vaadin/client/ui/grid/Grid.java61
-rw-r--r--client/src/com/vaadin/client/ui/grid/ScrollbarBundle.java55
-rw-r--r--client/src/com/vaadin/client/ui/grid/events/AbstractGridKeyEventHandler.java (renamed from client/src/com/vaadin/client/ui/grid/keyevents/AbstractGridKeyEventHandler.java)2
-rw-r--r--client/src/com/vaadin/client/ui/grid/events/BodyKeyDownHandler.java (renamed from client/src/com/vaadin/client/ui/grid/keyevents/BodyKeyDownHandler.java)4
-rw-r--r--client/src/com/vaadin/client/ui/grid/events/BodyKeyPressHandler.java (renamed from client/src/com/vaadin/client/ui/grid/keyevents/BodyKeyPressHandler.java)4
-rw-r--r--client/src/com/vaadin/client/ui/grid/events/BodyKeyUpHandler.java (renamed from client/src/com/vaadin/client/ui/grid/keyevents/BodyKeyUpHandler.java)4
-rw-r--r--client/src/com/vaadin/client/ui/grid/events/FooterKeyDownHandler.java (renamed from client/src/com/vaadin/client/ui/grid/keyevents/FooterKeyDownHandler.java)4
-rw-r--r--client/src/com/vaadin/client/ui/grid/events/FooterKeyPressHandler.java (renamed from client/src/com/vaadin/client/ui/grid/keyevents/FooterKeyPressHandler.java)4
-rw-r--r--client/src/com/vaadin/client/ui/grid/events/FooterKeyUpHandler.java (renamed from client/src/com/vaadin/client/ui/grid/keyevents/FooterKeyUpHandler.java)4
-rw-r--r--client/src/com/vaadin/client/ui/grid/events/GridKeyDownEvent.java (renamed from client/src/com/vaadin/client/ui/grid/keyevents/GridKeyDownEvent.java)4
-rw-r--r--client/src/com/vaadin/client/ui/grid/events/GridKeyPressEvent.java (renamed from client/src/com/vaadin/client/ui/grid/keyevents/GridKeyPressEvent.java)4
-rw-r--r--client/src/com/vaadin/client/ui/grid/events/GridKeyUpEvent.java (renamed from client/src/com/vaadin/client/ui/grid/keyevents/GridKeyUpEvent.java)4
-rw-r--r--client/src/com/vaadin/client/ui/grid/events/HeaderKeyDownHandler.java (renamed from client/src/com/vaadin/client/ui/grid/keyevents/HeaderKeyDownHandler.java)4
-rw-r--r--client/src/com/vaadin/client/ui/grid/events/HeaderKeyPressHandler.java (renamed from client/src/com/vaadin/client/ui/grid/keyevents/HeaderKeyPressHandler.java)4
-rw-r--r--client/src/com/vaadin/client/ui/grid/events/HeaderKeyUpHandler.java (renamed from client/src/com/vaadin/client/ui/grid/keyevents/HeaderKeyUpHandler.java)4
-rw-r--r--client/src/com/vaadin/client/ui/grid/events/ScrollEvent.java39
-rw-r--r--client/src/com/vaadin/client/ui/grid/events/ScrollHandler.java34
-rw-r--r--client/src/com/vaadin/client/ui/grid/selection/MultiSelectionRenderer.java8
19 files changed, 224 insertions, 45 deletions
diff --git a/client/src/com/vaadin/client/ui/grid/Escalator.java b/client/src/com/vaadin/client/ui/grid/Escalator.java
index dd220b2964..ceff55e303 100644
--- a/client/src/com/vaadin/client/ui/grid/Escalator.java
+++ b/client/src/com/vaadin/client/ui/grid/Escalator.java
@@ -57,6 +57,8 @@ import com.vaadin.client.ui.grid.PositionFunction.TranslatePosition;
import com.vaadin.client.ui.grid.PositionFunction.WebkitTranslate3DPosition;
import com.vaadin.client.ui.grid.ScrollbarBundle.HorizontalScrollbarBundle;
import com.vaadin.client.ui.grid.ScrollbarBundle.VerticalScrollbarBundle;
+import com.vaadin.client.ui.grid.events.ScrollEvent;
+import com.vaadin.client.ui.grid.events.ScrollHandler;
import com.vaadin.shared.ui.grid.GridState;
import com.vaadin.shared.ui.grid.HeightMode;
import com.vaadin.shared.ui.grid.Range;
@@ -3950,11 +3952,20 @@ public class Escalator extends Widget {
final Element root = DOM.createDiv();
setElement(root);
+ ScrollHandler scrollHandler = new ScrollHandler() {
+ @Override
+ public void onScroll(ScrollEvent event) {
+ fireEvent(new ScrollEvent());
+ }
+ };
+
root.appendChild(verticalScrollbar.getElement());
+ verticalScrollbar.addScrollHandler(scrollHandler);
verticalScrollbar.getElement().setTabIndex(-1);
verticalScrollbar.setScrollbarThickness(Util.getNativeScrollbarSize());
root.appendChild(horizontalScrollbar.getElement());
+ horizontalScrollbar.addScrollHandler(scrollHandler);
horizontalScrollbar.getElement().setTabIndex(-1);
horizontalScrollbar
.setScrollbarThickness(Util.getNativeScrollbarSize());
@@ -4668,4 +4679,15 @@ public class Escalator extends Widget {
+ direction);
}
}
+
+ /**
+ * Adds a scroll handler to this escalator
+ *
+ * @param handler
+ * the scroll handler to add
+ * @return a handler registration for the registered scroll handler
+ */
+ public HandlerRegistration addScrollHandler(ScrollHandler handler) {
+ return addHandler(handler, ScrollEvent.TYPE);
+ }
}
diff --git a/client/src/com/vaadin/client/ui/grid/Grid.java b/client/src/com/vaadin/client/ui/grid/Grid.java
index 4d8aa25c3b..9c12b37bb5 100644
--- a/client/src/com/vaadin/client/ui/grid/Grid.java
+++ b/client/src/com/vaadin/client/ui/grid/Grid.java
@@ -52,22 +52,24 @@ import com.vaadin.client.ui.SubPartAware;
import com.vaadin.client.ui.grid.GridFooter.FooterRow;
import com.vaadin.client.ui.grid.GridHeader.HeaderRow;
import com.vaadin.client.ui.grid.GridStaticSection.StaticCell;
-import com.vaadin.client.ui.grid.keyevents.AbstractGridKeyEventHandler;
-import com.vaadin.client.ui.grid.keyevents.AbstractGridKeyEventHandler.GridKeyDownHandler;
-import com.vaadin.client.ui.grid.keyevents.AbstractGridKeyEventHandler.GridKeyPressHandler;
-import com.vaadin.client.ui.grid.keyevents.AbstractGridKeyEventHandler.GridKeyUpHandler;
-import com.vaadin.client.ui.grid.keyevents.BodyKeyDownHandler;
-import com.vaadin.client.ui.grid.keyevents.BodyKeyPressHandler;
-import com.vaadin.client.ui.grid.keyevents.BodyKeyUpHandler;
-import com.vaadin.client.ui.grid.keyevents.FooterKeyDownHandler;
-import com.vaadin.client.ui.grid.keyevents.FooterKeyPressHandler;
-import com.vaadin.client.ui.grid.keyevents.FooterKeyUpHandler;
-import com.vaadin.client.ui.grid.keyevents.GridKeyDownEvent;
-import com.vaadin.client.ui.grid.keyevents.GridKeyPressEvent;
-import com.vaadin.client.ui.grid.keyevents.GridKeyUpEvent;
-import com.vaadin.client.ui.grid.keyevents.HeaderKeyDownHandler;
-import com.vaadin.client.ui.grid.keyevents.HeaderKeyPressHandler;
-import com.vaadin.client.ui.grid.keyevents.HeaderKeyUpHandler;
+import com.vaadin.client.ui.grid.events.AbstractGridKeyEventHandler;
+import com.vaadin.client.ui.grid.events.AbstractGridKeyEventHandler.GridKeyDownHandler;
+import com.vaadin.client.ui.grid.events.AbstractGridKeyEventHandler.GridKeyPressHandler;
+import com.vaadin.client.ui.grid.events.AbstractGridKeyEventHandler.GridKeyUpHandler;
+import com.vaadin.client.ui.grid.events.BodyKeyDownHandler;
+import com.vaadin.client.ui.grid.events.BodyKeyPressHandler;
+import com.vaadin.client.ui.grid.events.BodyKeyUpHandler;
+import com.vaadin.client.ui.grid.events.FooterKeyDownHandler;
+import com.vaadin.client.ui.grid.events.FooterKeyPressHandler;
+import com.vaadin.client.ui.grid.events.FooterKeyUpHandler;
+import com.vaadin.client.ui.grid.events.GridKeyDownEvent;
+import com.vaadin.client.ui.grid.events.GridKeyPressEvent;
+import com.vaadin.client.ui.grid.events.GridKeyUpEvent;
+import com.vaadin.client.ui.grid.events.HeaderKeyDownHandler;
+import com.vaadin.client.ui.grid.events.HeaderKeyPressHandler;
+import com.vaadin.client.ui.grid.events.HeaderKeyUpHandler;
+import com.vaadin.client.ui.grid.events.ScrollEvent;
+import com.vaadin.client.ui.grid.events.ScrollHandler;
import com.vaadin.client.ui.grid.renderers.ComplexRenderer;
import com.vaadin.client.ui.grid.renderers.WidgetRenderer;
import com.vaadin.client.ui.grid.selection.HasSelectionChangeHandlers;
@@ -1225,6 +1227,13 @@ public class Grid<T> extends Composite implements
setSelectionMode(SelectionMode.SINGLE);
+ escalator.addScrollHandler(new ScrollHandler() {
+ @Override
+ public void onScroll(ScrollEvent event) {
+ fireEvent(new ScrollEvent());
+ }
+ });
+
escalator
.addRowVisibilityChangeHandler(new RowVisibilityChangeHandler() {
@Override
@@ -1814,6 +1823,15 @@ public class Grid<T> extends Composite implements
return escalator.getScrollTop();
}
+ /**
+ * Gets the horizontal scroll offset
+ *
+ * @return the number of pixels this grid is scrolled to the right
+ */
+ public double getScrollLeft() {
+ return escalator.getScrollLeft();
+ }
+
private static final Logger getLogger() {
return Logger.getLogger(Grid.class.getName());
}
@@ -2560,4 +2578,15 @@ public class Grid<T> extends Composite implements
return firstRowIndex;
}
+
+ /**
+ * Adds a scroll handler to this grid
+ *
+ * @param handler
+ * the scroll handler to add
+ * @return a handler registration for the registered scroll handler
+ */
+ public HandlerRegistration addScrollHandler(ScrollHandler handler) {
+ return addHandler(handler, ScrollEvent.TYPE);
+ }
}
diff --git a/client/src/com/vaadin/client/ui/grid/ScrollbarBundle.java b/client/src/com/vaadin/client/ui/grid/ScrollbarBundle.java
index a45affb0be..ceaa4b9fec 100644
--- a/client/src/com/vaadin/client/ui/grid/ScrollbarBundle.java
+++ b/client/src/com/vaadin/client/ui/grid/ScrollbarBundle.java
@@ -16,6 +16,8 @@
package com.vaadin.client.ui.grid;
+import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.Style.Overflow;
import com.google.gwt.dom.client.Style.Unit;
@@ -27,6 +29,8 @@ import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.EventListener;
import com.google.gwt.user.client.Timer;
+import com.vaadin.client.ui.grid.events.ScrollEvent;
+import com.vaadin.client.ui.grid.events.ScrollHandler;
/**
* An element-like bundle representing a configurable and visual scrollbar in
@@ -39,6 +43,41 @@ import com.google.gwt.user.client.Timer;
*/
abstract class ScrollbarBundle {
+ private class ScrollEventFirer {
+ private final ScheduledCommand fireEventCommand = new ScheduledCommand() {
+ @Override
+ public void execute() {
+ if (!pixelValuesEqual(startScrollPos, getScrollPos())) {
+ getHandlerManager().fireEvent(new ScrollEvent());
+ }
+ reset();
+ }
+ };
+
+ private boolean isBeingFired;
+ private double startScrollPos;
+
+ public ScrollEventFirer() {
+ reset();
+ }
+
+ public void scheduleEvent() {
+ if (!isBeingFired) {
+ /*
+ * We'll gather all the scroll events, and only fire once, once
+ * everything has calmed down.
+ */
+ Scheduler.get().scheduleDeferred(fireEventCommand);
+ isBeingFired = true;
+ }
+ }
+
+ private void reset() {
+ isBeingFired = false;
+ startScrollPos = getScrollPos();
+ }
+ }
+
/**
* The orientation of the scrollbar.
*/
@@ -288,6 +327,8 @@ abstract class ScrollbarBundle {
private TemporaryResizer invisibleScrollbarTemporaryResizer = new TemporaryResizer();
+ private final ScrollEventFirer scrollEventFirer = new ScrollEventFirer();
+
private ScrollbarBundle() {
root.appendChild(scrollSizeElement);
}
@@ -409,6 +450,8 @@ abstract class ScrollbarBundle {
* only facilitating future virtual scrollbars.
*/
internalSetScrollPos(toInt32(scrollPos));
+
+ scrollEventFirer.scheduleEvent();
}
}
@@ -603,6 +646,7 @@ abstract class ScrollbarBundle {
int newScrollPos = internalGetScrollPos();
if (!isLocked()) {
scrollPos = newScrollPos;
+ scrollEventFirer.scheduleEvent();
} else if (scrollPos != newScrollPos) {
// we need to actually undo the setting of the scroll.
internalSetScrollPos(toInt32(scrollPos));
@@ -694,4 +738,15 @@ abstract class ScrollbarBundle {
* @return the scroll direction of this scrollbar bundle
*/
public abstract Direction getDirection();
+
+ /**
+ * Adds a scroll handler to the scrollbar bundle.
+ *
+ * @param handler
+ * the handler to add
+ * @return the registration object for the handler registration
+ */
+ public HandlerRegistration addScrollHandler(final ScrollHandler handler) {
+ return getHandlerManager().addHandler(ScrollEvent.TYPE, handler);
+ }
}
diff --git a/client/src/com/vaadin/client/ui/grid/keyevents/AbstractGridKeyEventHandler.java b/client/src/com/vaadin/client/ui/grid/events/AbstractGridKeyEventHandler.java
index 57708e8bc9..8dcd24305b 100644
--- a/client/src/com/vaadin/client/ui/grid/keyevents/AbstractGridKeyEventHandler.java
+++ b/client/src/com/vaadin/client/ui/grid/events/AbstractGridKeyEventHandler.java
@@ -13,7 +13,7 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
-package com.vaadin.client.ui.grid.keyevents;
+package com.vaadin.client.ui.grid.events;
import com.google.gwt.event.shared.EventHandler;
import com.vaadin.client.ui.grid.Grid.AbstractGridKeyEvent;
diff --git a/client/src/com/vaadin/client/ui/grid/keyevents/BodyKeyDownHandler.java b/client/src/com/vaadin/client/ui/grid/events/BodyKeyDownHandler.java
index 9e61624a28..2ec81174b9 100644
--- a/client/src/com/vaadin/client/ui/grid/keyevents/BodyKeyDownHandler.java
+++ b/client/src/com/vaadin/client/ui/grid/events/BodyKeyDownHandler.java
@@ -13,9 +13,9 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
-package com.vaadin.client.ui.grid.keyevents;
+package com.vaadin.client.ui.grid.events;
-import com.vaadin.client.ui.grid.keyevents.AbstractGridKeyEventHandler.GridKeyDownHandler;
+import com.vaadin.client.ui.grid.events.AbstractGridKeyEventHandler.GridKeyDownHandler;
/**
* Handler for {@link GridKeyDownEvent}s that happen when active cell is in the
diff --git a/client/src/com/vaadin/client/ui/grid/keyevents/BodyKeyPressHandler.java b/client/src/com/vaadin/client/ui/grid/events/BodyKeyPressHandler.java
index f44c1d172e..f328a11ab8 100644
--- a/client/src/com/vaadin/client/ui/grid/keyevents/BodyKeyPressHandler.java
+++ b/client/src/com/vaadin/client/ui/grid/events/BodyKeyPressHandler.java
@@ -13,9 +13,9 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
-package com.vaadin.client.ui.grid.keyevents;
+package com.vaadin.client.ui.grid.events;
-import com.vaadin.client.ui.grid.keyevents.AbstractGridKeyEventHandler.GridKeyPressHandler;
+import com.vaadin.client.ui.grid.events.AbstractGridKeyEventHandler.GridKeyPressHandler;
/**
* Handler for {@link GridKeyPressEvent}s that happen when active cell is in the
diff --git a/client/src/com/vaadin/client/ui/grid/keyevents/BodyKeyUpHandler.java b/client/src/com/vaadin/client/ui/grid/events/BodyKeyUpHandler.java
index a6b3929d80..f5cab67946 100644
--- a/client/src/com/vaadin/client/ui/grid/keyevents/BodyKeyUpHandler.java
+++ b/client/src/com/vaadin/client/ui/grid/events/BodyKeyUpHandler.java
@@ -13,9 +13,9 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
-package com.vaadin.client.ui.grid.keyevents;
+package com.vaadin.client.ui.grid.events;
-import com.vaadin.client.ui.grid.keyevents.AbstractGridKeyEventHandler.GridKeyUpHandler;
+import com.vaadin.client.ui.grid.events.AbstractGridKeyEventHandler.GridKeyUpHandler;
/**
* Handler for {@link GridKeyUpEvent}s that happen when active cell is in the
diff --git a/client/src/com/vaadin/client/ui/grid/keyevents/FooterKeyDownHandler.java b/client/src/com/vaadin/client/ui/grid/events/FooterKeyDownHandler.java
index 5e9fffdcda..e84da350dd 100644
--- a/client/src/com/vaadin/client/ui/grid/keyevents/FooterKeyDownHandler.java
+++ b/client/src/com/vaadin/client/ui/grid/events/FooterKeyDownHandler.java
@@ -13,9 +13,9 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
-package com.vaadin.client.ui.grid.keyevents;
+package com.vaadin.client.ui.grid.events;
-import com.vaadin.client.ui.grid.keyevents.AbstractGridKeyEventHandler.GridKeyDownHandler;
+import com.vaadin.client.ui.grid.events.AbstractGridKeyEventHandler.GridKeyDownHandler;
/**
* Handler for {@link GridKeyDownEvent}s that happen when active cell is in the
diff --git a/client/src/com/vaadin/client/ui/grid/keyevents/FooterKeyPressHandler.java b/client/src/com/vaadin/client/ui/grid/events/FooterKeyPressHandler.java
index d5713d9135..617e25f190 100644
--- a/client/src/com/vaadin/client/ui/grid/keyevents/FooterKeyPressHandler.java
+++ b/client/src/com/vaadin/client/ui/grid/events/FooterKeyPressHandler.java
@@ -13,9 +13,9 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
-package com.vaadin.client.ui.grid.keyevents;
+package com.vaadin.client.ui.grid.events;
-import com.vaadin.client.ui.grid.keyevents.AbstractGridKeyEventHandler.GridKeyPressHandler;
+import com.vaadin.client.ui.grid.events.AbstractGridKeyEventHandler.GridKeyPressHandler;
/**
* Handler for {@link GridKeyPressEvent}s that happen when active cell is in the
diff --git a/client/src/com/vaadin/client/ui/grid/keyevents/FooterKeyUpHandler.java b/client/src/com/vaadin/client/ui/grid/events/FooterKeyUpHandler.java
index 87978e1cd2..4dd3dc7f01 100644
--- a/client/src/com/vaadin/client/ui/grid/keyevents/FooterKeyUpHandler.java
+++ b/client/src/com/vaadin/client/ui/grid/events/FooterKeyUpHandler.java
@@ -13,9 +13,9 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
-package com.vaadin.client.ui.grid.keyevents;
+package com.vaadin.client.ui.grid.events;
-import com.vaadin.client.ui.grid.keyevents.AbstractGridKeyEventHandler.GridKeyUpHandler;
+import com.vaadin.client.ui.grid.events.AbstractGridKeyEventHandler.GridKeyUpHandler;
/**
* Handler for {@link GridKeyUpEvent}s that happen when active cell is in the
diff --git a/client/src/com/vaadin/client/ui/grid/keyevents/GridKeyDownEvent.java b/client/src/com/vaadin/client/ui/grid/events/GridKeyDownEvent.java
index 65c8327eb6..2fab683bb0 100644
--- a/client/src/com/vaadin/client/ui/grid/keyevents/GridKeyDownEvent.java
+++ b/client/src/com/vaadin/client/ui/grid/events/GridKeyDownEvent.java
@@ -13,12 +13,12 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
-package com.vaadin.client.ui.grid.keyevents;
+package com.vaadin.client.ui.grid.events;
import com.google.gwt.dom.client.BrowserEvents;
import com.vaadin.client.ui.grid.Grid;
import com.vaadin.client.ui.grid.Grid.AbstractGridKeyEvent;
-import com.vaadin.client.ui.grid.keyevents.AbstractGridKeyEventHandler.GridKeyDownHandler;
+import com.vaadin.client.ui.grid.events.AbstractGridKeyEventHandler.GridKeyDownHandler;
/**
* Represents native key down event in Grid.
diff --git a/client/src/com/vaadin/client/ui/grid/keyevents/GridKeyPressEvent.java b/client/src/com/vaadin/client/ui/grid/events/GridKeyPressEvent.java
index 388467990b..112200b03a 100644
--- a/client/src/com/vaadin/client/ui/grid/keyevents/GridKeyPressEvent.java
+++ b/client/src/com/vaadin/client/ui/grid/events/GridKeyPressEvent.java
@@ -13,12 +13,12 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
-package com.vaadin.client.ui.grid.keyevents;
+package com.vaadin.client.ui.grid.events;
import com.google.gwt.dom.client.BrowserEvents;
import com.vaadin.client.ui.grid.Grid;
import com.vaadin.client.ui.grid.Grid.AbstractGridKeyEvent;
-import com.vaadin.client.ui.grid.keyevents.AbstractGridKeyEventHandler.GridKeyPressHandler;
+import com.vaadin.client.ui.grid.events.AbstractGridKeyEventHandler.GridKeyPressHandler;
/**
* Represents native key press event in Grid.
diff --git a/client/src/com/vaadin/client/ui/grid/keyevents/GridKeyUpEvent.java b/client/src/com/vaadin/client/ui/grid/events/GridKeyUpEvent.java
index dd1fb33e3f..9aa8ce7084 100644
--- a/client/src/com/vaadin/client/ui/grid/keyevents/GridKeyUpEvent.java
+++ b/client/src/com/vaadin/client/ui/grid/events/GridKeyUpEvent.java
@@ -13,12 +13,12 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
-package com.vaadin.client.ui.grid.keyevents;
+package com.vaadin.client.ui.grid.events;
import com.google.gwt.dom.client.BrowserEvents;
import com.vaadin.client.ui.grid.Grid;
import com.vaadin.client.ui.grid.Grid.AbstractGridKeyEvent;
-import com.vaadin.client.ui.grid.keyevents.AbstractGridKeyEventHandler.GridKeyUpHandler;
+import com.vaadin.client.ui.grid.events.AbstractGridKeyEventHandler.GridKeyUpHandler;
/**
* Represents native key up event in Grid.
diff --git a/client/src/com/vaadin/client/ui/grid/keyevents/HeaderKeyDownHandler.java b/client/src/com/vaadin/client/ui/grid/events/HeaderKeyDownHandler.java
index d8a1132a84..a19bfad6bf 100644
--- a/client/src/com/vaadin/client/ui/grid/keyevents/HeaderKeyDownHandler.java
+++ b/client/src/com/vaadin/client/ui/grid/events/HeaderKeyDownHandler.java
@@ -13,9 +13,9 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
-package com.vaadin.client.ui.grid.keyevents;
+package com.vaadin.client.ui.grid.events;
-import com.vaadin.client.ui.grid.keyevents.AbstractGridKeyEventHandler.GridKeyDownHandler;
+import com.vaadin.client.ui.grid.events.AbstractGridKeyEventHandler.GridKeyDownHandler;
/**
* Handler for {@link GridKeyDownEvent}s that happen when active cell is in the
diff --git a/client/src/com/vaadin/client/ui/grid/keyevents/HeaderKeyPressHandler.java b/client/src/com/vaadin/client/ui/grid/events/HeaderKeyPressHandler.java
index a2245b1dfe..1188dc9b3e 100644
--- a/client/src/com/vaadin/client/ui/grid/keyevents/HeaderKeyPressHandler.java
+++ b/client/src/com/vaadin/client/ui/grid/events/HeaderKeyPressHandler.java
@@ -13,9 +13,9 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
-package com.vaadin.client.ui.grid.keyevents;
+package com.vaadin.client.ui.grid.events;
-import com.vaadin.client.ui.grid.keyevents.AbstractGridKeyEventHandler.GridKeyPressHandler;
+import com.vaadin.client.ui.grid.events.AbstractGridKeyEventHandler.GridKeyPressHandler;
/**
* Handler for {@link GridKeyPressEvent}s that happen when active cell is in the
diff --git a/client/src/com/vaadin/client/ui/grid/keyevents/HeaderKeyUpHandler.java b/client/src/com/vaadin/client/ui/grid/events/HeaderKeyUpHandler.java
index 405195ec94..3a8bc3e78a 100644
--- a/client/src/com/vaadin/client/ui/grid/keyevents/HeaderKeyUpHandler.java
+++ b/client/src/com/vaadin/client/ui/grid/events/HeaderKeyUpHandler.java
@@ -13,9 +13,9 @@
* License for the specific language governing permissions and limitations under
* the License.
*/
-package com.vaadin.client.ui.grid.keyevents;
+package com.vaadin.client.ui.grid.events;
-import com.vaadin.client.ui.grid.keyevents.AbstractGridKeyEventHandler.GridKeyUpHandler;
+import com.vaadin.client.ui.grid.events.AbstractGridKeyEventHandler.GridKeyUpHandler;
/**
* Handler for {@link GridKeyUpEvent}s that happen when active cell is in the
diff --git a/client/src/com/vaadin/client/ui/grid/events/ScrollEvent.java b/client/src/com/vaadin/client/ui/grid/events/ScrollEvent.java
new file mode 100644
index 0000000000..751823f9a5
--- /dev/null
+++ b/client/src/com/vaadin/client/ui/grid/events/ScrollEvent.java
@@ -0,0 +1,39 @@
+/*
+ * 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
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.client.ui.grid.events;
+
+import com.google.gwt.event.shared.GwtEvent;
+
+/**
+ * An event that signifies that a scrollbar bundle has been scrolled
+ *
+ * @author Vaadin Ltd
+ */
+public class ScrollEvent extends GwtEvent<ScrollHandler> {
+
+ /** The type of this event */
+ public static final Type<ScrollHandler> TYPE = new Type<ScrollHandler>();
+
+ @Override
+ public Type<ScrollHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ @Override
+ protected void dispatch(final ScrollHandler handler) {
+ handler.onScroll(this);
+ }
+}
diff --git a/client/src/com/vaadin/client/ui/grid/events/ScrollHandler.java b/client/src/com/vaadin/client/ui/grid/events/ScrollHandler.java
new file mode 100644
index 0000000000..473b18071a
--- /dev/null
+++ b/client/src/com/vaadin/client/ui/grid/events/ScrollHandler.java
@@ -0,0 +1,34 @@
+/*
+ * 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
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.client.ui.grid.events;
+
+import com.google.gwt.event.shared.EventHandler;
+
+/**
+ * A handler that gets called whenever a scrollbar bundle is scrolled
+ *
+ * @author Vaadin Ltd
+ */
+public interface ScrollHandler extends EventHandler {
+ /**
+ * A callback method that is called once a scrollbar bundle has been
+ * scrolled.
+ *
+ * @param event
+ * the scroll event
+ */
+ public void onScroll(ScrollEvent event);
+}
diff --git a/client/src/com/vaadin/client/ui/grid/selection/MultiSelectionRenderer.java b/client/src/com/vaadin/client/ui/grid/selection/MultiSelectionRenderer.java
index bfcc639a64..222c8ab806 100644
--- a/client/src/com/vaadin/client/ui/grid/selection/MultiSelectionRenderer.java
+++ b/client/src/com/vaadin/client/ui/grid/selection/MultiSelectionRenderer.java
@@ -41,10 +41,10 @@ import com.vaadin.client.ui.grid.DataAvailableEvent;
import com.vaadin.client.ui.grid.DataAvailableHandler;
import com.vaadin.client.ui.grid.FlyweightCell;
import com.vaadin.client.ui.grid.Grid;
-import com.vaadin.client.ui.grid.keyevents.BodyKeyDownHandler;
-import com.vaadin.client.ui.grid.keyevents.BodyKeyUpHandler;
-import com.vaadin.client.ui.grid.keyevents.GridKeyDownEvent;
-import com.vaadin.client.ui.grid.keyevents.GridKeyUpEvent;
+import com.vaadin.client.ui.grid.events.BodyKeyDownHandler;
+import com.vaadin.client.ui.grid.events.BodyKeyUpHandler;
+import com.vaadin.client.ui.grid.events.GridKeyDownEvent;
+import com.vaadin.client.ui.grid.events.GridKeyUpEvent;
import com.vaadin.client.ui.grid.renderers.ComplexRenderer;
import com.vaadin.client.ui.grid.selection.SelectionModel.Multi.Batched;
import com.vaadin.shared.ui.grid.ScrollDestination;