svn commit: r17255 - trunk/src/argouml-app: src/org/argouml/uml/diagram src/org/argouml/uml/diagram/activity/ui src/org/argouml/uml/diagram/collaboration/ui src/org/argouml/uml/diagram/deployment/ui src/org/argouml/uml/diagram/state/ui src/org/argouml/uml/diagram/static_structure/ui src/org/argouml/uml/diagram/ui src/org/argouml/uml/diagram/use_case/ui src/org/argouml/uml/reveng tests/org/argouml/ui/targetmanager
Bob Tarling <[email protected]>
| Newsgroups | gmane.comp.lang.uml.argouml.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: bobtarling
Date: 2009-08-10 14:33:00-0700
New Revision: 17255
Added:
trunk/src/argouml-app/src/org/argouml/uml/diagram/DiagramElement.java
Modified:
trunk/src/argouml-app/src/org/argouml/uml/diagram/ArgoDiagram.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/UMLActivityDiagram.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/UMLCollaborationDiagram.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/UMLDeploymentDiagram.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/UMLStateDiagram.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/UMLClassDiagram.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/UMLDiagram.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/UMLUseCaseDiagram.java
trunk/src/argouml-app/src/org/argouml/uml/reveng/DiagramInterface.java
trunk/src/argouml-app/src/org/argouml/uml/reveng/ImportCommon.java
trunk/src/argouml-app/tests/org/argouml/ui/targetmanager/TestTargetManager.java
Log:
Give diagrams the responsibility of creating DiagramElements (Figs) so that reverse engineering does not need to know of FigClass FigInterface or any other concrete Figs
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ArgoDiagram.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ArgoDiagram.java?view=diff&pathrev=17255&r1=17254&r2=17255
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ArgoDiagram.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ArgoDiagram.java 2009-08-10 14:33:00-0700
@@ -24,6 +24,7 @@
package org.argouml.uml.diagram;
+import java.awt.Rectangle;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyVetoException;
@@ -269,6 +270,17 @@
*/
public Iterator<Fig> getFigIterator();
+ /**
+ * Create a diagram element suitable for the base diagram type
+ * @param modelElement the model element the diagram element
+ * will represent
+ * @param bounds the bounds of the newly created diagram element
+ * @return the newly created diagram element.
+ */
+ public DiagramElement createDiagramElement(
+ final Object modelElement,
+ final Rectangle bounds);
+
///////////////// GEF Methods ////////////////////////////
// TODO: These should really be picked up automatically from
// some GEF interface that we extend, but there is no such
Added: trunk/src/argouml-app/src/org/argouml/uml/diagram/DiagramElement.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/DiagramElement.java?view=markup&pathrev=17255
==============================================================================
--- (empty file)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/DiagramElement.java 2009-08-10 14:33:00-0700
@@ -0,0 +1,36 @@
+// $Id: eclipse-argo-codetemplates.xml 11347 2006-10-26 22:37:44Z linus $
+// Copyright (c) 2009 The Regents of the University of California. All
+// Rights Reserved. Permission to use, copy, modify, and distribute this
+// software and its documentation without fee, and without a written
+// agreement is hereby granted, provided that the above copyright notice
+// and this paragraph appear in all copies. This software program and
+// documentation are copyrighted by The Regents of the University of
+// California. The software program and documentation are supplied "AS
+// IS", without any accompanying services from The Regents. The Regents
+// does not warrant that the operation of the program will be
+// uninterrupted or error-free. The end-user understands that the program
+// was developed for research purposes and is advised not to rely
+// exclusively on the program for any reason. IN NO EVENT SHALL THE
+// UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+// SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+// ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+// THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+// PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+// CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+// UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+package org.argouml.uml.diagram;
+
+/**
+ * The base class interface for all diagram elements. This interface is used
+ * to abstract away the knowledge of what actual implementation is used
+ * to store diagram elements. These are currently Figs from the GEF library.
+ *
+ * @author Bob Tarling
+ */
+public interface DiagramElement {
+
+}
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/UMLActivityDiagram.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/UMLActivityDiagram.java?view=diff&pathrev=17255&r1=17254&r2=17255
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/UMLActivityDiagram.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/UMLActivityDiagram.java 2009-08-10 14:33:00-0700
@@ -24,7 +24,6 @@
package org.argouml.uml.diagram.activity.ui;
-import java.awt.Point;
import java.awt.Rectangle;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyVetoException;
@@ -44,6 +43,7 @@
import org.argouml.model.DeleteInstanceEvent;
import org.argouml.model.Model;
import org.argouml.ui.CmdCreateNode;
+import org.argouml.uml.diagram.DiagramElement;
import org.argouml.uml.diagram.DiagramSettings;
import org.argouml.uml.diagram.UMLMutableGraphSupport;
import org.argouml.uml.diagram.activity.ActivityDiagramGraphModel;
@@ -62,6 +62,7 @@
import org.argouml.uml.diagram.state.ui.FigStateVertex;
import org.argouml.uml.diagram.static_structure.ui.FigComment;
import org.argouml.uml.diagram.ui.ActionSetMode;
+import org.argouml.uml.diagram.ui.FigNodeModelElement;
import org.argouml.uml.diagram.ui.RadioAction;
import org.argouml.uml.diagram.ui.UMLDiagram;
import org.argouml.uml.ui.behavior.common_behavior.ActionNewActionSequence;
@@ -800,70 +801,61 @@
return false;
}
- @Override
- public FigNode drop(Object droppedObject, Point location) {
- FigNode figNode = null;
-
- // If location is non-null, convert to a rectangle that we can use
- Rectangle bounds = null;
- if (location != null) {
- bounds = new Rectangle(location.x, location.y, 0, 0);
- }
+ public DiagramElement createDiagramElement(
+ final Object modelElement,
+ final Rectangle bounds) {
+
+ FigNodeModelElement figNode = null;
+
DiagramSettings settings = getDiagramSettings();
-
- if (Model.getFacade().isAPartition(droppedObject)) {
- figNode = new FigPartition(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAActionState(droppedObject)) {
- figNode = new FigActionState(droppedObject, bounds, settings);
- } else if (Model.getFacade().isACallState(droppedObject)) {
- figNode = new FigCallState(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAObjectFlowState(droppedObject)) {
- figNode = new FigObjectFlowState(droppedObject, bounds, settings);
- } else if (Model.getFacade().isASubactivityState(droppedObject)) {
- figNode = new FigSubactivityState(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAFinalState(droppedObject)) {
- figNode = new FigFinalState(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAPseudostate(droppedObject)) {
- Object kind = Model.getFacade().getKind(droppedObject);
+
+ if (Model.getFacade().isAPartition(modelElement)) {
+ figNode = new FigPartition(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAActionState(modelElement)) {
+ figNode = new FigActionState(modelElement, bounds, settings);
+ } else if (Model.getFacade().isACallState(modelElement)) {
+ figNode = new FigCallState(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAObjectFlowState(modelElement)) {
+ figNode = new FigObjectFlowState(modelElement, bounds, settings);
+ } else if (Model.getFacade().isASubactivityState(modelElement)) {
+ figNode = new FigSubactivityState(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAFinalState(modelElement)) {
+ figNode = new FigFinalState(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAPseudostate(modelElement)) {
+ Object kind = Model.getFacade().getKind(modelElement);
if (kind == null) {
LOG.warn("found a null type pseudostate");
return null;
}
if (kind.equals(Model.getPseudostateKind().getInitial())) {
- figNode = new FigInitialState(droppedObject, bounds, settings);
+ figNode = new FigInitialState(modelElement, bounds, settings);
} else if (kind.equals(
Model.getPseudostateKind().getChoice())) {
- figNode = new FigBranchState(droppedObject, bounds, settings);
+ figNode = new FigBranchState(modelElement, bounds, settings);
} else if (kind.equals(
Model.getPseudostateKind().getJunction())) {
- figNode = new FigJunctionState(droppedObject, bounds, settings);
+ figNode = new FigJunctionState(modelElement, bounds, settings);
} else if (kind.equals(
Model.getPseudostateKind().getFork())) {
- figNode = new FigForkState(droppedObject, bounds, settings);
+ figNode = new FigForkState(modelElement, bounds, settings);
} else if (kind.equals(
Model.getPseudostateKind().getJoin())) {
- figNode = new FigJoinState(droppedObject, bounds, settings);
+ figNode = new FigJoinState(modelElement, bounds, settings);
} else {
LOG.warn("found a type not known");
}
- } else if (Model.getFacade().isAComment(droppedObject)) {
- figNode = new FigComment(droppedObject, bounds, settings);
+ } else if (Model.getFacade().isAComment(modelElement)) {
+ figNode = new FigComment(modelElement, bounds, settings);
}
if (figNode != null) {
- // if location is null here the position of the new figNode is set
- // after in org.tigris.gef.base.ModePlace.mousePressed(MouseEvent e)
- if (location != null) {
- figNode.setLocation(location.x, location.y);
- }
- LOG.debug("Dropped object " + droppedObject + " converted to "
+ LOG.debug("Model element " + modelElement + " converted to "
+ figNode);
} else {
- LOG.debug("Dropped object NOT added. This usualy means that this "
- + "type of object is not accepted!");
+ LOG.debug("Dropped object NOT added " + figNode);
}
-
return figNode;
}
+
}
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/UMLCollaborationDiagram.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/UMLCollaborationDiagram.java?view=diff&pathrev=17255&r1=17254&r2=17255
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/UMLCollaborationDiagram.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/UMLCollaborationDiagram.java 2009-08-10 14:33:00-0700
@@ -36,6 +36,7 @@
import org.apache.log4j.Logger;
import org.argouml.i18n.Translator;
import org.argouml.model.Model;
+import org.argouml.uml.diagram.DiagramElement;
import org.argouml.uml.diagram.DiagramSettings;
import org.argouml.uml.diagram.collaboration.CollabDiagramGraphModel;
import org.argouml.uml.diagram.static_structure.ui.FigComment;
@@ -43,6 +44,7 @@
import org.argouml.uml.diagram.ui.ActionAddMessage;
import org.argouml.uml.diagram.ui.ActionSetMode;
import org.argouml.uml.diagram.ui.FigMessage;
+import org.argouml.uml.diagram.ui.FigNodeModelElement;
import org.argouml.uml.diagram.ui.RadioAction;
import org.argouml.uml.diagram.ui.UMLDiagram;
import org.argouml.util.ToolBarUtility;
@@ -534,6 +536,38 @@
return figNode;
}
+
+ public DiagramElement createDiagramElement(
+ final Object modelElement,
+ final Rectangle bounds) {
+
+ FigNodeModelElement figNode = null;
+
+ DiagramSettings settings = getDiagramSettings();
+
+ if (Model.getFacade().isAClassifierRole(modelElement)) {
+ figNode = new FigClassifierRole(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAMessage(modelElement)) {
+ figNode = new FigMessage(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAComment(modelElement)) {
+ figNode = new FigComment(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAClassifierRole(modelElement)) {
+ figNode =
+ makeNewFigCR(modelElement, bounds.getLocation());
+ } else if (Model.getFacade().isAClassifier(modelElement)) {
+ figNode =
+ makeNewFigCR(makeNewCR(modelElement), bounds.getLocation());
+ }
+
+ if (figNode != null) {
+ LOG.debug("Model element " + modelElement + " converted to "
+ + figNode);
+ } else {
+ LOG.debug("Dropped object NOT added " + figNode);
+ }
+ return figNode;
+ }
+
@Override
public String getInstructions(Object droppedObject) {
if (Model.getFacade().isAClassifierRole(droppedObject)) {
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/UMLDeploymentDiagram.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/UMLDeploymentDiagram.java?view=diff&pathrev=17255&r1=17254&r2=17255
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/UMLDeploymentDiagram.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/UMLDeploymentDiagram.java 2009-08-10 14:33:00-0700
@@ -37,17 +37,21 @@
import org.argouml.model.Facade;
import org.argouml.model.Model;
import org.argouml.ui.CmdCreateNode;
+import org.argouml.uml.diagram.DiagramElement;
import org.argouml.uml.diagram.DiagramSettings;
import org.argouml.uml.diagram.deployment.DeploymentDiagramGraphModel;
import org.argouml.uml.diagram.static_structure.ui.FigClass;
import org.argouml.uml.diagram.static_structure.ui.FigComment;
import org.argouml.uml.diagram.static_structure.ui.FigInterface;
+import org.argouml.uml.diagram.static_structure.ui.FigPackage;
import org.argouml.uml.diagram.ui.ActionSetAddAssociationMode;
import org.argouml.uml.diagram.ui.ActionSetMode;
import org.argouml.uml.diagram.ui.FigNodeAssociation;
+import org.argouml.uml.diagram.ui.FigNodeModelElement;
import org.argouml.uml.diagram.ui.RadioAction;
import org.argouml.uml.diagram.ui.UMLDiagram;
import org.argouml.uml.diagram.use_case.ui.FigActor;
+import org.argouml.uml.diagram.use_case.ui.FigUseCase;
import org.argouml.util.ToolBarUtility;
import org.tigris.gef.base.LayerPerspective;
import org.tigris.gef.base.LayerPerspectiveMutable;
@@ -560,53 +564,44 @@
return false;
}
- @Override
- public FigNode drop(Object droppedObject, Point location) {
- FigNode figNode = null;
- // If location is non-null, convert to a rectangle that we can use
- Rectangle bounds = null;
- if (location != null) {
- bounds = new Rectangle(location.x, location.y, 0, 0);
- }
+ public DiagramElement createDiagramElement(
+ final Object modelElement,
+ final Rectangle bounds) {
+
+ FigNodeModelElement figNode = null;
+
DiagramSettings settings = getDiagramSettings();
- if (Model.getFacade().isANode(droppedObject)) {
- figNode = new FigMNode(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAAssociation(droppedObject)) {
+ if (Model.getFacade().isANode(modelElement)) {
+ figNode = new FigMNode(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAAssociation(modelElement)) {
figNode =
- createNaryAssociationNode(droppedObject, bounds, settings);
- } else if (Model.getFacade().isANodeInstance(droppedObject)) {
- figNode = new FigNodeInstance(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAComponent(droppedObject)) {
- figNode = new FigComponent(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAComponentInstance(droppedObject)) {
- figNode = new FigComponentInstance(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAClass(droppedObject)) {
- figNode = new FigClass(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAInterface(droppedObject)) {
- figNode = new FigInterface(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAObject(droppedObject)) {
- figNode = new FigObject(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAActor(droppedObject)) {
- figNode = new FigActor(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAComment(droppedObject)) {
- figNode = new FigComment(droppedObject, bounds, settings);
+ createNaryAssociationNode(modelElement, bounds, settings);
+ } else if (Model.getFacade().isANodeInstance(modelElement)) {
+ figNode = new FigNodeInstance(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAComponent(modelElement)) {
+ figNode = new FigComponent(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAComponentInstance(modelElement)) {
+ figNode = new FigComponentInstance(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAClass(modelElement)) {
+ figNode = new FigClass(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAInterface(modelElement)) {
+ figNode = new FigInterface(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAObject(modelElement)) {
+ figNode = new FigObject(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAActor(modelElement)) {
+ figNode = new FigActor(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAComment(modelElement)) {
+ figNode = new FigComment(modelElement, bounds, settings);
}
if (figNode != null) {
- // if location is null here the position of the new figNode is set
- // after in org.tigris.gef.base.ModePlace.mousePressed(MouseEvent e)
- if (location != null) {
- figNode.setLocation(location.x, location.y);
- }
- LOG.debug("Dropped object " + droppedObject + " converted to "
+ LOG.debug("Model element " + modelElement + " converted to "
+ figNode);
} else {
LOG.debug("Dropped object NOT added " + figNode);
}
-
return figNode;
}
-
}
\ No newline at end of file
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/UMLStateDiagram.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/UMLStateDiagram.java?view=diff&pathrev=17255&r1=17254&r2=17255
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/UMLStateDiagram.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/UMLStateDiagram.java 2009-08-10 14:33:00-0700
@@ -38,15 +38,20 @@
import org.argouml.model.DeleteInstanceEvent;
import org.argouml.model.Model;
import org.argouml.ui.CmdCreateNode;
+import org.argouml.uml.diagram.DiagramElement;
import org.argouml.uml.diagram.DiagramFactory;
import org.argouml.uml.diagram.DiagramSettings;
import org.argouml.uml.diagram.UMLMutableGraphSupport;
import org.argouml.uml.diagram.activity.ui.FigActionState;
import org.argouml.uml.diagram.state.StateDiagramGraphModel;
import org.argouml.uml.diagram.static_structure.ui.FigComment;
+import org.argouml.uml.diagram.static_structure.ui.FigPackage;
import org.argouml.uml.diagram.ui.ActionSetMode;
+import org.argouml.uml.diagram.ui.FigNodeModelElement;
import org.argouml.uml.diagram.ui.RadioAction;
import org.argouml.uml.diagram.ui.UMLDiagram;
+import org.argouml.uml.diagram.use_case.ui.FigActor;
+import org.argouml.uml.diagram.use_case.ui.FigUseCase;
import org.argouml.uml.ui.behavior.common_behavior.ActionNewActionSequence;
import org.argouml.uml.ui.behavior.common_behavior.ActionNewCallAction;
import org.argouml.uml.ui.behavior.common_behavior.ActionNewCreateAction;
@@ -855,4 +860,72 @@
return figNode;
}
+
+
+ public DiagramElement createDiagramElement(
+ final Object modelElement,
+ final Rectangle bounds) {
+
+ FigNodeModelElement figNode = null;
+
+ DiagramSettings settings = getDiagramSettings();
+
+ if (Model.getFacade().isAActionState(modelElement)) {
+ figNode = new FigActionState(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAFinalState(modelElement)) {
+ figNode = new FigFinalState(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAStubState(modelElement)) {
+ figNode = new FigStubState(modelElement, bounds, settings);
+ } else if (Model.getFacade().isASubmachineState(modelElement)) {
+ figNode = new FigSubmachineState(modelElement, bounds, settings);
+ } else if (Model.getFacade().isACompositeState(modelElement)) {
+ figNode = new FigCompositeState(modelElement, bounds, settings);
+ } else if (Model.getFacade().isASynchState(modelElement)) {
+ figNode = new FigSynchState(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAState(modelElement)) {
+ figNode = new FigSimpleState(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAComment(modelElement)) {
+ figNode = new FigComment(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAPseudostate(modelElement)) {
+ Object kind = Model.getFacade().getKind(modelElement);
+ if (kind == null) {
+ LOG.warn("found a null type pseudostate");
+ return null;
+ }
+ if (kind.equals(Model.getPseudostateKind().getInitial())) {
+ figNode = new FigInitialState(modelElement, bounds, settings);
+ } else if (kind.equals(
+ Model.getPseudostateKind().getChoice())) {
+ figNode = new FigBranchState(modelElement, bounds, settings);
+ } else if (kind.equals(
+ Model.getPseudostateKind().getJunction())) {
+ figNode = new FigJunctionState(modelElement, bounds, settings);
+ } else if (kind.equals(
+ Model.getPseudostateKind().getFork())) {
+ figNode = new FigForkState(modelElement, bounds, settings);
+ } else if (kind.equals(
+ Model.getPseudostateKind().getJoin())) {
+ figNode = new FigJoinState(modelElement, bounds, settings);
+ } else if (kind.equals(
+ Model.getPseudostateKind().getShallowHistory())) {
+ figNode = new FigShallowHistoryState(modelElement, bounds,
+ settings);
+ } else if (kind.equals(
+ Model.getPseudostateKind().getDeepHistory())) {
+ figNode = new FigDeepHistoryState(modelElement, bounds,
+ settings);
+ } else {
+ LOG.warn("found a type not known");
+ }
+ }
+
+ if (figNode != null) {
+ LOG.debug("Model element " + modelElement + " converted to "
+ + figNode);
+ } else {
+ LOG.debug("Dropped object NOT added " + figNode);
+ }
+ return figNode;
+ }
+
}
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/UMLClassDiagram.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/UMLClassDiagram.java?view=diff&pathrev=17255&r1=17254&r2=17255
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/UMLClassDiagram.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/UMLClassDiagram.java 2009-08-10 14:33:00-0700
@@ -34,6 +34,7 @@
import org.apache.log4j.Logger;
import org.argouml.i18n.Translator;
import org.argouml.model.Model;
+import org.argouml.uml.diagram.DiagramElement;
import org.argouml.uml.diagram.DiagramSettings;
import org.argouml.uml.diagram.deployment.ui.FigComponent;
import org.argouml.uml.diagram.deployment.ui.FigComponentInstance;
@@ -44,6 +45,7 @@
import org.argouml.uml.diagram.ui.FigClassAssociationClass;
import org.argouml.uml.diagram.ui.FigEdgeAssociationClass;
import org.argouml.uml.diagram.ui.FigNodeAssociation;
+import org.argouml.uml.diagram.ui.FigNodeModelElement;
import org.argouml.uml.diagram.ui.ModeCreateDependency;
import org.argouml.uml.diagram.ui.ModeCreatePermission;
import org.argouml.uml.diagram.ui.ModeCreateUsage;
@@ -653,70 +655,60 @@
}
- @Override
- public FigNode drop(Object droppedObject, Point location) {
- FigNode figNode = null;
-
- // If location is non-null, convert to a rectangle that we can use
- Rectangle bounds = null;
- if (location != null) {
- bounds = new Rectangle(location.x, location.y, 0, 0);
- }
-
+ public DiagramElement createDiagramElement(
+ final Object modelElement,
+ final Rectangle bounds) {
+
+ FigNodeModelElement figNode = null;
+
DiagramSettings settings = getDiagramSettings();
- if (Model.getFacade().isAAssociation(droppedObject)) {
+ if (Model.getFacade().isAAssociation(modelElement)) {
figNode =
- createNaryAssociationNode(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAClass(droppedObject)) {
- figNode = new FigClass(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAInterface(droppedObject)) {
- figNode = new FigInterface(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAModel(droppedObject)) {
- figNode = new FigModel(droppedObject, bounds, settings);
- } else if (Model.getFacade().isASubsystem(droppedObject)) {
- figNode = new FigSubsystem(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAPackage(droppedObject)) {
- figNode = new FigPackage(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAComment(droppedObject)) {
- figNode = new FigComment(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAEnumeration(droppedObject)) {
- figNode = new FigEnumeration(droppedObject, bounds, settings);
- } else if (Model.getFacade().isADataType(droppedObject)) {
- figNode = new FigDataType(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAStereotype(droppedObject)) {
- figNode = new FigStereotypeDeclaration(droppedObject, bounds,
+ createNaryAssociationNode(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAClass(modelElement)) {
+ figNode = new FigClass(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAInterface(modelElement)) {
+ figNode = new FigInterface(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAModel(modelElement)) {
+ figNode = new FigModel(modelElement, bounds, settings);
+ } else if (Model.getFacade().isASubsystem(modelElement)) {
+ figNode = new FigSubsystem(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAPackage(modelElement)) {
+ figNode = new FigPackage(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAComment(modelElement)) {
+ figNode = new FigComment(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAEnumeration(modelElement)) {
+ figNode = new FigEnumeration(modelElement, bounds, settings);
+ } else if (Model.getFacade().isADataType(modelElement)) {
+ figNode = new FigDataType(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAStereotype(modelElement)) {
+ figNode = new FigStereotypeDeclaration(modelElement, bounds,
settings);
- } else if (Model.getFacade().isAException(droppedObject)) {
- figNode = new FigException(droppedObject, bounds, settings);
- } else if (Model.getFacade().isASignal(droppedObject)) {
- figNode = new FigSignal(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAActor(droppedObject)) {
- figNode = new FigActor(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAUseCase(droppedObject)) {
- figNode = new FigUseCase(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAObject(droppedObject)) {
- figNode = new FigObject(droppedObject, bounds, settings);
- } else if (Model.getFacade().isANodeInstance(droppedObject)) {
- figNode = new FigNodeInstance(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAComponentInstance(droppedObject)) {
- figNode = new FigComponentInstance(droppedObject, bounds, settings);
- } else if (Model.getFacade().isANode(droppedObject)) {
- figNode = new FigMNode(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAComponent(droppedObject)) {
- figNode = new FigComponent(droppedObject, bounds, settings);
+ } else if (Model.getFacade().isAException(modelElement)) {
+ figNode = new FigException(modelElement, bounds, settings);
+ } else if (Model.getFacade().isASignal(modelElement)) {
+ figNode = new FigSignal(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAActor(modelElement)) {
+ figNode = new FigActor(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAUseCase(modelElement)) {
+ figNode = new FigUseCase(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAObject(modelElement)) {
+ figNode = new FigObject(modelElement, bounds, settings);
+ } else if (Model.getFacade().isANodeInstance(modelElement)) {
+ figNode = new FigNodeInstance(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAComponentInstance(modelElement)) {
+ figNode = new FigComponentInstance(modelElement, bounds, settings);
+ } else if (Model.getFacade().isANode(modelElement)) {
+ figNode = new FigMNode(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAComponent(modelElement)) {
+ figNode = new FigComponent(modelElement, bounds, settings);
}
-
if (figNode != null) {
- // if location is null here the position of the new figNode is set
- // after in org.tigris.gef.base.ModePlace.mousePressed(MouseEvent e)
- if (location != null) {
- figNode.setLocation(location.x, location.y);
- }
- LOG.debug("Dropped object " + droppedObject + " converted to "
+ LOG.debug("Model element " + modelElement + " converted to "
+ figNode);
} else {
- LOG.debug("Dropped object NOT added " + droppedObject);
+ LOG.debug("Dropped object NOT added " + figNode);
}
return figNode;
}
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java?view=diff&pathrev=17255&r1=17254&r2=17255
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java 2009-08-10 14:33:00-0700
@@ -88,6 +88,7 @@
import org.argouml.uml.StereotypeUtility;
import org.argouml.uml.diagram.ArgoDiagram;
import org.argouml.uml.diagram.DiagramAppearance;
+import org.argouml.uml.diagram.DiagramElement;
import org.argouml.uml.diagram.DiagramSettings;
import org.argouml.uml.diagram.PathContainer;
import org.argouml.uml.diagram.DiagramSettings.StereotypeStyle;
@@ -133,7 +134,8 @@
IItemUID,
Clarifiable,
ArgoFig,
- StereotypeStyled {
+ StereotypeStyled,
+ DiagramElement {
private static final Logger LOG =
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/UMLDiagram.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/UMLDiagram.java?view=diff&pathrev=17255&r1=17254&r2=17255
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/UMLDiagram.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/UMLDiagram.java 2009-08-10 14:33:00-0700
@@ -623,9 +623,17 @@
* @param location The location in the diagram where the object is dropped.
* @return The object that has been added to the diagram.
*/
- @SuppressWarnings("unused")
public FigNode drop(Object droppedObject, Point location) {
- return null;
+ FigNode figNode = null;
+
+ // If location is non-null, convert to a rectangle that we can use
+ Rectangle bounds = null;
+ if (location != null) {
+ bounds = new Rectangle(location.x, location.y, 0, 0);
+ }
+
+ figNode = (FigNode) createDiagramElement(droppedObject, bounds);
+ return figNode;
}
/**
@@ -662,7 +670,7 @@
* @param settings the diagram setting for presentation.
* @return The FigNode of the diamond representing the model element
*/
- protected FigNode createNaryAssociationNode(
+ protected FigNodeModelElement createNaryAssociationNode(
final Object modelElement,
final Rectangle bounds,
final DiagramSettings settings) {
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/UMLUseCaseDiagram.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/UMLUseCaseDiagram.java?view=diff&pathrev=17255&r1=17254&r2=17255
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/UMLUseCaseDiagram.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/UMLUseCaseDiagram.java 2009-08-10 14:33:00-0700
@@ -36,12 +36,14 @@
import org.argouml.i18n.Translator;
import org.argouml.model.Model;
import org.argouml.ui.CmdCreateNode;
+import org.argouml.uml.diagram.DiagramElement;
import org.argouml.uml.diagram.DiagramSettings;
import org.argouml.uml.diagram.static_structure.ui.FigComment;
import org.argouml.uml.diagram.static_structure.ui.FigPackage;
import org.argouml.uml.diagram.ui.ActionAddExtensionPoint;
import org.argouml.uml.diagram.ui.ActionSetAddAssociationMode;
import org.argouml.uml.diagram.ui.ActionSetMode;
+import org.argouml.uml.diagram.ui.FigNodeModelElement;
import org.argouml.uml.diagram.ui.RadioAction;
import org.argouml.uml.diagram.ui.UMLDiagram;
import org.argouml.uml.diagram.use_case.UseCaseDiagramGraphModel;
@@ -481,19 +483,29 @@
bounds = new Rectangle(location.x, location.y, 0, 0);
}
+ figNode = (FigNode) createDiagramElement(droppedObject, bounds);
+ return figNode;
+ }
+
+ public DiagramElement createDiagramElement(
+ final Object modelElement,
+ final Rectangle bounds) {
+
+ FigNodeModelElement figNode = null;
+
DiagramSettings settings = getDiagramSettings();
- if (Model.getFacade().isAActor(droppedObject)) {
- figNode = new FigActor(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAUseCase(droppedObject)) {
- figNode = new FigUseCase(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAComment(droppedObject)) {
- figNode = new FigComment(droppedObject, bounds, settings);
- } else if (Model.getFacade().isAPackage(droppedObject)) {
- figNode = new FigPackage(droppedObject, bounds, settings);
+ if (Model.getFacade().isAActor(modelElement)) {
+ figNode = new FigActor(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAUseCase(modelElement)) {
+ figNode = new FigUseCase(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAComment(modelElement)) {
+ figNode = new FigComment(modelElement, bounds, settings);
+ } else if (Model.getFacade().isAPackage(modelElement)) {
+ figNode = new FigPackage(modelElement, bounds, settings);
}
if (figNode != null) {
- LOG.debug("Dropped object " + droppedObject + " converted to "
+ LOG.debug("Model element " + modelElement + " converted to "
+ figNode);
} else {
LOG.debug("Dropped object NOT added " + figNode);
Modified: trunk/src/argouml-app/src/org/argouml/uml/reveng/DiagramInterface.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/reveng/DiagramInterface.java?view=diff&pathrev=17255&r1=17254&r2=17255
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/reveng/DiagramInterface.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/reveng/DiagramInterface.java 2009-08-10 14:33:00-0700
@@ -33,12 +33,13 @@
import org.argouml.kernel.Project;
import org.argouml.model.Model;
import org.argouml.uml.diagram.ArgoDiagram;
+import org.argouml.uml.diagram.AttributesCompartmentContainer;
+import org.argouml.uml.diagram.DiagramElement;
import org.argouml.uml.diagram.DiagramFactory;
import org.argouml.uml.diagram.static_structure.ClassDiagramGraphModel;
-import org.argouml.uml.diagram.static_structure.ui.FigClass;
import org.argouml.uml.diagram.static_structure.ui.FigClassifierBox;
-import org.argouml.uml.diagram.static_structure.ui.FigInterface;
import org.argouml.uml.diagram.static_structure.ui.FigPackage;
+import org.argouml.uml.diagram.ui.FigNodeModelElement;
import org.tigris.gef.base.Editor;
import org.tigris.gef.base.LayerPerspective;
import org.tigris.gef.presentation.Fig;
@@ -158,12 +159,13 @@
public void addPackage(Object newPackage) {
if (!isInDiagram(newPackage)) {
if (currentGM.canAddNode(newPackage)) {
- FigPackage newPackageFig = new FigPackage(newPackage,
- new Rectangle(0, 0, 0, 0), currentDiagram
- .getDiagramSettings());
- currentLayer.add(newPackageFig);
+ DiagramElement newPackageFig =
+ currentDiagram.createDiagramElement(
+ newPackage,
+ new Rectangle(0, 0, 0, 0));
+ currentLayer.add((FigNodeModelElement) newPackageFig);
currentGM.addNode(newPackage);
- currentLayer.putInPosition(newPackageFig);
+ currentLayer.putInPosition((FigNodeModelElement) newPackageFig);
}
}
}
@@ -286,17 +288,10 @@
private void addClassifier(Object classifier, boolean minimise) {
// if the classifier is not in the current diagram, add it:
if (currentGM.canAddNode(classifier)) {
- FigClassifierBox newFig;
- if (Model.getFacade().isAClass(classifier)) {
- newFig = new FigClass(classifier, new Rectangle(0, 0, 0, 0),
- currentDiagram.getDiagramSettings());
- } else if (Model.getFacade().isAInterface(classifier)) {
- newFig = new FigInterface(classifier,
- new Rectangle(0, 0, 0, 0), currentDiagram
- .getDiagramSettings());
- } else {
- return;
- }
+ FigClassifierBox newFig =
+ (FigClassifierBox) currentDiagram.createDiagramElement(
+ classifier,
+ new Rectangle(0, 0, 0, 0));
/*
* The following calls are ORDER DEPENDENT. Not sure why, but the
@@ -309,7 +304,8 @@
newFig.setOperationsVisible(!minimise);
if (Model.getFacade().isAClass(classifier)) {
- ((FigClass) newFig).setAttributesVisible(!minimise);
+ ((AttributesCompartmentContainer) newFig).setAttributesVisible(
+ !minimise);
}
newFig.renderingChanged();
Modified: trunk/src/argouml-app/src/org/argouml/uml/reveng/ImportCommon.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/reveng/ImportCommon.java?view=diff&pathrev=17255&r1=17254&r2=17255
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/reveng/ImportCommon.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/reveng/ImportCommon.java 2009-08-10 14:33:00-0700
@@ -199,9 +199,13 @@
File f = files.get(i);
String fn = f.getAbsolutePath();
String lm = String.valueOf(f.lastModified());
- if (lm.equals(
- Model.getFacade().getTaggedValueValue(model, fn))) {
- files.remove(i);
+
+ if (Model.getFacade().getUmlVersion().charAt(0) == '1') {
+ // TODO: Not yet working for UML2
+ if (lm.equals(
+ Model.getFacade().getTaggedValueValue(model, fn))) {
+ files.remove(i);
+ }
}
}
}
Modified: trunk/src/argouml-app/tests/org/argouml/ui/targetmanager/TestTargetManager.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/tests/org/argouml/ui/targetmanager/TestTargetManager.java?view=diff&pathrev=17255&r1=17254&r2=17255
==============================================================================
--- trunk/src/argouml-app/tests/org/argouml/ui/targetmanager/TestTargetManager.java (original)
+++ trunk/src/argouml-app/tests/org/argouml/ui/targetmanager/TestTargetManager.java 2009-08-10 14:33:00-0700
@@ -24,6 +24,7 @@
package org.argouml.ui.targetmanager;
+import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -40,6 +41,7 @@
import org.argouml.profile.init.InitProfileSubsystem;
import org.argouml.uml.diagram.ArgoDiagram;
import org.argouml.uml.diagram.ArgoDiagramImpl;
+import org.argouml.uml.diagram.DiagramElement;
import org.tigris.gef.presentation.Fig;
import org.tigris.gef.presentation.FigNode;
import org.tigris.gef.presentation.FigRect;
@@ -461,6 +463,12 @@
public void encloserChanged(FigNode enclosed,
FigNode oldEncloser, FigNode newEncloser) {
}
+ public DiagramElement createDiagramElement(
+ final Object modelElement,
+ final Rectangle bounds) {
+ return null;
+ }
+
};
Project p = ProjectManager.getManager().getCurrentProject();
p.addDiagram(diag);
------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2382214
To unsubscribe from this discussion, e-mail: [[email protected]].