svn commit: r18857 - trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: bobtarling
Date: 2010-11-22 03:44:37-0800
New Revision: 18857

Modified:
   trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/CreateDiagramElementAction.java
   trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/ModePlaceDiagramElement.java
   trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/UMLActivityDiagram.java

Log:
Create the diagram toolbars create buttons from the XML file

Modified: trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/CreateDiagramElementAction.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/CreateDiagramElementAction.java?view=diff&pathrev=18857&r1=18856&r2=18857
==============================================================================
--- trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/CreateDiagramElementAction.java	(original)
+++ trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/CreateDiagramElementAction.java	2010-11-22 03:44:37-0800
@@ -16,6 +16,7 @@
 import java.awt.event.ActionEvent;
 import org.argouml.application.helpers.ResourceLoaderWrapper;
 import org.argouml.ui.UndoableAction;
+import org.argouml.uml.diagram.ArgoDiagram;
 import org.tigris.gef.base.Globals;
 import org.tigris.gef.base.Mode;
 
@@ -23,10 +24,12 @@
     
     final Object metaType;
     final String style;
+    final ArgoDiagram diagram;
 
-    CreateDiagramElementAction(Object metaType, String style, String name) {
+    CreateDiagramElementAction(Object metaType, String style, String name, ArgoDiagram diagram) {
         super(name, ResourceLoaderWrapper.lookupIconResource(
                 ResourceLoaderWrapper.getImageBinding(name)));
+        this.diagram = diagram;
         this.metaType = metaType;
         this.style = style;
     }
@@ -34,7 +37,7 @@
     public void actionPerformed(ActionEvent e) {
         super.actionPerformed(e);
 
-        Mode placeMode = new ModePlaceDiagramElement(metaType, style, "Click to place diagram element");
+        Mode placeMode = new ModePlaceDiagramElement(diagram, metaType, style, "Click to place diagram element");
         Globals.mode(placeMode, false);
     }
 }

Modified: trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/ModePlaceDiagramElement.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/ModePlaceDiagramElement.java?view=diff&pathrev=18857&r1=18856&r2=18857
==============================================================================
--- trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/ModePlaceDiagramElement.java	(original)
+++ trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/ModePlaceDiagramElement.java	2010-11-22 03:44:37-0800
@@ -9,7 +9,9 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.log4j.Logger;
 import org.argouml.model.Model;
+import org.argouml.uml.diagram.ArgoDiagram;
 import org.argouml.uml.diagram.DiagramSettings;
 import org.tigris.gef.base.FigModifyingModeImpl;
 import org.tigris.gef.base.Globals;
@@ -25,9 +27,11 @@
 
 public class ModePlaceDiagramElement extends FigModifyingModeImpl {
 
+    private static final Logger LOG = Logger.getLogger(ModePlaceDiagramElement.class);
     private final Object metaType;
     private final String style;
     private final String instructions;
+    private final ArgoDiagram diagram;
     
     private Object modelElement;
     private GraphNode graphNode;
@@ -36,9 +40,11 @@
     private static final int HEIGHT = 25;
     
     public ModePlaceDiagramElement(
+            ArgoDiagram diagram,
             Object metaType,
             String style,
             String instructions) {
+        this.diagram = diagram;
         this.metaType = metaType;
         this.style = style;
         if (instructions == null) {
@@ -56,20 +62,20 @@
         return Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR);
     }
 
-    // //////////////////////////////////////////////////////////////
-    // event handlers
-
-    /** Move the perpective along with the mouse. */
     public void mousePressed(MouseEvent me) {
         if (me.isConsumed()) {
             return;
         }
         UndoManager.getInstance().addMementoLock(this);
+        // TODO: Something might go wrong during processing. We don't really
+        // want to create the model element until the user releases the mouse
+        // in the place expected.
         modelElement = Model.getUmlFactory().buildNode(metaType);
+        //
         start();
         editor = Globals.curEditor();
         Layer lay = editor.getLayerManager().getActiveLayer();
-        graphNode = createDiagramElement(lay, modelElement, null);
+        graphNode = createDiagramElement(lay, modelElement, diagram.getDiagramSettings());
         mouseMoved(me);
         me.consume();
     }
@@ -115,15 +121,14 @@
             return;
         }
 
-        MutableGraphModel mgm =
-            (MutableGraphModel) editor.getGraphModel();
-        if (mgm.canAddNode(modelElement)) {
-            UndoManager.getInstance().startChain();
-            editor.add((Fig) graphNode);
-            mgm.addNode(modelElement);
+        LOG.info("Mouse released");
+        MutableGraphModel mgm = (MutableGraphModel) editor.getGraphModel();
+        UndoManager.getInstance().startChain();
+        editor.add((Fig) graphNode);
+        mgm.addNode(modelElement);
 
-            editor.getSelectionManager().select((Fig) graphNode);
-        }
+        editor.getSelectionManager().select((Fig) graphNode);
+        LOG.info("The diagram element " + graphNode + " was added");
         done();
         me.consume();
     }

Modified: trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/UMLActivityDiagram.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/UMLActivityDiagram.java?view=diff&pathrev=18857&r1=18856&r2=18857
==============================================================================
--- trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/UMLActivityDiagram.java	(original)
+++ trunk/src/argouml-core-diagrams-activity2/src/org/argouml/activity2/diagram/UMLActivityDiagram.java	2010-11-22 03:44:37-0800
@@ -43,11 +43,18 @@
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 
+/**
+ * Diagram class for UML2 Activity Diagram
+ * @author Bob Tarling
+ */
 public class UMLActivityDiagram extends BaseDiagram implements ActivityDiagram {
     
     private static final Logger LOG = Logger
         .getLogger(UMLActivityDiagram.class);
     
+    private Map<String, Class<?>> metaTypeByName;
+    private Map<Class<?>, String> nameByMetaType;
+    
     UMLActivityDiagram(Object activity) {
         super(activity);
     }
@@ -90,36 +97,6 @@
         };
     }
     
-    private Map<String, Class<?>> metaTypeByName;
-    private Map<Class<?>, String> nameByMetaType;
-    private List<Object> getCreateDiagramElementActions() {
-        try {
-            final Document doc = getDocument();
-            final NodeList nl = doc.getDocumentElement().getChildNodes();
-            for (int i = 0; i < nl.getLength(); ++i) {
-                final Node n = nl.item(i);
-                if (n.getNodeName().equals("classes")) {
-                    final int size = n.getChildNodes().getLength();
-                    nameByMetaType = new HashMap<Class<?>, String>(size);
-                    metaTypeByName = new HashMap<String, Class<?>>(size);
-                    populateClassMaps((Element) n, nameByMetaType, metaTypeByName);
-                } else if (n.getNodeName().equals("toolbar")) {
-                    List<Object> actions = getToolbarActions((Element) n);
-                    return actions;
-                }
-            }
-        } catch (DOMException e) {
-            LOG.error("", e);
-        } catch (IOException e) {
-            LOG.error("", e);
-        } catch (ParserConfigurationException e) {
-            LOG.error("", e);
-        } catch (SAXException e) {
-            LOG.error("", e);
-        }
-        return null;
-    }
-
     private List<Object> getToolbarActions(Element toolbarNode) {
         List<Object> toolbarActions = new ArrayList<Object>();
         final NodeList nl = toolbarNode.getElementsByTagName("*");
@@ -129,13 +106,18 @@
             String style = itemNode.getNodeName();
             if (style.equals("dropdown")) {
                 o = getToolbarActions(itemNode);
+            } else if (style.equals("poly-edge")) {
+                final String type = itemNode.getAttribute("type");
+                final Class<?> metaType = metaTypeByName.get(type);
+                o = getCreateEdgeAction(metaType);
             } else {
-                String type = itemNode.getAttribute("type");
-                Class<?> metaType = metaTypeByName.get(type);
+                final String type = itemNode.getAttribute("type");
+                final Class<?> metaType = metaTypeByName.get(type);
                 o = new CreateDiagramElementAction(
                         metaType, 
                         style, 
-                        Model.getMetaTypes().getName(metaType));
+                        Model.getMetaTypes().getName(metaType),
+                        this);
             }
             toolbarActions.add(o);
         }
@@ -164,11 +146,21 @@
         }
     }
     
-    
-    private Document getDocument() throws IOException, DOMException, ParserConfigurationException, SAXException {
+    /**
+     * Get the diagram definition XML document
+     * @return
+     * @throws IOException
+     * @throws DOMException
+     * @throws ParserConfigurationException
+     * @throws SAXException
+     */
+    private Document getDocument()
+        throws IOException, DOMException,
+            ParserConfigurationException, SAXException {
         final String filename;
         filename = "org/argouml/activity2/diagram/diagram.xml";
-        InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(filename);
+        InputStream inputStream = 
+            this.getClass().getClassLoader().getResourceAsStream(filename);
         InputSource inputSource = new InputSource(inputStream);
         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
         DocumentBuilder db = dbf.newDocumentBuilder();
@@ -177,9 +169,31 @@
     
     @Override
     protected Object[] getUmlActions() {
-        Object[] actions = super.getUmlActions();
-        getCreateDiagramElementActions();
-        return actions;
+        try {
+            final Document doc = getDocument();
+            final NodeList nl = doc.getDocumentElement().getChildNodes();
+            for (int i = 0; i < nl.getLength(); ++i) {
+                final Node n = nl.item(i);
+                if (n.getNodeName().equals("classes")) {
+                    final int size = n.getChildNodes().getLength();
+                    nameByMetaType = new HashMap<Class<?>, String>(size);
+                    metaTypeByName = new HashMap<String, Class<?>>(size);
+                    populateClassMaps((Element) n, nameByMetaType, metaTypeByName);
+                } else if (n.getNodeName().equals("toolbar")) {
+                    List<Object> actions = getToolbarActions((Element) n);
+                    return actions.toArray();
+                }
+            }
+        } catch (DOMException e) {
+            LOG.error("", e);
+        } catch (IOException e) {
+            LOG.error("", e);
+        } catch (ParserConfigurationException e) {
+            LOG.error("", e);
+        } catch (SAXException e) {
+            LOG.error("", e);
+        }
+        return null;
     }

------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2684315

To unsubscribe from this discussion, e-mail: [[email protected]].
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.