Author: bobtarling Date: 2011-04-08 10:17:29-0700 New Revision: 19201 Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/DnDJGraph.java
Log: For drag and drop to diagram adjust position for scrollbars Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/DnDJGraph.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/DnDJGraph.java?view=diff&pathrev=19201&r1=19200&r2=19201 ============================================================================== --- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/DnDJGraph.java (original) +++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/DnDJGraph.java 2011-04-08 10:17:29-0700 @@ -39,6 +39,7 @@ package org.argouml.uml.diagram.ui; +import java.awt.Point; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.dnd.DnDConstants; @@ -60,6 +61,7 @@ import org.tigris.gef.base.Diagram; import org.tigris.gef.base.Editor; import org.tigris.gef.base.Globals; +import org.tigris.gef.base.Layer; import org.tigris.gef.graph.ConnectionConstrainer; import org.tigris.gef.graph.GraphModel; import org.tigris.gef.graph.MutableGraphModel; @@ -194,8 +196,8 @@ * java.awt.dnd.DropTargetDropEvent) */ public void drop(DropTargetDropEvent dropTargetDropEvent) { + Transferable tr = dropTargetDropEvent.getTransferable(); - //if the flavor is not supported, then reject the drop: if (!tr.isDataFlavorSupported( TransferableModelElements.UML_COLLECTION_FLAVOR)) { dropTargetDropEvent.rejectDrop(); @@ -203,11 +205,21 @@ } dropTargetDropEvent.acceptDrop(dropTargetDropEvent.getDropAction()); - //get the model elements that are being transfered. - Collection modelElements; try { - ArgoDiagram diagram = DiagramUtils.getActiveDiagram(); - modelElements = + final UMLDiagram diagram = + (UMLDiagram) DiagramUtils.getActiveDiagram(); + final Editor editor = Globals.curEditor(); + final Layer layer = editor.getLayerManager().getActiveLayer(); + final MutableGraphModel gm = + (MutableGraphModel) diagram.getGraphModel(); + final Point point = dropTargetDropEvent.getLocation(); + + int dx = getViewPosition().x; + int dy = getViewPosition().y; + point.translate(dx, dy); + + //get the model elements that are being transfered. + Collection modelElements = (Collection) tr.getTransferData( TransferableModelElements.UML_COLLECTION_FLAVOR); @@ -215,19 +227,15 @@ while (i.hasNext()) { /* TODO: Why not call UMLDiagram.doesAccept() first, * like in ClassDiagramRenderer? */ - DiagramElement figNode = ((UMLDiagram ) diagram).drop(i.next(), - dropTargetDropEvent.getLocation()); + final DiagramElement figNode = diagram.drop(i.next(), point); if (figNode != null && figNode instanceof Owned) { - MutableGraphModel gm = - (MutableGraphModel) diagram.getGraphModel(); Object owner = ((Owned) figNode).getOwner(); if (!gm.getNodes().contains(owner)) { gm.getNodes().add(owner); } - Globals.curEditor().getLayerManager().getActiveLayer() - .add((Fig) figNode); + layer.add((Fig) figNode); if (figNode instanceof FigNode && figNode instanceof Owned) { gm.addNodeRelatedEdges(((Owned) figNode).getOwner()); } ------------------------------------------------------ http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2718163 To unsubscribe from this discussion, e-mail: [[email protected]].
