diff options
author | Matti Tahvonen <matti.tahvonen@itmill.com> | 2010-02-19 13:57:33 +0000 |
---|---|---|
committer | Matti Tahvonen <matti.tahvonen@itmill.com> | 2010-02-19 13:57:33 +0000 |
commit | 1640902d0c533354034f75b050849de982a2d99a (patch) | |
tree | edaeb3d98ce8f297fbadc0611210d6903a3ce2e8 /src | |
parent | 7ce8cb30bff4d1ff8b90c3be00dabf6f6fc66f01 (diff) | |
download | vaadin-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.java | 2 | ||||
-rw-r--r-- | src/com/vaadin/event/Transferable.java | 7 | ||||
-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.java | 6 | ||||
-rw-r--r-- | src/com/vaadin/event/dd/acceptCriteria/SourceIsSameAsTarget.java | 6 | ||||
-rw-r--r-- | src/com/vaadin/terminal/gwt/client/ui/VDragAndDropWrapper.java | 5 | ||||
-rw-r--r-- | src/com/vaadin/terminal/gwt/client/ui/dd/VDragAndDropManager.java | 3 | ||||
-rw-r--r-- | src/com/vaadin/terminal/gwt/server/DragAndDropService.java | 31 | ||||
-rw-r--r-- | src/com/vaadin/ui/DragAndDropWrapper.java | 70 | ||||
-rw-r--r-- | src/com/vaadin/ui/DragDropPane.java | 9 | ||||
-rw-r--r-- | src/com/vaadin/ui/Tree.java | 1 |
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()); } |