summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMatti Tahvonen <matti.tahvonen@itmill.com>2010-02-19 13:57:33 +0000
committerMatti Tahvonen <matti.tahvonen@itmill.com>2010-02-19 13:57:33 +0000
commit1640902d0c533354034f75b050849de982a2d99a (patch)
treeedaeb3d98ce8f297fbadc0611210d6903a3ce2e8 /src
parent7ce8cb30bff4d1ff8b90c3be00dabf6f6fc66f01 (diff)
downloadvaadin-framework-1640902d0c533354034f75b050849de982a2d99a.tar.gz
vaadin-framework-1640902d0c533354034f75b050849de982a2d99a.zip
removed component transferable (integrated to transferable), changed one test to use draganddropwrapper instead of dragdroppane (to be removed)
svn changeset:11407/svn branch:6.3_dd
Diffstat (limited to 'src')
-rw-r--r--src/com/vaadin/event/DataBoundTransferable.java2
-rw-r--r--src/com/vaadin/event/Transferable.java7
-rw-r--r--src/com/vaadin/event/TransferableImpl.java (renamed from src/com/vaadin/event/ComponentTransferable.java)4
-rw-r--r--src/com/vaadin/event/dd/acceptCriteria/ComponentFilter.java6
-rw-r--r--src/com/vaadin/event/dd/acceptCriteria/SourceIsSameAsTarget.java6
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/VDragAndDropWrapper.java5
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/dd/VDragAndDropManager.java3
-rw-r--r--src/com/vaadin/terminal/gwt/server/DragAndDropService.java31
-rw-r--r--src/com/vaadin/ui/DragAndDropWrapper.java70
-rw-r--r--src/com/vaadin/ui/DragDropPane.java9
-rw-r--r--src/com/vaadin/ui/Tree.java1
11 files changed, 97 insertions, 47 deletions
diff --git a/src/com/vaadin/event/DataBoundTransferable.java b/src/com/vaadin/event/DataBoundTransferable.java
index ddb3cb17ce..9ec492f9d7 100644
--- a/src/com/vaadin/event/DataBoundTransferable.java
+++ b/src/com/vaadin/event/DataBoundTransferable.java
@@ -4,7 +4,7 @@ import java.util.Map;
import com.vaadin.ui.Component;
-public abstract class DataBoundTransferable extends ComponentTransferable {
+public abstract class DataBoundTransferable extends TransferableImpl {
public DataBoundTransferable(Component sourceComponent,
Map<String, Object> rawVariables) {
diff --git a/src/com/vaadin/event/Transferable.java b/src/com/vaadin/event/Transferable.java
index 5ce4adfb8f..c2b75630cb 100644
--- a/src/com/vaadin/event/Transferable.java
+++ b/src/com/vaadin/event/Transferable.java
@@ -2,6 +2,8 @@ package com.vaadin.event;
import java.util.Collection;
+import com.vaadin.ui.Component;
+
public interface Transferable {
public Object getData(String dataFlawor);
@@ -10,4 +12,9 @@ public interface Transferable {
public Collection<String> getDataFlawors();
+ /**
+ * @return the component that created the Transferable
+ */
+ public Component getSourceComponent();
+
}
diff --git a/src/com/vaadin/event/ComponentTransferable.java b/src/com/vaadin/event/TransferableImpl.java
index 2b7ac6696e..a03c572330 100644
--- a/src/com/vaadin/event/ComponentTransferable.java
+++ b/src/com/vaadin/event/TransferableImpl.java
@@ -6,11 +6,11 @@ import java.util.Map;
import com.vaadin.ui.Component;
-public class ComponentTransferable implements Transferable {
+public class TransferableImpl implements Transferable {
private Map<String, Object> rawVariables = new HashMap<String, Object>();
private Component sourceComponent;
- public ComponentTransferable(Component sourceComponent,
+ public TransferableImpl(Component sourceComponent,
Map<String, Object> rawVariables) {
this.sourceComponent = sourceComponent;
this.rawVariables = rawVariables;
diff --git a/src/com/vaadin/event/dd/acceptCriteria/ComponentFilter.java b/src/com/vaadin/event/dd/acceptCriteria/ComponentFilter.java
index fc0ffd2c53..2da81d64bd 100644
--- a/src/com/vaadin/event/dd/acceptCriteria/ComponentFilter.java
+++ b/src/com/vaadin/event/dd/acceptCriteria/ComponentFilter.java
@@ -3,7 +3,7 @@
*/
package com.vaadin.event.dd.acceptCriteria;
-import com.vaadin.event.ComponentTransferable;
+import com.vaadin.event.TransferableImpl;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;
@@ -28,8 +28,8 @@ public class ComponentFilter extends ClientSideCriterion {
}
public boolean accepts(DragAndDropEvent dragEvent) {
- if (dragEvent.getTransferable() instanceof ComponentTransferable) {
- Component sourceComponent = ((ComponentTransferable) dragEvent
+ if (dragEvent.getTransferable() instanceof TransferableImpl) {
+ Component sourceComponent = ((TransferableImpl) dragEvent
.getTransferable()).getSourceComponent();
for (Component c : component) {
if (c == sourceComponent) {
diff --git a/src/com/vaadin/event/dd/acceptCriteria/SourceIsSameAsTarget.java b/src/com/vaadin/event/dd/acceptCriteria/SourceIsSameAsTarget.java
index a0a0afe37a..778088a304 100644
--- a/src/com/vaadin/event/dd/acceptCriteria/SourceIsSameAsTarget.java
+++ b/src/com/vaadin/event/dd/acceptCriteria/SourceIsSameAsTarget.java
@@ -3,7 +3,7 @@
*/
package com.vaadin.event.dd.acceptCriteria;
-import com.vaadin.event.ComponentTransferable;
+import com.vaadin.event.TransferableImpl;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.event.dd.DropTarget;
import com.vaadin.terminal.gwt.client.ui.dd.VSourceIsSameAsTarget;
@@ -13,8 +13,8 @@ import com.vaadin.ui.Component;
public class SourceIsSameAsTarget extends ClientSideCriterion {
public boolean accepts(DragAndDropEvent dragEvent) {
- if (dragEvent.getTransferable() instanceof ComponentTransferable) {
- Component sourceComponent = ((ComponentTransferable) dragEvent
+ if (dragEvent.getTransferable() instanceof TransferableImpl) {
+ Component sourceComponent = ((TransferableImpl) dragEvent
.getTransferable()).getSourceComponent();
DropTarget target = dragEvent.getDropTargetData().getTarget();
return sourceComponent == target;
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VDragAndDropWrapper.java b/src/com/vaadin/terminal/gwt/client/ui/VDragAndDropWrapper.java
index 70072a8066..27a14f9c80 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VDragAndDropWrapper.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VDragAndDropWrapper.java
@@ -10,6 +10,7 @@ import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.ui.Widget;
import com.vaadin.terminal.gwt.client.ApplicationConnection;
+import com.vaadin.terminal.gwt.client.MouseEventDetails;
import com.vaadin.terminal.gwt.client.Paintable;
import com.vaadin.terminal.gwt.client.RenderInformation;
import com.vaadin.terminal.gwt.client.UIDL;
@@ -68,6 +69,9 @@ public class VDragAndDropWrapper extends VCustomComponent implements
paintable = VDragAndDropWrapper.this;
}
+ transferable.setData("mouseDown", new MouseEventDetails(
+ event.getNativeEvent()).serialize());
+
startDrag.createDragImage(
((Widget) paintable).getElement(), true);
event.preventDefault(); // prevent text selection
@@ -112,6 +116,7 @@ public class VDragAndDropWrapper extends VCustomComponent implements
}
ApplicationConnection.getConsole().log("HTML 5 Drag Enter");
VTransferable transferable = new VTransferable();
+ transferable.setDragSource(this);
vaadinDragEvent = VDragAndDropManager.get().startDrag(transferable,
event, false);
diff --git a/src/com/vaadin/terminal/gwt/client/ui/dd/VDragAndDropManager.java b/src/com/vaadin/terminal/gwt/client/ui/dd/VDragAndDropManager.java
index 8c7617537a..6b58d36b90 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/dd/VDragAndDropManager.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/dd/VDragAndDropManager.java
@@ -534,8 +534,7 @@ public class VDragAndDropManager {
mouseEventDetails.serialize());
} catch (Exception e) {
// NOP, (at least oophm on Safari) can't serialize html dd event
- // to
- // mouseevent
+ // to mouseevent
}
} else {
currentDrag.getDropDetails().put("mouseEvent", null);
diff --git a/src/com/vaadin/terminal/gwt/server/DragAndDropService.java b/src/com/vaadin/terminal/gwt/server/DragAndDropService.java
index 8255aadbbb..f88903bdee 100644
--- a/src/com/vaadin/terminal/gwt/server/DragAndDropService.java
+++ b/src/com/vaadin/terminal/gwt/server/DragAndDropService.java
@@ -1,11 +1,9 @@
package com.vaadin.terminal.gwt.server;
import java.io.PrintWriter;
-import java.util.Collection;
-import java.util.HashMap;
import java.util.Map;
-import com.vaadin.event.ComponentTransferable;
+import com.vaadin.event.TransferableImpl;
import com.vaadin.event.Transferable;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.event.dd.DragSource;
@@ -179,30 +177,9 @@ public class DragAndDropService implements VariableOwner {
if (sourceComponent != null && sourceComponent instanceof DragSource) {
transferable = ((DragSource) sourceComponent)
.getTransferable(variables);
- } else {
- if (transferable == null) {
- if (sourceComponent != null) {
- transferable = new ComponentTransferable(sourceComponent,
- variables);
- } else {
- transferable = new Transferable() {
- private Map<String, Object> td = new HashMap<String, Object>();
-
- public Object getData(String dataFlawor) {
- return td.get(dataFlawor);
- }
-
- public void setData(String dataFlawor, Object value) {
- td.put(dataFlawor, value);
- }
-
- public Collection<String> getDataFlawors() {
- return td.keySet();
- }
-
- };
- }
- }
+ }
+ if (transferable == null) {
+ transferable = new TransferableImpl(sourceComponent, variables);
}
return transferable;
diff --git a/src/com/vaadin/ui/DragAndDropWrapper.java b/src/com/vaadin/ui/DragAndDropWrapper.java
index e2fb2942e7..232c65f9c6 100644
--- a/src/com/vaadin/ui/DragAndDropWrapper.java
+++ b/src/com/vaadin/ui/DragAndDropWrapper.java
@@ -2,23 +2,27 @@ package com.vaadin.ui;
import java.util.Map;
-import com.vaadin.event.ComponentTransferable;
+import com.vaadin.event.TransferableImpl;
import com.vaadin.event.Transferable;
import com.vaadin.event.dd.DragSource;
import com.vaadin.event.dd.DropHandler;
import com.vaadin.event.dd.DropTarget;
import com.vaadin.event.dd.DropTargetDetails;
+import com.vaadin.event.dd.DropTargetDetailsImpl;
import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;
+import com.vaadin.terminal.gwt.client.MouseEventDetails;
import com.vaadin.terminal.gwt.client.ui.VDragAndDropWrapper;
+import com.vaadin.terminal.gwt.client.ui.dd.HorizontalDropLocation;
+import com.vaadin.terminal.gwt.client.ui.dd.VerticalDropLocation;
@ClientWidget(VDragAndDropWrapper.class)
public class DragAndDropWrapper extends CustomComponent implements DropTarget,
DragSource {
- public class DDWrapperTransferable extends ComponentTransferable {
+ public class WrapperTransferable extends TransferableImpl {
- public DDWrapperTransferable(Component sourceComponent,
+ public WrapperTransferable(Component sourceComponent,
Map<String, Object> rawVariables) {
super(sourceComponent, rawVariables);
}
@@ -33,6 +37,61 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget,
Component object = (Component) getData("component");
return object;
}
+
+ /**
+ * @return the mouse down event that started the drag and drop operation
+ */
+ public MouseEventDetails getMouseDownEvent() {
+ return MouseEventDetails.deSerialize((String) getData("mouseDown"));
+ }
+
+ }
+
+ public class WrapperDropDetails extends DropTargetDetailsImpl {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public WrapperDropDetails(Map<String, Object> rawDropData) {
+ super(rawDropData);
+ }
+
+ /**
+ * @return the absolute position of wrapper on the page
+ */
+ public Integer getAbsoluteLeft() {
+ return (Integer) getData("absoluteLeft");
+ }
+
+ /**
+ *
+ * @return the absolute position of wrapper on the page
+ */
+ public Integer getAbsoluteTop() {
+ return (Integer) getData("absoluteTop");
+ }
+
+ /**
+ * @return details about the actual event that caused the event details.
+ * Practically mouse move or mouse up.
+ */
+ public MouseEventDetails getMouseEvent() {
+ return MouseEventDetails
+ .deSerialize((String) getData("mouseEvent"));
+ }
+
+ public VerticalDropLocation verticalDropLocation() {
+ return VerticalDropLocation
+ .valueOf((String) getData("verticalLocation"));
+ }
+
+ public HorizontalDropLocation horizontalDropLocation() {
+ return HorizontalDropLocation
+ .valueOf((String) getData("horizontalLocation"));
+ }
+
}
public enum DragStartMode {
@@ -71,12 +130,11 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget,
public DropTargetDetails translateDragDropDetails(
Map<String, Object> clientVariables) {
- // TODO Auto-generated method stub
- return null;
+ return new WrapperDropDetails(clientVariables);
}
public Transferable getTransferable(final Map<String, Object> rawVariables) {
- return new DDWrapperTransferable(this, rawVariables);
+ return new WrapperTransferable(this, rawVariables);
}
public void setDragStartMode(DragStartMode dragStartMode) {
diff --git a/src/com/vaadin/ui/DragDropPane.java b/src/com/vaadin/ui/DragDropPane.java
index 3c8a9c2f80..f925fda221 100644
--- a/src/com/vaadin/ui/DragDropPane.java
+++ b/src/com/vaadin/ui/DragDropPane.java
@@ -2,7 +2,7 @@ package com.vaadin.ui;
import java.util.Map;
-import com.vaadin.event.ComponentTransferable;
+import com.vaadin.event.TransferableImpl;
import com.vaadin.event.DataBoundTransferable;
import com.vaadin.event.Transferable;
import com.vaadin.event.dd.DragAndDropEvent;
@@ -36,7 +36,10 @@ import com.vaadin.terminal.gwt.client.MouseEventDetails;
* layouts wouldn't need changes (and have regression risk/ performance
* penalty).
*
+ * @deprecated use {@link DragAndDropWrapper} instead
+ *
*/
+@Deprecated
@SuppressWarnings("serial")
@ClientWidget(com.vaadin.terminal.gwt.client.ui.VDragDropPane.class)
public class DragDropPane extends AbsoluteLayout implements DropTarget {
@@ -76,8 +79,8 @@ public class DragDropPane extends AbsoluteLayout implements DropTarget {
DragEventDetails ed = (DragEventDetails) event.getDropTargetData();
Transferable transferable = event.getTransferable();
- if (transferable instanceof ComponentTransferable) {
- ComponentTransferable ctr = (ComponentTransferable) transferable;
+ if (transferable instanceof TransferableImpl) {
+ TransferableImpl ctr = (TransferableImpl) transferable;
// use "component" (from DragDropPane) if available, else take
// the source component
Component component = (Component) ctr.getData("component");
diff --git a/src/com/vaadin/ui/Tree.java b/src/com/vaadin/ui/Tree.java
index 850519f9f7..22dd0a4182 100644
--- a/src/com/vaadin/ui/Tree.java
+++ b/src/com/vaadin/ui/Tree.java
@@ -1210,6 +1210,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
.getDropTargetData();
tree = (Tree) dragEvent.getDropTargetData().getTarget();
allowedItemIds = getAllowedItemIds(dragEvent, tree);
+
return allowedItemIds.contains(dropTargetData.getItemIdOver());
}