Author: penyaskito
Date: 2008-08-26 10:39:31-0700
New Revision: 15611
Modified:
trunk/src/argouml-app/src/org/argouml/i18n/label.properties
trunk/src/argouml-app/src/org/argouml/kernel/ProjectSettings.java
trunk/src/argouml-app/src/org/argouml/notation/Notation.java
trunk/src/argouml-app/src/org/argouml/notation/ui/SettingsTabNotation.java
trunk/src/argouml-app/src/org/argouml/persistence/ArgoParser.java
trunk/src/argouml-app/src/org/argouml/persistence/ArgoTokenTable.java
trunk/src/argouml-app/src/org/argouml/persistence/argo.tee
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociation.java
Log:
Fixes Issue 535: Allow the user to set if he wants to see the arrows when both ends of an association are navigable.
Modified: trunk/src/argouml-app/src/org/argouml/i18n/label.properties
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/i18n/label.properties?view=diff&rev=15611&p1=trunk/src/argouml-app/src/org/argouml/i18n/label.properties&p2=trunk/src/argouml-app/src/org/argouml/i18n/label.properties&r1=15610&r2=15611
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/i18n/label.properties (original)
+++ trunk/src/argouml-app/src/org/argouml/i18n/label.properties 2008-08-26 10:39:31-0700
@@ -199,6 +199,7 @@
higher than standard<br> are very experimental. Use at your own risk.</html>
label.guard = Guard:
label.headline = Headline:
+label.hide-bidirectional-arrows = Hide arrows when both association ends from an association are navigable
label.high = High
label.home-model = Home Model:
label.implementations = Implementations:
Modified: trunk/src/argouml-app/src/org/argouml/kernel/ProjectSettings.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/kernel/ProjectSettings.java?view=diff&rev=15611&p1=trunk/src/argouml-app/src/org/argouml/kernel/ProjectSettings.java&p2=trunk/src/argouml-app/src/org/argouml/kernel/ProjectSettings.java&r1=15610&r2=15611
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/kernel/ProjectSettings.java (original)
+++ trunk/src/argouml-app/src/org/argouml/kernel/ProjectSettings.java 2008-08-26 10:39:31-0700
@@ -74,6 +74,7 @@
/* Diagram appearance settings with project scope: */
private String fontName;
private int fontSize;
+ private boolean hideBidirectionalArrows;
/* Keep some fonts around depending on the above settings: */
private Font fontPlain;
private Font fontItalic;
@@ -118,10 +119,13 @@
showProperties = Configuration.getBoolean(
Notation.KEY_SHOW_PROPERTIES);
/*
- * The next one defaults to TRUE, to stay compatible with older
+ * The next ones defaults to TRUE, to stay compatible with older
* ArgoUML versions that did not have this setting:
*/
showTypes = Configuration.getBoolean(Notation.KEY_SHOW_TYPES, true);
+ hideBidirectionalArrows = Configuration.getBoolean(
+ Notation.KEY_HIDE_BIDIRECTIONAL_ARROWS, true);
+
showStereotypes = Configuration.getBoolean(
Notation.KEY_SHOW_STEREOTYPES);
/*
@@ -369,6 +373,7 @@
public boolean getUseGuillemotsValue() {
return useGuillemots;
}
+
/**
* @param showem <code>true</code> if guillemots are to be shown.
@@ -818,6 +823,62 @@
/**
* Used by "argo.tee".
*
+ * @return Returns "true" if we show the arrows when
+ * both association ends of an association are navigable.
+ */
+ public String getHideBidirectionalArrows() {
+ return Boolean.toString(hideBidirectionalArrows);
+ }
+
+ /**
+ * @return Returns <code>true</code> if we show the arrows when
+ * both association ends of an association are navigable.
+
+ */
+ public boolean getHideBidirectionalArrowsValue() {
+ return hideBidirectionalArrows;
+ }
+
+ /**
+ * @param hideem <code>true</code> if both arrows are to be shown when
+ * both association ends of an association are navigable.
+ */
+ public void setHideBidirectionalArrows(String hideem) {
+ setHideBidirectionalArrows(Boolean.valueOf(hideem).booleanValue());
+ }
+
+ /**
+ * @param hideem <code>true</code> if both arrows are to be shown when
+ * both association ends of an association are navigable.
+
+ */
+ public void setHideBidirectionalArrows(final boolean hideem) {
+ if (hideBidirectionalArrows == hideem) return;
+
+ Memento memento = new Memento() {
+ private final ConfigurationKey key =
+ Notation.KEY_HIDE_BIDIRECTIONAL_ARROWS;
+
+ public void redo() {
+ hideBidirectionalArrows = hideem;
+ fireNotationEvent(key, !hideem, hideem);
+ }
+
+ public void undo() {
+ hideBidirectionalArrows = !hideem;
+ fireNotationEvent(key, hideem, !hideem);
+ }
+ };
+ if (UndoManager.getInstance().isGenerateMementos()) {
+ UndoManager.getInstance().addMemento(memento);
+ }
+ memento.redo();
+ ProjectManager.getManager().setSaveEnabled(true);
+ }
+
+ /**
+ * Used by "argo.tee".
+ *
* @return Returns the shadow width.
*/
public String getDefaultShadowWidth() {
Modified: trunk/src/argouml-app/src/org/argouml/notation/Notation.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/notation/Notation.java?view=diff&rev=15611&p1=trunk/src/argouml-app/src/org/argouml/notation/Notation.java&p2=trunk/src/argouml-app/src/org/argouml/notation/Notation.java&r1=15610&r2=15611
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/notation/Notation.java (original)
+++ trunk/src/argouml-app/src/org/argouml/notation/Notation.java 2008-08-26 10:39:31-0700
@@ -150,6 +150,13 @@
Configuration.makeKey("notation", "default", "shadow-width");
/**
+ * Indicates if the user wants to see the arrows when both
+ * association ends in an association are navigable.
+ */
+ public static final ConfigurationKey KEY_HIDE_BIDIRECTIONAL_ARROWS =
+ Configuration.makeKey("notation", "hide", "bidirectional-arrows");
+
+ /**
* The instance.
*/
private static final Notation SINGLETON = new Notation();
@@ -169,6 +176,7 @@
Configuration.addListener(KEY_SHOW_ASSOCIATION_NAMES, this);
Configuration.addListener(KEY_SHOW_VISIBILITY, this);
Configuration.addListener(KEY_SHOW_INITIAL_VALUE, this);
+ Configuration.addListener(KEY_HIDE_BIDIRECTIONAL_ARROWS, this);
}
/**
Modified: trunk/src/argouml-app/src/org/argouml/notation/ui/SettingsTabNotation.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/notation/ui/SettingsTabNotation.java?view=diff&rev=15611&p1=trunk/src/argouml-app/src/org/argouml/notation/ui/SettingsTabNotation.java&p2=trunk/src/argouml-app/src/org/argouml/notation/ui/SettingsTabNotation.java&r1=15610&r2=15611
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/notation/ui/SettingsTabNotation.java (original)
+++ trunk/src/argouml-app/src/org/argouml/notation/ui/SettingsTabNotation.java 2008-08-26 10:39:31-0700
@@ -79,6 +79,7 @@
private JCheckBox showTypes;
private JCheckBox showStereotypes;
private JCheckBox showSingularMultiplicities;
+ private JCheckBox hideBidirectionalArrows;
private ShadowComboBox defaultShadowWidth;
private int scope;
@@ -176,6 +177,10 @@
showSingularMultiplicities =
createCheckBox("label.show-singular-multiplicities");
settings.add(showSingularMultiplicities, constraints);
+
+ hideBidirectionalArrows =
+ createCheckBox("label.hide-bidirectional-arrows");
+ settings.add(hideBidirectionalArrows, constraints);
constraints.insets = new Insets(5, 30, 0, 4);
JPanel defaultShadowWidthPanel = new JPanel(new FlowLayout(
@@ -229,6 +234,14 @@
*/
showSingularMultiplicities.setSelected(Configuration.getBoolean(
Notation.KEY_SHOW_SINGULAR_MULTIPLICITIES, true));
+ /*
+ * The next one defaults to TRUE, despite that this is
+ * NOT compatible with older ArgoUML versions
+ * (before 0.28?) that did
+ * not have this setting - see issue 535
+ */
+ hideBidirectionalArrows.setSelected(Configuration.getBoolean(
+ Notation.KEY_HIDE_BIDIRECTIONAL_ARROWS, true));
defaultShadowWidth.setSelectedIndex(Configuration.getInteger(
Notation.KEY_DEFAULT_SHADOW_WIDTH, 1));
}
@@ -249,6 +262,8 @@
showStereotypes.setSelected(ps.getShowStereotypesValue());
showSingularMultiplicities.setSelected(
ps.getShowSingularMultiplicitiesValue());
+ hideBidirectionalArrows.setSelected(
+ ps.getHideBidirectionalArrowsValue());
defaultShadowWidth.setSelectedIndex(
ps.getDefaultShadowWidthValue());
}
@@ -291,6 +306,8 @@
showStereotypes.isSelected());
Configuration.setBoolean(Notation.KEY_SHOW_SINGULAR_MULTIPLICITIES,
showSingularMultiplicities.isSelected());
+ Configuration.setBoolean(Notation.KEY_HIDE_BIDIRECTIONAL_ARROWS,
+ hideBidirectionalArrows.isSelected());
Configuration.setInteger(Notation.KEY_DEFAULT_SHADOW_WIDTH,
defaultShadowWidth.getSelectedIndex());
}
@@ -311,6 +328,7 @@
ps.setShowSingularMultiplicities(
showSingularMultiplicities.isSelected());
ps.setDefaultShadowWidth(defaultShadowWidth.getSelectedIndex());
+ ps.setHideBidirectionalArrows(hideBidirectionalArrows.isSelected());
}
}
@@ -347,6 +365,8 @@
Notation.KEY_SHOW_STEREOTYPES));
showSingularMultiplicities.setSelected(Configuration.getBoolean(
Notation.KEY_SHOW_SINGULAR_MULTIPLICITIES));
+ hideBidirectionalArrows.setSelected(Configuration.getBoolean(
+ Notation.KEY_HIDE_BIDIRECTIONAL_ARROWS, true));
defaultShadowWidth.setSelectedIndex(Configuration.getInteger(
Notation.KEY_DEFAULT_SHADOW_WIDTH, 1));
}
Modified: trunk/src/argouml-app/src/org/argouml/persistence/ArgoParser.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/persistence/ArgoParser.java?view=diff&rev=15611&p1=trunk/src/argouml-app/src/org/argouml/persistence/ArgoParser.java&p2=trunk/src/argouml-app/src/org/argouml/persistence/ArgoParser.java&r1=15610&r2=15611
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/persistence/ArgoParser.java (original)
+++ trunk/src/argouml-app/src/org/argouml/persistence/ArgoParser.java 2008-08-26 10:39:31-0700
@@ -237,6 +237,9 @@
case ArgoTokenTable.TOKEN_SHOWASSOCIATIONNAMES:
handleShowAssociationNames(e);
break;
+ case ArgoTokenTable.TOKEN_HIDEBIDIRECTIONALARROWS:
+ handleHideBidirectionalArrows(e);
+ break;
case ArgoTokenTable.TOKEN_ACTIVE_DIAGRAM:
handleActiveDiagram(e);
break;
@@ -469,6 +472,15 @@
ps.setShowAssociationNames(showAssociationNames);
}
+ /**
+ * @param e the element
+ */
+ protected void handleHideBidirectionalArrows(XMLElement e) {
+ String hideBidirectionalArrows = e.getText().trim();
+ ps.setHideBidirectionalArrows(hideBidirectionalArrows);
+ }
+
+
protected void handleActiveDiagram(XMLElement e) {
/* At this stage during loading, the diagrams are
* not created yet - so we have to store this name for later use. */
Modified: trunk/src/argouml-app/src/org/argouml/persistence/ArgoTokenTable.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/persistence/ArgoTokenTable.java?view=diff&rev=15611&p1=trunk/src/argouml-app/src/org/argouml/persistence/ArgoTokenTable.java&p2=trunk/src/argouml-app/src/org/argouml/persistence/ArgoTokenTable.java&r1=15610&r2=15611
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/persistence/ArgoTokenTable.java (original)
+++ trunk/src/argouml-app/src/org/argouml/persistence/ArgoTokenTable.java 2008-08-26 10:39:31-0700
@@ -67,6 +67,8 @@
private static final String STRING_SHOWSTEREOTYPES = "showstereotypes";
private static final String STRING_SHOWSINGULARMULTIPLICITIES
= "showsingularmultiplicities";
+ private static final String STRING_HIDEBIDIRECTIONALARROWS
+ = "hidebidirectionalarrows";
private static final String STRING_DEFAULTSHADOWWIDTH
= "defaultshadowwidth";
private static final String STRING_FONTNAME = "fontname";
@@ -129,6 +131,8 @@
/** A token for Notation Settings **/
public static final int TOKEN_SHOWSINGULARMULTIPLICITIES = 26;
+ public static final int TOKEN_HIDEBIDIRECTIONALARROWS = 27;
+
/** The token for undefined. */
public static final int TOKEN_UNDEFINED = 99;
@@ -154,6 +158,7 @@
addToken(STRING_USEGUILLEMOTS, Integer.valueOf(TOKEN_USEGUILLEMOTS));
addToken(STRING_SHOWVISIBILITY, Integer.valueOf(TOKEN_SHOWVISIBILITY));
addToken(STRING_SHOWMULTIPLICITY, Integer.valueOf(TOKEN_SHOWMULTIPLICITY));
+ addToken(STRING_HIDEBIDIRECTIONALARROWS, Integer.valueOf(TOKEN_HIDEBIDIRECTIONALARROWS));
addToken(STRING_SHOWINITIALVALUE, Integer.valueOf(TOKEN_SHOWINITIALVALUE));
addToken(STRING_SHOWPROPERTIES, Integer.valueOf(TOKEN_SHOWPROPERTIES));
addToken(STRING_SHOWTYPES, Integer.valueOf(TOKEN_SHOWTYPES));
Modified: trunk/src/argouml-app/src/org/argouml/persistence/argo.tee
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/persistence/argo.tee?view=diff&rev=15611&p1=trunk/src/argouml-app/src/org/argouml/persistence/argo.tee&p2=trunk/src/argouml-app/src/org/argouml/persistence/argo.tee&r1=15610&r2=15611
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/persistence/argo.tee (original)
+++ trunk/src/argouml-app/src/org/argouml/persistence/argo.tee 2008-08-26 10:39:31-0700
@@ -65,6 +65,7 @@
<showstereotypes><ocl>self.projectSettings.showStereotypes</ocl></showstereotypes>
<showsingularmultiplicities><ocl>self.projectSettings.showSingularMultiplicities</ocl></showsingularmultiplicities>
<defaultshadowwidth><ocl>self.projectSettings.defaultShadowWidth</ocl></defaultshadowwidth>
+ <hidebidirectionalarrows><ocl>self.projectSettings.hideBidirectionalArrows</ocl></hidebidirectionalarrows>
<fontname><ocl>self.projectSettings.fontName</ocl></fontname>
<fontsize><ocl>self.projectSettings.fontSize</ocl></fontsize>
<defaultstereotypeview><ocl>self.projectSettings.defaultStereotypeView</ocl></defaultstereotypeview>
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociation.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociation.java?view=diff&rev=15611&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociation.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociation.java&r1=15610&r2=15611
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociation.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociation.java 2008-08-26 10:39:31-0700
@@ -44,6 +44,7 @@
import org.argouml.i18n.Translator;
import org.argouml.kernel.Project;
import org.argouml.kernel.ProjectManager;
+import org.argouml.kernel.ProjectSettings;
import org.argouml.model.AddAssociationEvent;
import org.argouml.model.AttributeChangeEvent;
import org.argouml.model.Model;
@@ -69,17 +70,6 @@
*/
public class FigAssociation extends FigEdgeModelElement {
- /**
- * We suppress the arrow heads if both ends of an association
- * are navigable. This means that we support presentation option 3
- * for Association Ends from the UML standard. <p>
- *
- * If this member is set to false, then we have presentation option 1.
- * <p>
- * TODO: See issue 535: make this a user setting.
- */
- private static final boolean SUPPRESS_BIDIRECTIONAL_ARROWS = true;
-
private static final Logger LOG = Logger.getLogger(FigAssociation.class);
/**
@@ -275,7 +265,10 @@
int sourceArrowType = srcGroup.getArrowType();
int destArrowType = destGroup.getArrowType();
- if (SUPPRESS_BIDIRECTIONAL_ARROWS
+ Project p = ProjectManager.getManager().getCurrentProject();
+ ProjectSettings ps = p.getProjectSettings();
+
+ if (ps.getHideBidirectionalArrowsValue()
&& sourceArrowType > 2
&& destArrowType > 2) {
sourceArrowType -= 3;
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.