Author: bszanto Date: 2008-10-31 11:54:06-0700 New Revision: 15951 Modified: 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/ui/DnDJGraph.java trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ModeAddToDiagram.java trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SequenceDiagramRenderer.java trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/UMLSequenceDiagram.java
Log: Fixed [1] some missing states in the DnD feature for Activity and State diagrams, [2] the NullPointerException when a fig is not accepted for DnD, [3] the non working "Add to Diagram" when trying to add a Class to a Seq2 diagram. 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&rev=15951&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/UMLActivityDiagram.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/UMLActivityDiagram.java&r1=15950&r2=15951 ============================================================================== --- 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 2008-10-31 11:54:06-0700 @@ -51,7 +51,14 @@ import org.argouml.uml.diagram.state.ui.ButtonActionNewChangeEvent; import org.argouml.uml.diagram.state.ui.ButtonActionNewSignalEvent; import org.argouml.uml.diagram.state.ui.ButtonActionNewTimeEvent; +import org.argouml.uml.diagram.state.ui.FigBranchState; +import org.argouml.uml.diagram.state.ui.FigFinalState; +import org.argouml.uml.diagram.state.ui.FigForkState; +import org.argouml.uml.diagram.state.ui.FigInitialState; +import org.argouml.uml.diagram.state.ui.FigJoinState; +import org.argouml.uml.diagram.state.ui.FigJunctionState; 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.RadioAction; import org.argouml.uml.diagram.ui.UMLDiagram; @@ -757,11 +764,23 @@ public boolean doesAccept(Object objectToAccept) { if (Model.getFacade().isAPartition(objectToAccept)) { return true; - } else if (Model.getFacade().isACallState(objectToAccept)) { + } else if (Model.getFacade().isAState(objectToAccept)) { return true; - } else if (Model.getFacade().isAObjectFlowState(objectToAccept)) { + } else if (Model.getFacade().isAPseudostate(objectToAccept)) { + Object kind = Model.getFacade().getKind(objectToAccept); + if (kind == null) { + LOG.warn("found a null type pseudostate"); + return false; + } + if (kind.equals( + Model.getPseudostateKind().getShallowHistory())) { + return false; + } else if (kind.equals( + Model.getPseudostateKind().getDeepHistory())) { + return false; + } return true; - } else if (Model.getFacade().isASubactivityState(objectToAccept)) { + } else if (Model.getFacade().isAComment(objectToAccept)) { return true; } return false; @@ -774,12 +793,41 @@ if (Model.getFacade().isAPartition(droppedObject)) { figNode = new FigPartition(gm, droppedObject); + } else if (Model.getFacade().isAActionState(droppedObject)) { + figNode = new FigActionState(gm, droppedObject); } else if (Model.getFacade().isACallState(droppedObject)) { figNode = new FigCallState(gm, droppedObject); } else if (Model.getFacade().isAObjectFlowState(droppedObject)) { figNode = new FigObjectFlowState(gm, droppedObject); } else if (Model.getFacade().isASubactivityState(droppedObject)) { figNode = new FigSubactivityState(gm, droppedObject); + } else if (Model.getFacade().isAFinalState(droppedObject)) { + figNode = new FigFinalState(gm, droppedObject); + } else if (Model.getFacade().isAPseudostate(droppedObject)) { + Object kind = Model.getFacade().getKind(droppedObject); + if (kind == null) { + LOG.warn("found a null type pseudostate"); + return null; + } + if (kind.equals(Model.getPseudostateKind().getInitial())) { + figNode = new FigInitialState(gm, droppedObject); + } else if (kind.equals( + Model.getPseudostateKind().getChoice())) { + figNode = new FigBranchState(gm, droppedObject); + } else if (kind.equals( + Model.getPseudostateKind().getJunction())) { + figNode = new FigJunctionState(gm, droppedObject); + } else if (kind.equals( + Model.getPseudostateKind().getFork())) { + figNode = new FigForkState(gm, droppedObject); + } else if (kind.equals( + Model.getPseudostateKind().getJoin())) { + figNode = new FigJoinState(gm, droppedObject); + } else { + LOG.warn("found a type not known"); + } + } else if (Model.getFacade().isAComment(droppedObject)) { + figNode = new FigComment(gm, droppedObject); } if (figNode != null) { @@ -791,7 +839,8 @@ LOG.debug("Dropped object " + droppedObject + " converted to " + figNode); } else { - LOG.debug("Dropped object NOT added " + figNode); + LOG.debug("Dropped object NOT added. This usualy means that this " + + "type of object is not accepted!"); } 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&rev=15951&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/UMLCollaborationDiagram.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/UMLCollaborationDiagram.java&r1=15950&r2=15951 ============================================================================== --- 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 2008-10-31 11:54:06-0700 @@ -446,8 +446,6 @@ return true; } else if (Model.getFacade().isAComment(objectToAccept)) { return true; - } else if (Model.getFacade().isAClassifierRole(objectToAccept)) { - return true; } else if (Model.getFacade().isAClassifier(objectToAccept)) { return true; } @@ -484,15 +482,18 @@ */ private FigClassifierRole makeNewFigCR(Object classifierRole, Point location) { + if (classifierRole != null) { + FigClassifierRole newCR = new FigClassifierRole(getGraphModel(), + getLayer(), classifierRole); + + getGraphModel().getNodes().add(newCR.getOwner()); + + newCR.setY(location.y); + newCR.setX(location.x); + return newCR; + } - FigClassifierRole newCR = new FigClassifierRole(getGraphModel(), - getLayer(), classifierRole); - - getGraphModel().getNodes().add(newCR.getOwner()); - - newCR.setY(location.y); - newCR.setX(location.x); - return newCR; + return null; } @Override 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&rev=15951&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/UMLDeploymentDiagram.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/UMLDeploymentDiagram.java&r1=15950&r2=15951 ============================================================================== --- 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 2008-10-31 11:54:06-0700 @@ -45,6 +45,7 @@ import org.argouml.uml.diagram.ui.FigNodeAssociation; 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.util.ToolBarUtility; import org.tigris.gef.base.LayerPerspective; import org.tigris.gef.base.LayerPerspectiveMutable; @@ -546,6 +547,8 @@ return true; } else if (Model.getFacade().isAComment(objectToAccept)) { return true; + } else if (Model.getFacade().isAActor(objectToAccept)) { + return true; } return false; } @@ -571,6 +574,8 @@ figNode = new FigInterface(gm, droppedObject); } else if (Model.getFacade().isAObject(droppedObject)) { figNode = new FigObject(gm, droppedObject); + } else if (Model.getFacade().isAActor(droppedObject)) { + figNode = new FigActor(gm, droppedObject); } else if (Model.getFacade().isAComment(droppedObject)) { figNode = new FigComment(gm, droppedObject); } 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&rev=15951&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/UMLStateDiagram.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/UMLStateDiagram.java&r1=15950&r2=15951 ============================================================================== --- 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 2008-10-31 11:54:06-0700 @@ -733,25 +733,17 @@ @Override public boolean doesAccept(Object objectToAccept) { - if (Model.getFacade().isAActionState(objectToAccept)) { + if (Model.getFacade().isAState(objectToAccept)) { return true; - } else if (Model.getFacade().isAFinalState(objectToAccept)) { + } else if (Model.getFacade().isASynchState(objectToAccept)) { return true; } else if (Model.getFacade().isAStubState(objectToAccept)) { return true; - } else if (Model.getFacade().isASubmachineState(objectToAccept)) { - return true; - } else if (Model.getFacade().isACompositeState(objectToAccept)) { - return true; - } else if (Model.getFacade().isASynchState(objectToAccept)) { - return true; - } else if (Model.getFacade().isAState(objectToAccept)) { + } else if (Model.getFacade().isAPseudostate(objectToAccept)) { return true; } else if (Model.getFacade().isAComment(objectToAccept)) { return true; - } else if (Model.getFacade().isAPseudostate(objectToAccept)) { - return true; - } + } return false; } @@ -777,8 +769,7 @@ } else if (Model.getFacade().isAComment(droppedObject)) { figNode = new FigComment(gm, droppedObject); } else if (Model.getFacade().isAPseudostate(droppedObject)) { - Object pState = droppedObject; - Object kind = Model.getFacade().getKind(pState); + Object kind = Model.getFacade().getKind(droppedObject); if (kind == null) { LOG.warn("found a null type pseudostate"); return null; 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&rev=15951&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/DnDJGraph.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/DnDJGraph.java&r1=15950&r2=15951 ============================================================================== --- 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 2008-10-31 11:54:06-0700 @@ -40,11 +40,9 @@ import org.argouml.kernel.ProjectManager; import org.argouml.ui.TransferableModelElements; import org.argouml.uml.diagram.ArgoDiagram; -import org.argouml.uml.diagram.use_case.ui.UMLUseCaseDiagram; 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.presentation.JGraph; @@ -201,7 +199,7 @@ FigNode figNode = ((UMLDiagram )diagram).drop(i.next(), dropTargetDropEvent.getLocation()); -// if (diagram instanceof UMLUseCaseDiagram) { + if (figNode != null) { GraphModel gm = diagram.getGraphModel(); if (!gm.getNodes().contains(figNode.getOwner())) { gm.getNodes().add(figNode.getOwner()); @@ -209,13 +207,10 @@ Globals.curEditor().getLayerManager().getActiveLayer() .add(figNode); -// } + } } -// ActionAddExistingNodes.addNodes(modelElements, -// dropTargetDropEvent.getLocation(), diagram); - dropTargetDropEvent.getDropTargetContext().dropComplete(true); } catch (UnsupportedFlavorException e) { LOG.debug(e); Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ModeAddToDiagram.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ModeAddToDiagram.java?view=diff&rev=15951&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ModeAddToDiagram.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ModeAddToDiagram.java&r1=15950&r2=15951 ============================================================================== --- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ModeAddToDiagram.java (original) +++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ModeAddToDiagram.java 2008-10-31 11:54:06-0700 @@ -34,6 +34,8 @@ import java.util.List; import org.apache.log4j.Logger; +import org.argouml.kernel.ProjectManager; +import org.argouml.uml.diagram.ArgoDiagram; import org.tigris.gef.base.Editor; import org.tigris.gef.base.FigModifyingModeImpl; import org.tigris.gef.base.Layer; @@ -129,50 +131,54 @@ final List<FigNode> placedFigs = new ArrayList<FigNode>(modelElements.size()); - for (final Object node : modelElements) { - if (gm.canAddNode(node)) { - final FigNode pers = - renderer.getFigNodeFor(gm, lay, node, null); - pers.setLocation(snapPt.x + (count++ * 100), snapPt.y); - if (LOG.isDebugEnabled()) { - LOG.debug("mouseMoved: Location set (" - + pers.getX() + "," + pers.getY() + ")"); - } - UndoManager.getInstance().startChain(); - editor.add(pers); - gm.addNode(node); - if (addRelatedEdges) { - gm.addNodeRelatedEdges(node); - } - - Fig encloser = null; - final Rectangle bbox = pers.getBounds(); - final List<Fig> otherFigs = lay.getContents(); - for (final Fig otherFig : otherFigs) { - if (!(otherFig.getUseTrapRect())) { - continue; + ArgoDiagram diag = ProjectManager.getManager().getCurrentProject() + .getActiveDiagram(); + if (diag instanceof UMLDiagram) { + for (final Object node : modelElements) { + if (((UMLDiagram) diag).doesAccept(node)) { + final FigNode pers = + renderer.getFigNodeFor(gm, lay, node, null); + pers.setLocation(snapPt.x + (count++ * 100), snapPt.y); + if (LOG.isDebugEnabled()) { + LOG.debug("mouseMoved: Location set (" + + pers.getX() + "," + pers.getY() + ")"); } - if (!(otherFig instanceof FigNode)) { - continue; + UndoManager.getInstance().startChain(); + editor.add(pers); + gm.addNode(node); + if (addRelatedEdges) { + gm.addNodeRelatedEdges(node); } - if (!otherFig.isVisible()) { - continue; - } - if (otherFig.equals(pers)) { - continue; - } - final Rectangle trap = otherFig.getTrapRect(); - if (trap != null - && trap.contains(bbox.x, bbox.y) - && trap.contains( - bbox.x + bbox.width, - bbox.y + bbox.height)) { - encloser = otherFig; + + Fig encloser = null; + final Rectangle bbox = pers.getBounds(); + final List<Fig> otherFigs = lay.getContents(); + for (final Fig otherFig : otherFigs) { + if (!(otherFig.getUseTrapRect())) { + continue; + } + if (!(otherFig instanceof FigNode)) { + continue; + } + if (!otherFig.isVisible()) { + continue; + } + if (otherFig.equals(pers)) { + continue; + } + final Rectangle trap = otherFig.getTrapRect(); + if (trap != null + && trap.contains(bbox.x, bbox.y) + && trap.contains( + bbox.x + bbox.width, + bbox.y + bbox.height)) { + encloser = otherFig; + } } + pers.setEnclosingFig(encloser); + + placedFigs.add(pers); } - pers.setEnclosingFig(encloser); - - placedFigs.add(pers); } } Modified: trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SequenceDiagramRenderer.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SequenceDiagramRenderer.java?view=diff&rev=15951&p1=trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SequenceDiagramRenderer.java&p2=trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SequenceDiagramRenderer.java&r1=15950&r2=15951 ============================================================================== --- trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SequenceDiagramRenderer.java (original) +++ trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SequenceDiagramRenderer.java 2008-10-31 11:54:06-0700 @@ -32,7 +32,6 @@ import org.argouml.uml.CommentEdge; import org.argouml.uml.diagram.ArgoDiagram; import org.argouml.uml.diagram.UmlDiagramRenderer; -import org.argouml.uml.diagram.static_structure.ui.FigComment; import org.argouml.uml.diagram.static_structure.ui.FigEdgeNote; import org.argouml.uml.diagram.ui.UMLDiagram; import org.tigris.gef.base.Layer; @@ -61,13 +60,14 @@ Map styleAttributes) { FigNode result = null; ArgoDiagram diag = ProjectManager.getManager().getCurrentProject() - .getActiveDiagram(); + .getActiveDiagram(); if (diag instanceof UMLDiagram && ((UMLDiagram) diag).doesAccept(node)) { result = ((UMLDiagram) diag).drop(node, null); } else { return null; } + LOG.debug("SequenceDiagramRenderer getFigNodeFor " + result); lay.add(result); return result; } Modified: trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/UMLSequenceDiagram.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/UMLSequenceDiagram.java?view=diff&rev=15951&p1=trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/UMLSequenceDiagram.java&p2=trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/UMLSequenceDiagram.java&r1=15950&r2=15951 ============================================================================== --- trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/UMLSequenceDiagram.java (original) +++ trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/UMLSequenceDiagram.java 2008-10-31 11:54:06-0700 @@ -228,34 +228,36 @@ */ private FigClassifierRole makeNewFigCR(Object classifierRole, Point location) { - - FigClassifierRole newCR = new FigClassifierRole(classifierRole); - - getGraphModel().getNodes().add(newCR.getOwner()); - - // 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; + if (classifierRole != null) { + FigClassifierRole newCR = new FigClassifierRole(classifierRole); + + getGraphModel().getNodes().add(newCR.getOwner()); + + // 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++; } - i++; - } - if (location != null) { - if (newCR.getY() == 0) { - newCR.setY(location.y); + if (location != null) { + if (newCR.getY() == 0) { + newCR.setY(location.y); + } + newCR.setX(location.x); } - newCR.setX(location.x); + return newCR; } - return newCR; + return null; } @Override --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
