Author: bobtarling
Date: 2008-06-07 10:33:49-0700
New Revision: 14882
Modified:
trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/RESequenceDiagramDialog.java
Log:
Get rid of some redundant state.
Clarify variable names
TODO items
Modified: trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/RESequenceDiagramDialog.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/RESequenceDiagramDialog.java?view=diff&rev=14882&p1=trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/RESequenceDiagramDialog.java&p2=trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/RESequenceDiagramDialog.java&r1=14881&r2=14882
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/RESequenceDiagramDialog.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/RESequenceDiagramDialog.java 2008-06-07 10:33:49-0700
@@ -63,7 +63,6 @@
import org.argouml.ui.targetmanager.TargetManager;
import org.argouml.uml.diagram.ArgoDiagram;
import org.argouml.uml.diagram.DiagramFactory;
-import org.argouml.uml.diagram.UMLMutableGraphSupport;
import org.argouml.uml.diagram.DiagramFactory.DiagramType;
import org.argouml.uml.diagram.sequence.MessageNode;
import org.argouml.uml.diagram.sequence.SequenceDiagramGraphModel;
@@ -80,6 +79,7 @@
import org.tigris.gef.base.Editor;
import org.tigris.gef.base.Globals;
import org.tigris.gef.base.Mode;
+import org.tigris.gef.graph.MutableGraphModel;
import org.tigris.gef.presentation.Fig;
/**
@@ -92,6 +92,7 @@
* At the very least split dialog from processing and remove knowledge
* of sequence diagram implementation<p>
* TODO: work with import modules instead of the internal Java import<p>
+ * TODO: use java5 style for loops
* TODO: i18n<p>
*/
public class RESequenceDiagramDialog
@@ -102,6 +103,11 @@
*/
private static final Logger LOG =
Logger.getLogger(RESequenceDiagramDialog.class);
+
+ /**
+ * The UID.
+ */
+ private static final long serialVersionUID = -8595714827064181907L;
private static final int X_OFFSET = 10;
@@ -109,6 +115,7 @@
// TODO: Why is this not final?
private Modeller modeller;
+
private final Object classifier;
private final Object operation;
@@ -120,11 +127,7 @@
private final List<String> calldata = new ArrayList<String>();
private final Hashtable types = new Hashtable();
- // TODO: We possibly have more state than we need here. Can we have diagram
- // only? graphModel and collaboration can be deduced from that.
- private ArgoDiagram diagram;
- private UMLMutableGraphSupport graphModel;
- private Object collaboration;
+ private final ArgoDiagram diagram;
private CheckboxTableModel callTable;
private JComboBox modeChoice;
@@ -155,11 +158,12 @@
*
* @param oper The operation that should be reverse engineered.
* @param figMessage the message figure where the result will be drawn to
+ * @param diagram the diagram to draw to or null is a new diagram required
*/
public RESequenceDiagramDialog(
- Object oper,
- FigMessage figMessage,
- ArgoDiagram diagram) {
+ final Object oper,
+ final FigMessage figMessage,
+ final ArgoDiagram diagram) {
// TODO: don't depend on a Fig (but it is needed to extend an existing
// sequence diagram, i.e. to perform an action on a FigMessage!)
super(
@@ -192,21 +196,8 @@
classifier = Model.getFacade().getOwner(operation);
if (figMessage != null) {
+ this.diagram = diagram;
isNewSequenceDiagram = false;
- SequenceDiagramGraphModel sequenceDiagramGraphModel =
- (SequenceDiagramGraphModel) Globals.curEditor().getGraphModel();
- graphModel = sequenceDiagramGraphModel;
- collaboration = sequenceDiagramGraphModel.getCollaboration();
-
- // TODO: Pass the current diagram as an argument to constructor.
- Iterator<ArgoDiagram> iter = project.getDiagramList().iterator();
- while (iter.hasNext()) {
- diagram = iter.next();
- if (graphModel == diagram.getGraphModel()) {
- break;
- }
- }
-
figClassifierRole = getFigClassifierRole(classifier, "obj");
// TODO: There is only a single port on new implementation of SD
// so how do we resolve this?
@@ -239,7 +230,7 @@
}
} else {
isNewSequenceDiagram = true;
- diagram = buildSequenceDiagram(classifier);
+ this.diagram = buildSequenceDiagram(classifier);
figClassifierRole = getFigClassifierRole(classifier, "obj");
maxXPos = figClassifierRole.getX();
}
@@ -258,7 +249,10 @@
if (e.getSource() == getOkButton()) {
for (int i = 0; i < callTable.getRowCount(); i++) {
if (Boolean.TRUE.equals(callTable.getValueAt(i, 1))) {
- buildAction((String) callTable.getValueAt(i, 0), figClassifierRole, figClassifierRole);
+ buildAction(
+ (String) callTable.getValueAt(i, 0),
+ figClassifierRole,
+ figClassifierRole);
}
}
} else if (e.getSource() == getCancelButton()
@@ -267,6 +261,7 @@
Project p = ProjectManager.getManager().getCurrentProject();
Object newTarget = null;
if (ActionDeleteModelElements.sureRemove(diagram)) {
+ Object collaboration = diagram.getNamespace();
// remove from the model
newTarget = getNewTarget(diagram);
p.moveToTrash(diagram);
@@ -504,21 +499,21 @@
* TODO: find a better place for a similar method.
*/
private ArgoDiagram buildSequenceDiagram(Object theClassifier) {
+ // TODO: Remove reference to ProjectManager
Project p = ProjectManager.getManager().getCurrentProject();
- collaboration =
+ Object collaboration =
Model.getCollaborationsFactory().buildCollaboration(
Model.getFacade().getNamespace(theClassifier),
theClassifier);
- final ArgoDiagram diagram =
+ final ArgoDiagram newDiagram =
DiagramFactory.getInstance().createDiagram(
DiagramType.Sequence,
collaboration,
null);
- graphModel = (SequenceDiagramGraphModel) diagram.getGraphModel();
- p.addMember(diagram);
- TargetManager.getInstance().setTarget(diagram);
- return diagram;
+ p.addMember(newDiagram);
+ TargetManager.getInstance().setTarget(newDiagram);
+ return newDiagram;
}
/**
@@ -554,28 +549,31 @@
}
if (crFig == null) {
// classifier role does not exists, so create a new one
- Object node =
+ Object newClassifierRole =
Model.getCollaborationsFactory()
- .buildClassifierRole(collaboration);
+ .buildClassifierRole(diagram.getNamespace());
if (objName != null) {
- Model.getCoreHelper().setName(node, objName);
+ Model.getCoreHelper().setName(newClassifierRole, objName);
} else {
// TODO: I don't think it's normal to generate model element
// names
- Model.getCoreHelper().setName(node, "anon" + (++anonCnt));
+ Model.getCoreHelper().setName(newClassifierRole, "anon" + (++anonCnt));
}
coll = new ArrayList();
coll.add(theClassifier);
- Model.getCollaborationsHelper().setBases(node, coll);
- crFig = new FigClassifierRole(node);
+ Model.getCollaborationsHelper().setBases(newClassifierRole, coll);
+ crFig = new FigClassifierRole(newClassifierRole);
// location must be set for correct automatic layouting (how funny)
// otherwise, the new classifier role is not the rightmost
maxXPos += X_OFFSET;
crFig.setLocation(maxXPos, 0);
+ // TODO: Do we need to do both of these?
diagram.add(crFig);
- graphModel.addNode(node);
+ ((MutableGraphModel)
+ (diagram.getGraphModel())).addNode(newClassifierRole);
+
// TODO: Send event instead of calling event adapter directly
ExplorerEventAdaptor.getInstance().modelElementChanged(
Model.getFacade().getNamespace(classifier));
@@ -737,6 +735,8 @@
Mode mode = ce.getModeManager().top();
mode.setArgs(args);
+ SequenceDiagramGraphModel graphModel =
+ (SequenceDiagramGraphModel) diagram.getGraphModel();
Object newEdge = graphModel.connect(startPort, foundPort, messageType);
if (null != newEdge) {
Model.getCoreHelper().setName(newEdge, call);
@@ -761,7 +761,9 @@
* interface.
* TODO: objName is not used. Are there plans for this?
*/
- private Object getClassifierFromModel(String type, String objName) {
+ private Object getClassifierFromModel(
+ final String type,
+ final String objName) {
Object theClassifier = null;
int pos = type.lastIndexOf(".");
if (pos != -1) {
@@ -873,11 +875,15 @@
Object theClassifier = null;
// TODO: This could use the new CoreHelper.getPackageImports()
Collection cdeps = Model.getFacade().getClientDependencies(comp);
+ // TODO: Do we really need to test for null here?
+ // We should get empty collections.
Iterator iter1 = cdeps != null ? cdeps.iterator() : null;
while (theClassifier == null && iter1 != null && iter1.hasNext()) {
Object perm = iter1.next();
if (Model.getFacade().isAPermission(perm)) {
Collection suppliers = Model.getFacade().getSuppliers(perm);
+ // TODO: Do we really need to test for null here?
+ // We should get empty collections.
Iterator iter2 =
suppliers != null ? suppliers.iterator() : null;
while (theClassifier == null
@@ -929,9 +935,4 @@
}
}
-
- /**
- * The UID.
- */
- private static final long serialVersionUID = -8595714827064181907L;
}
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.