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.