Browse Source

reordering of columns on touch devices now work

svn changeset:18228/svn branch:6.6
tags/6.7.0.beta1
Matti Tahvonen 13 years ago
parent
commit
f63738e10a
1 changed files with 44 additions and 11 deletions
  1. 44
    11
      src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java

+ 44
- 11
src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java View File

@@ -1832,7 +1832,6 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,

DOM.setElementProperty(colResizeWidget, "className", CLASSNAME
+ "-resizer");
DOM.sinkEvents(colResizeWidget, Event.MOUSEEVENTS);

setText(headerText);

@@ -1848,11 +1847,9 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
// ensure no clipping initially (problem on column additions)
DOM.setStyleAttribute(captionContainer, "overflow", "visible");

DOM.sinkEvents(captionContainer, Event.MOUSEEVENTS);

DOM.appendChild(td, captionContainer);

DOM.sinkEvents(td, Event.MOUSEEVENTS);
DOM.sinkEvents(td, Event.MOUSEEVENTS | Event.TOUCHEVENTS);

setElement(td);

@@ -1944,7 +1941,9 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
if (enabled && event != null) {
if (isResizing
|| event.getEventTarget().cast() == colResizeWidget) {
if (dragging && DOM.eventGetType(event) == Event.ONMOUSEUP) {
if (dragging
&& (event.getTypeInt() == Event.ONMOUSEUP || event
.getTypeInt() == Event.ONTOUCHEND)) {
// Handle releasing column header on spacer #5318
handleCaptionEvent(event);
} else {
@@ -1957,7 +1956,8 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
* variables from other components that fire variables when
* they lose focus.
*/
if (DOM.eventGetType(event) == Event.ONMOUSEDOWN) {
if (event.getTypeInt() == Event.ONMOUSEDOWN
|| event.getTypeInt() == Event.ONTOUCHSTART) {
scrollBodyPanel.setFocus(true);
}
handleCaptionEvent(event);
@@ -2015,17 +2015,27 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,

protected void handleCaptionEvent(Event event) {
switch (DOM.eventGetType(event)) {
case Event.ONTOUCHSTART:
case Event.ONMOUSEDOWN:
if (columnReordering) {
if (event.getTypeInt() == Event.ONTOUCHSTART) {
/*
* prevent using this event in e.g. scrolling
*/
event.stopPropagation();
}
dragging = true;
moved = false;
colIndex = getColIndexByKey(cid);
DOM.setCapture(getElement());
headerX = tHead.getAbsoluteLeft();
DOM.eventPreventDefault(event); // prevent selecting text
event.preventDefault(); // prevent selecting text &&
// generated touch events
}
break;
case Event.ONMOUSEUP:
case Event.ONTOUCHEND:
case Event.ONTOUCHCANCEL:
if (columnReordering) {
dragging = false;
DOM.releaseCapture(getElement());
@@ -2041,6 +2051,14 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
}
}
}
if (Util.isTouchEvent(event)) {
/*
* Prevent using in e.g. scrolling and prevent generated
* events.
*/
event.preventDefault();
event.stopPropagation();
}
}

if (!moved) {
@@ -2067,18 +2085,33 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
rowRequestHandler.run(); // run immediately
}
fireHeaderClickedEvent(event);
if (Util.isTouchEvent(event)) {
/*
* Prevent using in e.g. scrolling and prevent generated
* events.
*/
event.preventDefault();
event.stopPropagation();
}
break;
}
break;
case Event.ONTOUCHMOVE:
case Event.ONMOUSEMOVE:
if (dragging) {
if (event.getTypeInt() == Event.ONTOUCHMOVE) {
/*
* prevent using this event in e.g. scrolling
*/
event.stopPropagation();
}
if (!moved) {
createFloatingCopy();
moved = true;
}
final int x = DOM.eventGetClientX(event)
+ DOM.getElementPropertyInt(tHead.hTableWrapper,
"scrollLeft");
final int clientX = Util.getTouchOrMouseClientX(event);
final int x = clientX + tHead.hTableWrapper.getScrollLeft();
int slotX = headerX;
closestSlot = colIndex;
int closestDistance = -1;
@@ -2100,7 +2133,7 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
}
tHead.focusSlot(closestSlot);

updateFloatingCopysPosition(DOM.eventGetClientX(event), -1);
updateFloatingCopysPosition(clientX, -1);
}
break;
default:

Loading…
Cancel
Save