Author: bszanto
Date: 2008-07-03 17:19:36-0700
New Revision: 15155
Modified:
branches/gsoc2008/feature1_5138_bszanto/argouml-app/src/org/argouml/uml/diagram/ui/ActionAddExistingNode.java
branches/gsoc2008/feature1_5138_bszanto/argouml-app/src/org/argouml/uml/diagram/ui/DnDJGraph.java
branches/gsoc2008/feature1_5138_bszanto/argouml-app/src/org/argouml/uml/diagram/ui/UMLDiagram.java
branches/gsoc2008/feature1_5138_bszanto/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SequenceDiagramRenderer.java
branches/gsoc2008/feature1_5138_bszanto/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/UMLSequenceDiagram.java
Log:
DnD also working (better than right click menu). The new CR has as a base the dragged/added Class.
Modified: branches/gsoc2008/feature1_5138_bszanto/argouml-app/src/org/argouml/uml/diagram/ui/ActionAddExistingNode.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/feature1_5138_bszanto/argouml-app/src/org/argouml/uml/diagram/ui/ActionAddExistingNode.java?view=diff&rev=15155&p1=branches/gsoc2008/feature1_5138_bszanto/argouml-app/src/org/argouml/uml/diagram/ui/ActionAddExistingNode.java&p2=branches/gsoc2008/feature1_5138_bszanto/argouml-app/src/org/argouml/uml/diagram/ui/ActionAddExistingNode.java&r1=15154&r2=15155
==============================================================================
--- branches/gsoc2008/feature1_5138_bszanto/argouml-app/src/org/argouml/uml/diagram/ui/ActionAddExistingNode.java (original)
+++ branches/gsoc2008/feature1_5138_bszanto/argouml-app/src/org/argouml/uml/diagram/ui/ActionAddExistingNode.java 2008-07-03 17:19:36-0700
@@ -66,12 +66,13 @@
Object target = TargetManager.getInstance().getTarget();
ArgoDiagram dia = ProjectManager.getManager().
getCurrentProject().getActiveDiagram();
+
if (dia == null) {
return false;
}
- if (dia instanceof UMLDiagram &&
- ((UMLDiagram) dia).doesAccept(object)) {
+ if (dia instanceof UMLDiagram
+ && ((UMLDiagram) dia).doesAccept(object)) {
return true;
}
Modified: branches/gsoc2008/feature1_5138_bszanto/argouml-app/src/org/argouml/uml/diagram/ui/DnDJGraph.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/feature1_5138_bszanto/argouml-app/src/org/argouml/uml/diagram/ui/DnDJGraph.java?view=diff&rev=15155&p1=branches/gsoc2008/feature1_5138_bszanto/argouml-app/src/org/argouml/uml/diagram/ui/DnDJGraph.java&p2=branches/gsoc2008/feature1_5138_bszanto/argouml-app/src/org/argouml/uml/diagram/ui/DnDJGraph.java&r1=15154&r2=15155
==============================================================================
--- branches/gsoc2008/feature1_5138_bszanto/argouml-app/src/org/argouml/uml/diagram/ui/DnDJGraph.java (original)
+++ branches/gsoc2008/feature1_5138_bszanto/argouml-app/src/org/argouml/uml/diagram/ui/DnDJGraph.java 2008-07-03 17:19:36-0700
@@ -34,9 +34,11 @@
import java.awt.dnd.DropTargetListener;
import java.io.IOException;
import java.util.Collection;
+import java.util.Iterator;
import org.apache.log4j.Logger;
import org.argouml.kernel.ProjectManager;
+import org.argouml.model.Model;
import org.argouml.ui.TransferableModelElements;
import org.argouml.uml.diagram.ArgoDiagram;
import org.tigris.gef.base.Diagram;
@@ -133,7 +135,15 @@
* java.awt.dnd.DropTargetDragEvent)
*/
public void dragOver(DropTargetDragEvent dtde) {
+ System.out.println("Drag Over");
try {
+ ArgoDiagram dia = ProjectManager.getManager().
+ getCurrentProject().getActiveDiagram();
+ if (dia instanceof UMLDiagram
+ /*&& ((UMLDiagram) dia).doesAccept(dtde.getSource())*/) {
+ dtde.acceptDrag(dtde.getDropAction());
+ return;
+ }
if (dtde.isDataFlavorSupported(
TransferableModelElements.UML_COLLECTION_FLAVOR)) {
dtde.acceptDrag(dtde.getDropAction());
@@ -166,6 +176,8 @@
* java.awt.dnd.DropTargetDropEvent)
*/
public void drop(DropTargetDropEvent dropTargetDropEvent) {
+ System.out.println("Droped");
+
Transferable tr = dropTargetDropEvent.getTransferable();
//if the flavor is not supported, then reject the drop:
if (!tr.isDataFlavorSupported(
@@ -176,13 +188,19 @@
dropTargetDropEvent.acceptDrop(dropTargetDropEvent.getDropAction());
//get the model elements that are being transfered.
- Collection modelElements;
+ Collection modelElements;
try {
ArgoDiagram diagram = ProjectManager.getManager()
.getCurrentProject().getActiveDiagram();
modelElements =
(Collection) tr.getTransferData(
TransferableModelElements.UML_COLLECTION_FLAVOR);
+
+ Iterator i = modelElements.iterator();
+ while (i.hasNext()) {
+ ((UMLDiagram )diagram).drop(i.next(),
+ dropTargetDropEvent.getLocation());
+ }
ActionAddExistingNodes.addNodes(modelElements,
dropTargetDropEvent.getLocation(), diagram);
Modified: branches/gsoc2008/feature1_5138_bszanto/argouml-app/src/org/argouml/uml/diagram/ui/UMLDiagram.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/feature1_5138_bszanto/argouml-app/src/org/argouml/uml/diagram/ui/UMLDiagram.java?view=diff&rev=15155&p1=branches/gsoc2008/feature1_5138_bszanto/argouml-app/src/org/argouml/uml/diagram/ui/UMLDiagram.java&p2=branches/gsoc2008/feature1_5138_bszanto/argouml-app/src/org/argouml/uml/diagram/ui/UMLDiagram.java&r1=15154&r2=15155
==============================================================================
--- branches/gsoc2008/feature1_5138_bszanto/argouml-app/src/org/argouml/uml/diagram/ui/UMLDiagram.java (original)
+++ branches/gsoc2008/feature1_5138_bszanto/argouml-app/src/org/argouml/uml/diagram/ui/UMLDiagram.java 2008-07-03 17:19:36-0700
@@ -25,7 +25,9 @@
package org.argouml.uml.diagram.ui;
import java.awt.Component;
+import java.awt.Point;
import java.beans.PropertyVetoException;
+import java.util.Collection;
import javax.swing.Action;
import javax.swing.ButtonModel;
@@ -573,6 +575,14 @@
public boolean doesAccept(Object objectToAccept) {
return false;
}
+
+ /**
+ * Handles elements dropped over.
+ * @param droppedObject
+ * @param location
+ */
+ public void drop(Object droppedObject, Point location) {
+ }
// /**
// * Creates a diagram specific @see org.tigris.gef.base.ModePlace that
Modified: branches/gsoc2008/feature1_5138_bszanto/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SequenceDiagramRenderer.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/feature1_5138_bszanto/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SequenceDiagramRenderer.java?view=diff&rev=15155&p1=branches/gsoc2008/feature1_5138_bszanto/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SequenceDiagramRenderer.java&p2=branches/gsoc2008/feature1_5138_bszanto/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SequenceDiagramRenderer.java&r1=15154&r2=15155
==============================================================================
--- branches/gsoc2008/feature1_5138_bszanto/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SequenceDiagramRenderer.java (original)
+++ branches/gsoc2008/feature1_5138_bszanto/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SequenceDiagramRenderer.java 2008-07-03 17:19:36-0700
@@ -68,7 +68,7 @@
Model.getCollaborationsFactory().buildClassifierRole(
collaboration);
}
- //TODO: add the base
+ Model.getCollaborationsHelper().addBase(node, base);
return node;
}
Modified: branches/gsoc2008/feature1_5138_bszanto/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/UMLSequenceDiagram.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/feature1_5138_bszanto/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/UMLSequenceDiagram.java?view=diff&rev=15155&p1=branches/gsoc2008/feature1_5138_bszanto/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/UMLSequenceDiagram.java&p2=branches/gsoc2008/feature1_5138_bszanto/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/UMLSequenceDiagram.java&r1=15154&r2=15155
==============================================================================
--- branches/gsoc2008/feature1_5138_bszanto/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/UMLSequenceDiagram.java (original)
+++ branches/gsoc2008/feature1_5138_bszanto/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/UMLSequenceDiagram.java 2008-07-03 17:19:36-0700
@@ -24,8 +24,10 @@
package org.argouml.uml.diagram.sequence2.ui;
+import java.awt.Point;
import java.beans.PropertyVetoException;
import java.util.Collection;
+import java.util.List;
import org.apache.log4j.Logger;
import org.argouml.i18n.Translator;
@@ -36,11 +38,13 @@
import org.argouml.uml.diagram.ui.ActionSetMode;
import org.argouml.uml.diagram.ui.RadioAction;
import org.argouml.uml.diagram.ui.UMLDiagram;
+import org.tigris.gef.base.Editor;
+import org.tigris.gef.base.Globals;
import org.tigris.gef.base.LayerPerspective;
import org.tigris.gef.base.LayerPerspectiveMutable;
-import org.tigris.gef.base.ModePlace;
-import org.tigris.gef.graph.GraphFactory;
+import org.tigris.gef.graph.GraphModel;
import org.tigris.gef.graph.MutableGraphModel;
+import org.tigris.gef.presentation.Fig;
import org.tigris.gef.presentation.FigNode;
/**
@@ -175,11 +179,70 @@
return true;
}
+ /**
+ * A sequence diagram can accept Classes and Actors. It will add them as
+ * a new Classifier Role with that Class/Actor as a base.
+ * @param objectToAccept
+ * @return
+ * @see org.argouml.uml.diagram.ui.UMLDiagram#doesAccept(java.lang.Object)
+ */
@Override
public boolean doesAccept(Object objectToAccept) {
- if (Model.getFacade().isAClass(objectToAccept)) {
+ if (Model.getFacade().isAClass(objectToAccept)
+ || Model.getFacade().isAActor(objectToAccept)) {
return true;
}
return false;
}
+
+ /**
+ * Creates a new Classifier Role with a specified base.
+ * @param base
+ * @return The new CR
+ */
+ private FigClassifierRole makeNewCR(Object base) {
+ Object node = null;
+ Editor ce = Globals.curEditor();
+ GraphModel gm = ce.getGraphModel();
+ if (gm instanceof SequenceDiagramGraphModel) {
+ Object collaboration =
+ ((SequenceDiagramGraphModel) gm).getCollaboration();
+ node =
+ Model.getCollaborationsFactory().buildClassifierRole(
+ collaboration);
+ }
+
+ Model.getCollaborationsHelper().addBase(node, base);
+
+ FigClassifierRole newCR = new FigClassifierRole(node);
+
+ // Y position of the new CR should match existing CRs Y position
+ List nodes = getLayer().getContentsNoEdges();
+ int i = 0;
+ boolean figClassifierRoleFound = false;
+ Fig fig = null;
+ while (i < nodes.size() && !figClassifierRoleFound) {
+ fig = (Fig) nodes.get(i);
+ if (nodes.get(i) instanceof Fig) {
+ if (fig != newCR && fig instanceof FigClassifierRole) {
+ newCR.setY(((Fig) fig).getY());
+ newCR.setHeight(((Fig) fig).getHeight());
+ figClassifierRoleFound = true;
+ }
+ }
+ i++;
+ }
+
+ return newCR;
+ }
+
+
+ @Override
+ public void drop(Object droppedObject, Point location) {
+ FigClassifierRole newCR = makeNewCR(droppedObject);
+ if (location != null) {
+ newCR.setX(location.x);
+ }
+ add(newCR);
+ }
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.