Author: mvw
Date: 2008-06-15 03:07:50-0700
New Revision: 14952
Modified:
trunk/src/argouml-app/src/org/argouml/notation/providers/uml/NotationUtilityUml.java
trunk/src/argouml-app/src/org/argouml/ui/DisplayTextTree.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigActionState.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigObjectFlowState.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/FigClassifierRole.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigState.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/CompartmentFigText.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEditableCompartment.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigSingleLineText.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigStereotype.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/FigUseCase.java
Log:
Make the Notation subsystem more independent of the kernel.
Modified: trunk/src/argouml-app/src/org/argouml/notation/providers/uml/NotationUtilityUml.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/notation/providers/uml/NotationUtilityUml.java?view=diff&rev=14952&p1=trunk/src/argouml-app/src/org/argouml/notation/providers/uml/NotationUtilityUml.java&p2=trunk/src/argouml-app/src/org/argouml/notation/providers/uml/NotationUtilityUml.java&r1=14951&r2=14952
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/notation/providers/uml/NotationUtilityUml.java (original)
+++ trunk/src/argouml-app/src/org/argouml/notation/providers/uml/NotationUtilityUml.java 2008-06-15 03:07:50-0700
@@ -898,18 +898,65 @@
}
/**
- * TODO: Rewrite this, so that it does not use the Project.
+ * Generate the text for one or more stereotype(s).
*
* @param st a stereotype UML object
* or a string
* or a collection of stereotypes
* or a modelelement of which the stereotypes are retrieved
* @param args arguments that may determine the notation
- * @return a string representing the given stereotype(s).
- * This string is guaranteed not null.
+ * The values of "leftGuillemot" and "rightGuillemot" influence the outcome.
+ * @return a string representing the given stereotype(s)
*/
public static String generateStereotype(Object st, Map args) {
- return generateStereotype(st);
+ if (st == null) {
+ return "";
+ }
+
+ if (st instanceof String) {
+ return formatSingleStereotype((String) st, args);
+ }
+ if (Model.getFacade().isAStereotype(st)) {
+ return formatSingleStereotype(Model.getFacade().getName(st), args);
+ }
+
+ if (Model.getFacade().isAModelElement(st)) {
+ st = Model.getFacade().getStereotypes(st);
+ }
+ if (st instanceof Collection) {
+ Object o;
+ StringBuffer sb = new StringBuffer(10);
+ boolean first = true;
+ Iterator iter = ((Collection) st).iterator();
+ while (iter.hasNext()) {
+ if (!first) {
+ sb.append(',');
+ }
+ o = iter.next();
+ if (o != null) {
+ sb.append(Model.getFacade().getName(o));
+ first = false;
+ }
+ }
+ if (!first) {
+ return formatSingleStereotype(sb.toString(), args);
+ }
+ }
+ return "";
+ }
+
+ public static String formatSingleStereotype(String name, Map args) {
+ if (name == null || name.length() == 0) {
+ return "";
+ }
+ if (args != null) {
+ if (args.get("leftGuillemot") != null
+ && args.get("rightGuillemot") != null) {
+ return args.get("leftGuillemot") + name
+ + args.get("rightGuillemot");
+ }
+ }
+ return "<<" + name + ">>";
}
/**
Modified: trunk/src/argouml-app/src/org/argouml/ui/DisplayTextTree.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/ui/DisplayTextTree.java?view=diff&rev=14952&p1=trunk/src/argouml-app/src/org/argouml/ui/DisplayTextTree.java&p2=trunk/src/argouml-app/src/org/argouml/ui/DisplayTextTree.java&r1=14951&r2=14952
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/ui/DisplayTextTree.java (original)
+++ trunk/src/argouml-app/src/org/argouml/ui/DisplayTextTree.java 2008-06-15 03:07:50-0700
@@ -28,6 +28,7 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
@@ -153,7 +154,18 @@
.getNotationProvider(
NotationProviderFactory2.TYPE_EXTENSION_POINT,
value);
- name = notationProvider.toString(value, null);
+ /* TODO: move this Map outside this method
+ * for performance. */
+ HashMap<String, Object> npArguments =
+ new HashMap<String, Object>();
+ Project p = ProjectManager.getManager().getCurrentProject();
+ if (p != null) {
+ npArguments.put("rightGuillemot",
+ p.getProjectSettings().getRightGuillemot());
+ npArguments.put("leftGuillemot",
+ p.getProjectSettings().getLeftGuillemot());
+ }
+ name = notationProvider.toString(value, npArguments);
} else if (Model.getFacade().isAComment(value)) {
name = (String) Model.getFacade().getBody(value);
} else if (Model.getFacade().isATaggedValue(value)) {
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigActionState.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigActionState.java?view=diff&rev=14952&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigActionState.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigActionState.java&r1=14951&r2=14952
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigActionState.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigActionState.java 2008-06-15 03:07:50-0700
@@ -1,5 +1,5 @@
// $Id$
-// Copyright (c) 1996-2007 The Regents of the University of California. All
+// Copyright (c) 1996-2008 The Regents of the University of California. All
// Rights Reserved. Permission to use, copy, modify, and distribute this
// software and its documentation without fee, and without a written
// agreement is hereby granted, provided that the above copyright notice
@@ -288,7 +288,8 @@
@Override
protected void updateNameText() {
if (notationProvider != null) {
- getNameFig().setText(notationProvider.toString(getOwner(), null));
+ getNameFig().setText(notationProvider.toString(getOwner(),
+ getNotationArguments()));
}
}
@@ -306,7 +307,8 @@
@Override
protected void textEdited(FigText ft) throws PropertyVetoException {
notationProvider.parse(getOwner(), ft.getText());
- ft.setText(notationProvider.toString(getOwner(), null));
+ ft.setText(notationProvider.toString(getOwner(),
+ getNotationArguments()));
}
/*
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigObjectFlowState.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigObjectFlowState.java?view=diff&rev=14952&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigObjectFlowState.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigObjectFlowState.java&r1=14951&r2=14952
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigObjectFlowState.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/activity/ui/FigObjectFlowState.java 2008-06-15 03:07:50-0700
@@ -1,5 +1,5 @@
// $Id$
-// Copyright (c) 1996-2007 The Regents of the University of California. All
+// Copyright (c) 1996-2008 The Regents of the University of California. All
// Rights Reserved. Permission to use, copy, modify, and distribute this
// software and its documentation without fee, and without a written
// agreement is hereby granted, provided that the above copyright notice
@@ -288,7 +288,8 @@
if (isReadyToEdit()) {
if (notationProviderType != null) {
getNameFig().setText(
- notationProviderType.toString(getOwner(), null));
+ notationProviderType.toString(getOwner(),
+ getNotationArguments()));
}
}
}
@@ -298,7 +299,8 @@
*/
private void updateStateText() {
if (isReadyToEdit()) {
- state.setText(notationProviderState.toString(getOwner(), null));
+ state.setText(notationProviderState.toString(getOwner(),
+ getNotationArguments()));
}
}
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/FigClassifierRole.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/FigClassifierRole.java?view=diff&rev=14952&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/FigClassifierRole.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/FigClassifierRole.java&r1=14951&r2=14952
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/FigClassifierRole.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/FigClassifierRole.java 2008-06-15 03:07:50-0700
@@ -1,5 +1,5 @@
// $Id$
-// Copyright (c) 1996-2007 The Regents of the University of California. All
+// Copyright (c) 1996-2008 The Regents of the University of California. All
// Rights Reserved. Permission to use, copy, modify, and distribute this
// software and its documentation without fee, and without a written
// agreement is hereby granted, provided that the above copyright notice
@@ -396,7 +396,8 @@
protected void textEdited(FigText ft) throws PropertyVetoException {
if (ft == getNameFig()) {
notationProvider.parse(getOwner(), ft.getText());
- ft.setText(notationProvider.toString(getOwner(), null));
+ ft.setText(notationProvider.toString(getOwner(),
+ getNotationArguments()));
}
}
@@ -418,7 +419,8 @@
@Override
protected void updateNameText() {
if (notationProvider != null) {
- getNameFig().setText(notationProvider.toString(getOwner(), null));
+ getNameFig().setText(notationProvider.toString(getOwner(),
+ getNotationArguments()));
}
}
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigState.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigState.java?view=diff&rev=14952&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigState.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigState.java&r1=14951&r2=14952
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigState.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/FigState.java 2008-06-15 03:07:50-0700
@@ -1,5 +1,5 @@
// $Id$
-// Copyright (c) 1996-2007 The Regents of the University of California. All
+// Copyright (c) 1996-2008 The Regents of the University of California. All
// Rights Reserved. Permission to use, copy, modify, and distribute this
// software and its documentation without fee, and without a written
// agreement is hereby granted, provided that the above copyright notice
@@ -160,7 +160,8 @@
return;
}
if (notationProviderBody != null) {
- internal.setText(notationProviderBody.toString(getOwner(), null));
+ internal.setText(notationProviderBody.toString(getOwner(),
+ getNotationArguments()));
}
super.renderingChanged();
calcBounds();
@@ -224,7 +225,8 @@
return;
}
notationProviderBody.parse(getOwner(), ft.getText());
- ft.setText(notationProviderBody.toString(getOwner(), null));
+ ft.setText(notationProviderBody.toString(getOwner(),
+ getNotationArguments()));
}
}
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/CompartmentFigText.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/CompartmentFigText.java?view=diff&rev=14952&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/CompartmentFigText.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/CompartmentFigText.java&r1=14951&r2=14952
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/CompartmentFigText.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/CompartmentFigText.java 2008-06-15 03:07:50-0700
@@ -1,5 +1,5 @@
// $Id$
-// Copyright (c) 1996-2007 The Regents of the University of California. All
+// Copyright (c) 1996-2008 The Regents of the University of California. All
// Rights Reserved. Permission to use, copy, modify, and distribute this
// software and its documentation without fee, and without a written
// agreement is hereby granted, provided that the above copyright notice
@@ -292,6 +292,6 @@
public void textEdited() {
setHighlighted(true);
getNotationProvider().parse(getOwner(), getText());
- setText(getNotationProvider().toString(getOwner(), null));
+ setText(getNotationProvider().toString(getOwner(), getNpArguments()));
}
}
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEditableCompartment.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEditableCompartment.java?view=diff&rev=14952&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEditableCompartment.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEditableCompartment.java&r1=14951&r2=14952
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEditableCompartment.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEditableCompartment.java 2008-06-15 03:07:50-0700
@@ -28,12 +28,10 @@
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import org.apache.log4j.Logger;
-import org.argouml.kernel.Project;
import org.argouml.model.InvalidElementException;
import org.argouml.notation.NotationProvider;
import org.argouml.notation.NotationProviderFactory2;
@@ -47,7 +45,7 @@
*
* This class is adds the possibility to
* make the whole compartment invisible, and
- * a NotationProvideer is used to handle (generate and parse)
+ * a NotationProvider is used to handle (generate and parse)
* the texts shown in the compartment, i.e.
* the compartment texts are editable by the user.
*/
@@ -202,21 +200,11 @@
np.initialiseListener(comp, umlObject);
}
addFig(comp); // add it again (but now in the right sequence)
-
- HashMap<String, Object> npArguments =
- new HashMap<String, Object>();
- Project p = getProject();
- if (p != null) {
- npArguments.put("rightGuillemot",
- p.getProjectSettings().getRightGuillemot());
- npArguments.put("leftGuillemot",
- p.getProjectSettings().getLeftGuillemot());
- }
// Now put the text in
// We must handle the case where the text is null
String ftText = comp.getNotationProvider()
- .toString(umlObject, npArguments);
+ .toString(umlObject, comp.getNpArguments());
if (ftText == null) {
ftText = "";
}
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java?view=diff&rev=14952&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java&r1=14951&r2=14952
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java 2008-06-15 03:07:50-0700
@@ -1399,6 +1399,13 @@
NotationProviderFactory2.getInstance().getNotationProvider(
getNotationProviderType(), own, this);
npArguments.put("pathVisible", Boolean.valueOf(isPathVisible()));
+ Project p = getProject();
+ if (p != null) {
+ npArguments.put("rightGuillemot",
+ p.getProjectSettings().getRightGuillemot());
+ npArguments.put("leftGuillemot",
+ p.getProjectSettings().getLeftGuillemot());
+ }
}
}
@@ -2074,6 +2081,10 @@
listeners.clear();
}
+ protected HashMap<String, Object> getNotationArguments() {
+ return npArguments;
+ }
+
protected void putNotationArgument(String key, Object value) {
if (notationProviderName != null) {
npArguments.put(key, value);
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigSingleLineText.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigSingleLineText.java?view=diff&rev=14952&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigSingleLineText.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigSingleLineText.java&r1=14951&r2=14952
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigSingleLineText.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigSingleLineText.java 2008-06-15 03:07:50-0700
@@ -32,6 +32,10 @@
import java.util.Arrays;
import java.util.HashMap;
+import org.argouml.application.events.ArgoEventPump;
+import org.argouml.application.events.ArgoEventTypes;
+import org.argouml.application.events.ArgoNotationEvent;
+import org.argouml.application.events.ArgoNotationEventListener;
import org.argouml.kernel.Project;
import org.argouml.model.AttributeChangeEvent;
import org.argouml.model.Model;
@@ -52,7 +56,9 @@
*
* @author Bob Tarling
*/
-public class FigSingleLineText extends ArgoFigText {
+public class FigSingleLineText extends ArgoFigText
+ implements ArgoNotationEventListener
+ {
/**
* The UID.
@@ -82,6 +88,9 @@
setTabAction(FigText.END_EDITING);
setReturnAction(FigText.END_EDITING);
setLineWidth(0);
+
+ initNotationArguments();
+ ArgoEventPump.addListener(ArgoEventTypes.ANY_NOTATION_EVENT, this);
}
/*
@@ -211,6 +220,17 @@
notationProvider.cleanListener(this, getOwner());
}
this.notationProvider = np;
+ initNotationArguments();
+ }
+
+ /**
+ * @return Returns the Notation Provider Arguments.
+ */
+ public HashMap<String, Object> getNpArguments() {
+ return npArguments;
+ }
+
+ private void initNotationArguments() {
Project p = getProject();
if (p != null) {
npArguments.put("rightGuillemot",
@@ -219,4 +239,26 @@
p.getProjectSettings().getLeftGuillemot());
}
}
+
+ public void notationAdded(ArgoNotationEvent e) {
+ // Do nothing
+ }
+
+ public void notationChanged(ArgoNotationEvent e) {
+ initNotationArguments();
+// if (getOwner() == null) return;
+// setText();
+ }
+
+ public void notationProviderAdded(ArgoNotationEvent e) {
+ // Do nothing
+ }
+
+ public void notationProviderRemoved(ArgoNotationEvent e) {
+ // Do nothing
+ }
+
+ public void notationRemoved(ArgoNotationEvent e) {
+ // Do nothing
+ }
}
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigStereotype.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigStereotype.java?view=diff&rev=14952&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigStereotype.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigStereotype.java&r1=14951&r2=14952
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigStereotype.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigStereotype.java 2008-06-15 03:07:50-0700
@@ -1,5 +1,5 @@
// $Id$
-// Copyright (c) 1996-2007 The Regents of the University of California. All
+// Copyright (c) 1996-2008 The Regents of the University of California. All
// Rights Reserved. Permission to use, copy, modify, and distribute this
// software and its documentation without fee, and without a written
// agreement is hereby granted, provided that the above copyright notice
@@ -27,11 +27,9 @@
import java.awt.Color;
import java.beans.PropertyChangeEvent;
-import org.argouml.kernel.Project;
-import org.argouml.kernel.ProjectManager;
-import org.argouml.kernel.ProjectSettings;
import org.argouml.model.AttributeChangeEvent;
import org.argouml.model.Model;
+import org.argouml.notation.providers.uml.NotationUtilityUml;
import org.tigris.gef.presentation.Fig;
import org.tigris.gef.presentation.FigText;
@@ -89,10 +87,8 @@
* {@inheritDoc}
*/
public void setText(String text) {
- Project project =
- ProjectManager.getManager().getCurrentProject();
- ProjectSettings ps = project.getProjectSettings();
- super.setText(ps.getLeftGuillemot() + text + ps.getRightGuillemot());
+ super.setText(NotationUtilityUml.formatSingleStereotype(text,
+ getNpArguments()));
}
}
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/FigUseCase.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/FigUseCase.java?view=diff&rev=14952&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/FigUseCase.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/FigUseCase.java&r1=14951&r2=14952
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/FigUseCase.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/FigUseCase.java 2008-06-15 03:07:50-0700
@@ -1180,7 +1180,8 @@
// Now put the text in
// We must handle the case where the text is null
- String epText = epFig.getNotationProvider().toString(ep, null);
+ String epText = epFig.getNotationProvider().toString(ep,
+ getNotationArguments());
if (epText == null) {
epText = "";
}
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.