aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohannes Dahlström <johannesd@vaadin.com>2012-06-11 14:17:13 +0300
committerJohannes Dahlström <johannesd@vaadin.com>2012-06-11 14:17:13 +0300
commit1a5bf24356cbdc347fabcfe6ba92cfbf69df3c02 (patch)
treeeb055a39c6076c4ef54385d1ae508d2bbbf3b56d /src
parent937d371e62fad4fa3bfaeddd6bc64ff9ef7a6dc1 (diff)
parentecd02651e7a27b964515cfd41b956a82f2886f43 (diff)
downloadvaadin-framework-1a5bf24356cbdc347fabcfe6ba92cfbf69df3c02.tar.gz
vaadin-framework-1a5bf24356cbdc347fabcfe6ba92cfbf69df3c02.zip
Merge commit 'ecd026'
Conflicts: src/com/vaadin/ui/TreeTable.java
Diffstat (limited to 'src')
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/dd/DDUtil.java21
-rw-r--r--src/com/vaadin/ui/TreeTable.java30
2 files changed, 44 insertions, 7 deletions
diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/DDUtil.java b/src/com/vaadin/terminal/gwt/client/ui/dd/DDUtil.java
index 02c1fe5061..97f5eb86fd 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/dd/DDUtil.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/dd/DDUtil.java
@@ -5,6 +5,7 @@ package com.vaadin.terminal.gwt.client.ui.dd;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.user.client.Element;
+import com.google.gwt.user.client.Window;
import com.vaadin.terminal.gwt.client.Util;
public class DDUtil {
@@ -43,8 +44,11 @@ public class DDUtil {
public static VerticalDropLocation getVerticalDropLocation(Element element,
int offsetHeight, int clientY, double topBottomRatio) {
- int absoluteTop = element.getAbsoluteTop();
- int fromTop = clientY - absoluteTop;
+ // Event coordinates are relative to the viewport, element absolute
+ // position is relative to the document. Make element position relative
+ // to viewport by adjusting for viewport scrolling. See #6021
+ int elementTop = element.getAbsoluteTop() - Window.getScrollTop();
+ int fromTop = clientY - elementTop;
float percentageFromTop = (fromTop / (float) offsetHeight);
if (percentageFromTop < topBottomRatio) {
@@ -74,14 +78,17 @@ public class DDUtil {
public static HorizontalDropLocation getHorizontalDropLocation(
Element element, int clientX, double leftRightRatio) {
- int absoluteLeft = element.getAbsoluteLeft();
+ // Event coordinates are relative to the viewport, element absolute
+ // position is relative to the document. Make element position relative
+ // to viewport by adjusting for viewport scrolling. See #6021
+ int elementLeft = element.getAbsoluteLeft() - Window.getScrollLeft();
int offsetWidth = element.getOffsetWidth();
- int fromTop = clientX - absoluteLeft;
+ int fromLeft = clientX - elementLeft;
- float percentageFromTop = (fromTop / (float) offsetWidth);
- if (percentageFromTop < leftRightRatio) {
+ float percentageFromLeft = (fromLeft / (float) offsetWidth);
+ if (percentageFromLeft < leftRightRatio) {
return HorizontalDropLocation.LEFT;
- } else if (percentageFromTop > 1 - leftRightRatio) {
+ } else if (percentageFromLeft > 1 - leftRightRatio) {
return HorizontalDropLocation.RIGHT;
} else {
return HorizontalDropLocation.CENTER;
diff --git a/src/com/vaadin/ui/TreeTable.java b/src/com/vaadin/ui/TreeTable.java
index 9607add2c9..74faac4781 100644
--- a/src/com/vaadin/ui/TreeTable.java
+++ b/src/com/vaadin/ui/TreeTable.java
@@ -84,6 +84,7 @@ public class TreeTable extends Table implements Hierarchical {
* Consider adding getDepth to {@link Collapsible}, might help
* scalability with some container implementations.
*/
+ @Override
public int getDepth(Object itemId) {
int depth = 0;
Hierarchical hierarchicalContainer = getContainerDataSource();
@@ -94,6 +95,7 @@ public class TreeTable extends Table implements Hierarchical {
return depth;
}
+ @Override
public void containerItemSetChange(ItemSetChangeEvent event) {
}
@@ -112,44 +114,54 @@ public class TreeTable extends Table implements Hierarchical {
return (Collapsible) getContainerDataSource();
}
+ @Override
public void toggleChildVisibility(Object itemId) {
c().setCollapsed(itemId, !c().isCollapsed(itemId));
}
+ @Override
public boolean isNodeOpen(Object itemId) {
return !c().isCollapsed(itemId);
}
+ @Override
public int size() {
return TreeTable.super.size();
}
+ @Override
public Object getIdByIndex(int index) {
return TreeTable.super.getIdByIndex(index);
}
+ @Override
public int indexOfId(Object id) {
return TreeTable.super.indexOfId(id);
}
+ @Override
public boolean isLastId(Object itemId) {
// using the default impl
return TreeTable.super.isLastId(itemId);
}
+ @Override
public Object lastItemId() {
// using the default impl
return TreeTable.super.lastItemId();
}
+ @Override
public Object nextItemId(Object itemId) {
return TreeTable.super.nextItemId(itemId);
}
+ @Override
public Object prevItemId(Object itemId) {
return TreeTable.super.prevItemId(itemId);
}
+ @Override
public Collection<?> getItemIds() {
return TreeTable.super.getItemIds();
}
@@ -167,18 +179,22 @@ public class TreeTable extends Table implements Hierarchical {
private final HashSet<Object> openItems = new HashSet<Object>();
+ @Override
public boolean isNodeOpen(Object itemId) {
return openItems.contains(itemId);
}
+ @Override
public int size() {
return getPreOrder().size();
}
+ @Override
public Collection<Object> getItemIds() {
return Collections.unmodifiableCollection(getPreOrder());
}
+ @Override
public boolean isLastId(Object itemId) {
if (itemId == null) {
return false;
@@ -187,6 +203,7 @@ public class TreeTable extends Table implements Hierarchical {
return itemId.equals(lastItemId());
}
+ @Override
public Object lastItemId() {
if (getPreOrder().size() > 0) {
return getPreOrder().get(getPreOrder().size() - 1);
@@ -195,6 +212,7 @@ public class TreeTable extends Table implements Hierarchical {
}
}
+ @Override
public Object nextItemId(Object itemId) {
int indexOf = getPreOrder().indexOf(itemId);
if (indexOf == -1) {
@@ -208,6 +226,7 @@ public class TreeTable extends Table implements Hierarchical {
}
}
+ @Override
public Object prevItemId(Object itemId) {
int indexOf = getPreOrder().indexOf(itemId);
indexOf--;
@@ -218,6 +237,7 @@ public class TreeTable extends Table implements Hierarchical {
}
}
+ @Override
public void toggleChildVisibility(Object itemId) {
boolean removed = openItems.remove(itemId);
if (!removed) {
@@ -267,10 +287,12 @@ public class TreeTable extends Table implements Hierarchical {
}
+ @Override
public int indexOfId(Object id) {
return getPreOrder().indexOf(id);
}
+ @Override
public Object getIdByIndex(int index) {
return getPreOrder().get(index);
}
@@ -612,36 +634,44 @@ public class TreeTable extends Table implements Hierarchical {
return getContainerStrategy().getItemIds();
}
+ @Override
public boolean areChildrenAllowed(Object itemId) {
return getContainerDataSource().areChildrenAllowed(itemId);
}
+ @Override
public Collection<?> getChildren(Object itemId) {
return getContainerDataSource().getChildren(itemId);
}
+ @Override
public Object getParent(Object itemId) {
return getContainerDataSource().getParent(itemId);
}
+ @Override
public boolean hasChildren(Object itemId) {
return getContainerDataSource().hasChildren(itemId);
}
+ @Override
public boolean isRoot(Object itemId) {
return getContainerDataSource().isRoot(itemId);
}
+ @Override
public Collection<?> rootItemIds() {
return getContainerDataSource().rootItemIds();
}
+ @Override
public boolean setChildrenAllowed(Object itemId, boolean areChildrenAllowed)
throws UnsupportedOperationException {
return getContainerDataSource().setChildrenAllowed(itemId,
areChildrenAllowed);
}
+ @Override
public boolean setParent(Object itemId, Object newParentId)
throws UnsupportedOperationException {
return getContainerDataSource().setParent(itemId, newParentId);