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]].

Reply via email to