Author: bobtarling
Date: 2008-06-07 09:03:38-0700
New Revision: 14881
Modified:
trunk/src/argouml-app/src/org/argouml/uml/reveng/ui/RESequenceDiagramDialog.java
trunk/src/argouml-app/src/org/argouml/uml/ui/ActionRESequenceDiagram.java
Log:
Resolve some TODO items and introduce others
Make variable names more obvious
Pass diagram as argument from action to dialog
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=14881&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=14880&r2=14881
==============================================================================
--- 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 09:03:38-0700
@@ -106,6 +106,8 @@
private static final int X_OFFSET = 10;
private final Object model;
+
+ // TODO: Why is this not final?
private Modeller modeller;
private final Object classifier;
private final Object operation;
@@ -143,7 +145,7 @@
* @param oper The operation that should be reverse engineered.
*/
public RESequenceDiagramDialog(Object oper) {
- this(oper, null);
+ this(oper, null, null);
}
/**
@@ -154,7 +156,10 @@
* @param oper The operation that should be reverse engineered.
* @param figMessage the message figure where the result will be drawn to
*/
- public RESequenceDiagramDialog(Object oper, FigMessage figMessage) {
+ public RESequenceDiagramDialog(
+ Object oper,
+ FigMessage figMessage,
+ 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(
@@ -181,6 +186,8 @@
} catch (Exception ex) {
// the only chance we have is to finish the current operation
LOG.warn("Modeller not ready, so no more generation of calls", ex);
+ // TODO: Why do we continue here as if nothing has gone wrong?
+ // Can we really continue correctly without a modeller?
}
classifier = Model.getFacade().getOwner(operation);
@@ -209,18 +216,18 @@
Iterator<Fig> it = diagram.getFigIterator();
while (it.hasNext()) {
Fig f = it.next();
- // TODO: Test fig owner type rather than Fig class type
- if (f instanceof FigClassifierRole) {
+ Object modelElement = f.getOwner();
+
+ if (Model.getFacade().isAClassifierRole(modelElement)) {
int x = f.getX();
if (maxXPos < x) {
maxXPos = x;
}
- if (Model.getFacade().getName(f.getOwner())
+ if (Model.getFacade().getName(modelElement)
.startsWith("anon")) {
anonCnt++;
}
- // TODO: Test fig owner type rather than Fig class type
- } else if (f instanceof FigMessage) {
+ } else if (Model.getFacade().isAMessage(modelElement)) {
int port =
SequenceDiagramLayer.getNodeIndex(
((FigMessage) f).getDestMessageNode()
Modified: trunk/src/argouml-app/src/org/argouml/uml/ui/ActionRESequenceDiagram.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/ui/ActionRESequenceDiagram.java?view=diff&rev=14881&p1=trunk/src/argouml-app/src/org/argouml/uml/ui/ActionRESequenceDiagram.java&p2=trunk/src/argouml-app/src/org/argouml/uml/ui/ActionRESequenceDiagram.java&r1=14880&r2=14881
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/ui/ActionRESequenceDiagram.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/ui/ActionRESequenceDiagram.java 2008-06-07 09:03:38-0700
@@ -31,10 +31,15 @@
import javax.swing.AbstractAction;
import org.argouml.i18n.Translator;
+import org.argouml.kernel.Project;
+import org.argouml.kernel.ProjectManager;
import org.argouml.model.Model;
import org.argouml.ui.targetmanager.TargetManager;
+import org.argouml.uml.diagram.ArgoDiagram;
+import org.argouml.uml.diagram.sequence.SequenceDiagramGraphModel;
import org.argouml.uml.diagram.sequence.ui.FigMessage;
import org.argouml.uml.reveng.ui.RESequenceDiagramDialog;
+import org.tigris.gef.base.Globals;
/**
* Action to reverse engineer a sequence diagram from the operation bodies.
@@ -64,28 +69,45 @@
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed(ActionEvent e) {
- Object obj = TargetManager.getInstance().getTarget();
- if (Model.getFacade().isAOperation(obj)) {
- RESequenceDiagramDialog dialog = new RESequenceDiagramDialog(obj);
+ final Object target = TargetManager.getInstance().getTarget();
+ if (Model.getFacade().isAOperation(target)) {
+ RESequenceDiagramDialog dialog =
+ new RESequenceDiagramDialog(target);
dialog.setVisible(true);
- } else if (Model.getFacade().isAMessage(obj) && messageFig != null) {
- Object ac = Model.getFacade().getAction(obj);
- Object op =
- Model.getFacade().isACallAction(ac)
- ? Model.getFacade().getOperation(ac)
+ } else if (Model.getFacade().isAMessage(target) && messageFig != null) {
+ final Object action = Model.getFacade().getAction(target);
+ Object operation =
+ Model.getFacade().isACallAction(action)
+ ? Model.getFacade().getOperation(action)
: null;
- if (op != null) {
+ final SequenceDiagramGraphModel sequenceDiagramGraphModel =
+ (SequenceDiagramGraphModel) Globals.curEditor().getGraphModel();
+ final Project project =
+ ProjectManager.getManager().getCurrentProject();
+ ArgoDiagram diagram = null;
+ Iterator<ArgoDiagram> iter = project.getDiagramList().iterator();
+ while (iter.hasNext()) {
+ diagram = iter.next();
+ if (sequenceDiagramGraphModel == diagram.getGraphModel()) {
+ break;
+ }
+ }
+ if (operation != null) {
// it is highly desirable that the message action
// already knows it's operation
- RESequenceDiagramDialog dialog =
- // TODO: There is a cyclic dependency between
- // ActionRESequenceDiagram and FigMessage
- new RESequenceDiagramDialog(op, (FigMessage) messageFig);
+ // TODO: There is a cyclic dependency between
+ // ActionRESequenceDiagram and FigMessage
+ RESequenceDiagramDialog dialog = new RESequenceDiagramDialog(
+ operation,
+ (FigMessage) messageFig,
+ diagram);
dialog.setVisible(true);
} else {
// the hard way: try to determine the operation
// from the message name
- Object receiver = Model.getFacade().getReceiver(obj);
+ Object receiver = Model.getFacade().getReceiver(target);
+ // TODO: Do we really need to test for null here? I would
+ // expect an empty array which is safe.
Collection c =
receiver != null
? Model.getFacade().getBases(receiver)
@@ -95,7 +117,7 @@
if (cls != null && Model.getFacade().isAClassifier(cls)) {
// too primitive (just gets the first method
// with matching name)
- String opName = Model.getFacade().getName(obj);
+ String opName = Model.getFacade().getName(target);
int pos1 = opName.lastIndexOf(".");
int pos2 = opName.lastIndexOf("(");
if (pos1 == -1) {
@@ -106,16 +128,19 @@
}
pos2 = pos2 != -1 ? pos2 : opName.length();
opName = opName.substring(pos1, pos2);
- c = Model.getCoreHelper().getOperationsInh(cls);
- Iterator iter = c != null ? c.iterator() : null;
- while (iter != null && iter.hasNext()) {
- op = iter.next();
- if (opName.equals(Model.getFacade().getName(op))) {
+ final Iterator it =
+ Model.getCoreHelper().getOperationsInh(cls).iterator();
+ while (it.hasNext()) {
+ operation = it.next();
+ if (opName.equals(
+ Model.getFacade().getName(operation))) {
// TODO: There is a cyclic dependency between
// ActionRESequenceDiagram and FigMessage
RESequenceDiagramDialog dialog =
- new RESequenceDiagramDialog(op,
- (FigMessage) messageFig);
+ new RESequenceDiagramDialog(
+ operation,
+ (FigMessage) messageFig,
+ diagram);
dialog.setVisible(true);
break;
}
@@ -135,6 +160,7 @@
|| Model.getFacade().isAMessage(target);
}
+ // TODO: We later cast this to FigMessage so why define as Object here?
private Object messageFig;
/**
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.