summaryrefslogtreecommitdiffstats
path: root/src/com/vaadin/ui/Tree.java
diff options
context:
space:
mode:
authorMatti Tahvonen <matti.tahvonen@itmill.com>2010-01-31 13:55:43 +0000
committerMatti Tahvonen <matti.tahvonen@itmill.com>2010-01-31 13:55:43 +0000
commitc7c9e8c2c7b52a82882ed9165f84494802211749 (patch)
tree4f48299fe7db771ea2294381a89d156671988dc0 /src/com/vaadin/ui/Tree.java
parent9c57035c34e8228c602b61672587c30b3be2fe1f (diff)
downloadvaadin-framework-c7c9e8c2c7b52a82882ed9165f84494802211749.tar.gz
vaadin-framework-c7c9e8c2c7b52a82882ed9165f84494802211749.zip
svn changeset:11066/svn branch:6.3_dd
Diffstat (limited to 'src/com/vaadin/ui/Tree.java')
-rw-r--r--src/com/vaadin/ui/Tree.java66
1 files changed, 47 insertions, 19 deletions
diff --git a/src/com/vaadin/ui/Tree.java b/src/com/vaadin/ui/Tree.java
index 8e5cd8aca7..61c667cde0 100644
--- a/src/com/vaadin/ui/Tree.java
+++ b/src/com/vaadin/ui/Tree.java
@@ -31,11 +31,11 @@ import com.vaadin.event.ItemClickEvent;
import com.vaadin.event.Transferable;
import com.vaadin.event.ItemClickEvent.ItemClickListener;
import com.vaadin.event.ItemClickEvent.ItemClickSource;
+import com.vaadin.terminal.DragSource;
import com.vaadin.terminal.KeyMapper;
import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;
import com.vaadin.terminal.Resource;
-import com.vaadin.terminal.TransferTranslator;
import com.vaadin.terminal.gwt.client.MouseEventDetails;
import com.vaadin.terminal.gwt.client.ui.VTree;
@@ -51,7 +51,7 @@ import com.vaadin.terminal.gwt.client.ui.VTree;
@SuppressWarnings("serial")
@ClientWidget(VTree.class)
public class Tree extends AbstractSelect implements Container.Hierarchical,
- Action.Container, ItemClickSource, TransferTranslator, HasDropHandler {
+ Action.Container, ItemClickSource, DragSource, HasDropHandler {
private static final Method EXPAND_METHOD;
@@ -145,27 +145,16 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
}
public Transferable getTransferrable(Transferable transferable,
- Map<String, Object> rawVariables, boolean isDropTarget) {
+ Map<String, Object> payload) {
if (transferable == null) {
transferable = new TreeTransferrable();
}
- Map<String, Object> payload = (Map<String, Object>) rawVariables
- .get("payload");
- if (isDropTarget) {
- // updating drag target variables
- Object object = payload.get("itemIdOver");
- Object object2 = itemIdMapper.get((String) object);
- transferable.setData("itemIdOver", object2);
- payload.remove("itemIdOver");
- } else {
- // updating drag source variables
- Object object = payload.get("itemId");
- if (object != null) {
- transferable.setData("itemId", itemIdMapper
- .get((String) object));
- }
- payload.remove("itemId");
+ // updating drag source variables
+ Object object = payload.get("itemId");
+ if (object != null) {
+ transferable.setData("itemId", itemIdMapper.get((String) object));
}
+ payload.remove("itemId");
return transferable;
}
@@ -1162,4 +1151,43 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
this.abstractDropHandler = abstractDropHandler;
}
+ public Object getDragEventDetails(Map<String, Object> rawVariables) {
+ return new TreeDropDetails(rawVariables);
+ }
+
+ public enum Location {
+ TOP, BOTTOM, MIDDLE
+ }
+
+ public class TreeDropDetails {
+
+ private Map<String, Object> vars;
+ private Object idOver;
+
+ TreeDropDetails(Map<String, Object> rawVariables) {
+ vars = rawVariables;
+ // eagar fetch itemid, mapper may be emptied
+ String keyover = (String) vars.get("itemIdOver");
+ if (keyover != null) {
+ idOver = itemIdMapper.get(keyover);
+ }
+ }
+
+ public Object getItemIdOver() {
+ return idOver;
+ }
+
+ public Location getDropLocation() {
+ String s = (String) vars.get("detail");
+ if ("Top".equals(s)) {
+ return Location.TOP;
+ } else if ("Bottom".equals(s)) {
+ return Location.BOTTOM;
+ } else {
+ return Location.MIDDLE;
+ }
+ }
+
+ }
+
}