]> source.dussan.org Git - vaadin-framework.git/commitdiff
#8720 Use TouchScrollDelegate.enableTouchScrolling() instead of a TouchScrollDelegate...
authorJohannes Dahlström <johannes.dahlstrom@vaadin.com>
Fri, 4 May 2012 14:44:22 +0000 (14:44 +0000)
committerJohannes Dahlström <johannes.dahlstrom@vaadin.com>
Fri, 4 May 2012 14:44:22 +0000 (14:44 +0000)
svn changeset:23681/svn branch:6.8

src/com/vaadin/terminal/gwt/client/ui/VTabsheetPanel.java

index 126b0ebea1e54ab20b90042898e60385edcfad72..f1dbea18b2844aab92a1942fda81b2c860263921 100644 (file)
@@ -4,16 +4,13 @@
 
 package com.vaadin.terminal.gwt.client.ui;
 
-import com.google.gwt.dom.client.Node;
-import com.google.gwt.dom.client.NodeList;
-import com.google.gwt.event.dom.client.TouchStartEvent;
-import com.google.gwt.event.dom.client.TouchStartHandler;
 import com.google.gwt.user.client.DOM;
 import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.ui.ComplexPanel;
 import com.google.gwt.user.client.ui.Widget;
 import com.vaadin.terminal.gwt.client.Util;
+import com.vaadin.terminal.gwt.client.ui.TouchScrollDelegate.TouchScrollHandler;
 
 /**
  * A panel that displays all of its child widgets in a 'deck', where only one
@@ -27,7 +24,8 @@ import com.vaadin.terminal.gwt.client.Util;
 public class VTabsheetPanel extends ComplexPanel {
 
     private Widget visibleWidget;
-    private TouchScrollDelegate touchScrollDelegate;
+
+    private TouchScrollHandler touchScrollHandler;
 
     /**
      * Creates an empty tabsheet panel.
@@ -35,30 +33,8 @@ public class VTabsheetPanel extends ComplexPanel {
     public VTabsheetPanel() {
         setElement(DOM.createDiv());
         sinkEvents(Event.TOUCHEVENTS);
-        addDomHandler(new TouchStartHandler() {
-            public void onTouchStart(TouchStartEvent event) {
-                /*
-                 * All container elements needs to be scrollable by one finger.
-                 * Update the scrollable element list of touch delegate on each
-                 * touch start.
-                 */
-                NodeList<Node> childNodes = getElement().getChildNodes();
-                Element[] elements = new Element[childNodes.getLength()];
-                for (int i = 0; i < elements.length; i++) {
-                    elements[i] = (Element) childNodes.getItem(i);
-                }
-                getTouchScrollDelegate().setElements(elements);
-                getTouchScrollDelegate().onTouchStart(event);
-            }
-        }, TouchStartEvent.getType());
-    }
-
-    protected TouchScrollDelegate getTouchScrollDelegate() {
-        if (touchScrollDelegate == null) {
-            touchScrollDelegate = new TouchScrollDelegate();
-        }
-        return touchScrollDelegate;
 
+        touchScrollHandler = TouchScrollDelegate.enableTouchScrolling(this);
     }
 
     /**
@@ -77,7 +53,6 @@ public class VTabsheetPanel extends ComplexPanel {
     private Element createContainerElement() {
         Element el = DOM.createDiv();
         DOM.setStyleAttribute(el, "position", "absolute");
-        DOM.setStyleAttribute(el, "overflow", "auto");
         hide(el);
         return el;
     }
@@ -142,6 +117,8 @@ public class VTabsheetPanel extends ComplexPanel {
             }
             visibleWidget = newVisible;
             unHide(DOM.getParent(visibleWidget.getElement()));
+            touchScrollHandler.setElements(visibleWidget.getElement()
+                    .getParentElement());
         }
     }
 
@@ -199,7 +176,6 @@ public class VTabsheetPanel extends ComplexPanel {
             Util.runWebkitOverflowAutoFix(DOM.getParent(visibleWidget
                     .getElement()));
         }
-
     }
 
     public void replaceComponent(Widget oldComponent, Widget newComponent) {