Author: bobtarling
Date: 2011-04-11 04:15:17-0700
New Revision: 19208
Added:
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/SelectionAttribute.java
Modified:
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigAttribute.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigStereotypeDeclaration.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/CompartmentFigText.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartmentBox.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/TabDiagram.java
Log:
Allow a compartment text fig to be selected
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigAttribute.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigAttribute.java?view=diff&pathrev=19208&r1=19207&r2=19208
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigAttribute.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigAttribute.java 2011-04-11 04:15:17-0700
@@ -38,10 +38,12 @@
package org.argouml.uml.diagram.static_structure.ui;
+import java.awt.Graphics;
import java.awt.Rectangle;
import org.argouml.notation.NotationProviderFactory2;
import org.argouml.uml.diagram.DiagramSettings;
+import org.tigris.gef.base.Selection;
/**
* Fig with specific knowledge of Attribute display. <p>
@@ -71,4 +73,12 @@
protected int getNotationProviderType() {
return NotationProviderFactory2.TYPE_ATTRIBUTE;
}
+
+ public Selection makeSelection() {
+ return new SelectionAttribute(this);
+ }
+
+ public boolean isResizable() {
+ return false;
+ }
}
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigStereotypeDeclaration.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigStereotypeDeclaration.java?view=diff&pathrev=19208&r1=19207&r2=19208
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigStereotypeDeclaration.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigStereotypeDeclaration.java 2011-04-11 04:15:17-0700
@@ -167,16 +167,6 @@
}
@Override
- protected CompartmentFigText unhighlight() {
- CompartmentFigText fc = super.unhighlight();
- if (fc == null) {
- // TODO: Try unhighlighting our child compartments
-// fc = unhighlight(getAttributesFig());
- }
- return fc;
- }
-
- @Override
protected void updateListeners(Object oldOwner, Object newOwner) {
Set<Object[]> listeners = new HashSet<Object[]>();
Added: trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/SelectionAttribute.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/SelectionAttribute.java?view=markup&pathrev=19208
==============================================================================
--- (empty file)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/SelectionAttribute.java 2011-04-11 04:15:17-0700
@@ -0,0 +1,86 @@
+/* $Id: SelectionClass.java 19205 2011-04-10 21:31:56Z bobtarling $
+ *****************************************************************************
+ * Copyright (c) 2009-2011 Contributors - see below
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Michiel van der Wulp
+ * Katharina Fahnenbruck
+ *****************************************************************************
+ *
+ * Some portions of this file was previously release using the BSD License:
+ */
+
+// 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
+// and this paragraph appear in all copies. This software program and
+// documentation are copyrighted by The Regents of the University of
+// California. The software program and documentation are supplied "AS
+// IS", without any accompanying services from The Regents. The Regents
+// does not warrant that the operation of the program will be
+// uninterrupted or error-free. The end-user understands that the program
+// was developed for research purposes and is advised not to rely
+// exclusively on the program for any reason. IN NO EVENT SHALL THE
+// UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+// SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+// ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+// THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+// PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+// CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+// UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+package org.argouml.uml.diagram.static_structure.ui;
+
+import javax.swing.Icon;
+
+import org.argouml.model.Model;
+import org.tigris.gef.presentation.Fig;
+import org.argouml.uml.diagram.ui.SelectionNodeClarifiers2;
+
+/**
+ * @author [email protected]
+ */
+public class SelectionAttribute extends SelectionNodeClarifiers2 {
+
+ /**
+ * Construct a new SelectionClass for the given Fig.
+ *
+ * @param f The given Fig.
+ */
+ public SelectionAttribute(Fig f) {
+ super(f);
+ }
+
+ @Override
+ protected Icon[] getIcons() {
+ return null;
+ }
+
+ @Override
+ protected String getInstructions(int index) {
+ return "";
+ }
+
+ @Override
+ protected Object getNewNodeType(int i) {
+ return Model.getMetaTypes().getAttribute();
+ }
+
+ @Override
+ protected Object getNewEdgeType(int i) {
+ return null;
+ }
+
+ @Override
+ protected boolean isDraggableHandle(int index) {
+ return false;
+ }
+}
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&pathrev=19208&r1=19207&r2=19208
==============================================================================
--- 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 2011-04-11 04:15:17-0700
@@ -41,13 +41,8 @@
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;
-import java.util.Arrays;
-
-import org.argouml.ui.targetmanager.TargetEvent;
-import org.argouml.ui.targetmanager.TargetListener;
import org.argouml.ui.targetmanager.TargetManager;
import org.argouml.uml.diagram.DiagramSettings;
-import org.tigris.gef.base.Globals;
import org.tigris.gef.presentation.Fig;
import org.tigris.gef.presentation.FigGroup;
import org.tigris.gef.presentation.FigText;
@@ -56,15 +51,11 @@
* A single line FigText class extension for editable
* FigClass/FigInterface/FigUseCase
* compartments that use notation.
- * When selected, this compartment is highlighted.<p>
- *
- * This implementation now supports the extension point compartment in
- * a use case.
*
* @author thn
*/
public abstract class CompartmentFigText extends FigSingleLineTextWithNotation
- implements TargetListener {
+ implements Clarifiable {
private static final int MARGIN = 3;
@@ -77,11 +68,6 @@
private Fig refFig;
/**
- * Set if the user has selected this component Fig inside the FigNode.
- */
- private boolean highlighted;
-
- /**
* Construct a CompartmentFigText.
*
* @param element owning uml element
@@ -91,7 +77,6 @@
public CompartmentFigText(Object element, Rectangle bounds,
DiagramSettings settings) {
super(element, bounds, settings, true);
- TargetManager.getInstance().addTargetListener(this);
setJustification(FigText.JUSTIFY_LEFT);
setRightMargin(MARGIN);
@@ -133,7 +118,6 @@
public CompartmentFigText(Object owner, Rectangle bounds,
DiagramSettings settings, String[] properties) {
super(owner, bounds, settings, true, properties);
- TargetManager.getInstance().addTargetListener(this);
}
/*
@@ -147,7 +131,6 @@
((FigGroup) fg).removeFig(this);
setGroup(null);
}
- TargetManager.getInstance().removeTargetListener(this);
}
/**
@@ -175,19 +158,6 @@
}
/**
- * This is actually used to mark this Fig as selected, however setSelected
- * is set final in GEF.
- * TODO: Can setSelected be used without side-effect if GEF is adjusted?
- * Otherwise consider renaming as setSelectedChild and try to make
- * protected.
- * @param flag <code>true</code> if the entry is to be highlighted,
- * <code>false</code> otherwise.
- */
- public void setHighlighted(boolean flag) {
- highlighted = flag;
- }
-
- /**
* Extends the normal paint function in order to display a similar
* selection-box to that given for a non-resizable FigNode.
* @param g the graphics object
@@ -196,55 +166,8 @@
@Override
public void paint(Graphics g) {
super.paint(g);
- if (highlighted) {
- final int x = getX();
- final int y = getY();
- final int w = getWidth();
- final int h = getHeight();
- g.setColor(Globals.getPrefs().handleColorFor(this));
-
- g.drawRect(x - 1, y - 1, w + 2, h + 2);
- g.drawRect(x, y, w, h);
- }
- }
-
- /**
- * Return whether this item is highlighted.<p>
- *
- * @return <code>true</code> if the entry is highlighted,
- * <code>false</code> otherwise.
- */
- public boolean isHighlighted() {
- return highlighted;
- }
-
- /**
- * Called when text editing has completed on this Fig.
- */
- protected void textEdited() {
- setHighlighted(true);
- super.textEdited();
- }
-
- public void targetAdded(TargetEvent e) {
- if (Arrays.asList(e.getNewTargets()).contains(getOwner())) {
- setHighlighted(true);
- this.damage();
- }
- }
-
- public void targetRemoved(TargetEvent e) {
- if (e.getRemovedTargetCollection().contains(getOwner())) {
- setHighlighted(false);
- this.damage();
- }
}
- public void targetSet(TargetEvent e) {
- /* This is needed for when the selection changes from
- * one compartment fig to an other object.
- * Without this, the selection indicators would stay on the screen.
- * See issue 5681. */
- setHighlighted((Arrays.asList(e.getNewTargets()).contains(getOwner())));
+ public void paintClarifiers(Graphics g) {
}
}
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartmentBox.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartmentBox.java?view=diff&pathrev=19208&r1=19207&r2=19208
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartmentBox.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartmentBox.java 2011-04-11 04:15:17-0700
@@ -99,11 +99,6 @@
X0, Y0 + 20 /* 20 = height of name fig ?*/,
WIDTH, ROWHEIGHT + 2 /* 2*LINE_WIDTH? or extra padding? */ );
- /**
- * Text highlighted by mouse actions on the diagram.<p>
- */
- private static CompartmentFigText highlightedFigText = null;
-
private List<FigCompartment> compartments =
new ArrayList<FigCompartment>();
@@ -494,7 +489,6 @@
((SelectionButtons) sel).hideButtons();
}
}
- unhighlight();
Rectangle r =
new Rectangle(
@@ -508,63 +502,11 @@
FigCompartment figCompartment = (FigCompartment) f;
f = figCompartment.hitFig(r);
if (f instanceof CompartmentFigText) {
- if (highlightedFigText != null && highlightedFigText != f) {
- highlightedFigText.setHighlighted(false);
- if (highlightedFigText.getGroup() != null) {
- /* Preventing NullPointerException. */
- highlightedFigText.getGroup().damage();
- }
- }
- ((CompartmentFigText) f).setHighlighted(true);
- highlightedFigText = (CompartmentFigText) f;
TargetManager.getInstance().setTarget(f);
}
}
}
- /**
- * Remove the highlight from the currently highlit FigText.
- *
- * @return the FigText that had highlight removed
- */
- protected CompartmentFigText unhighlight() {
- Fig fc;
- // Search all feature compartments for a text fig to unhighlight
- for (int i = 1; i < getFigs().size(); i++) {
- fc = getFigAt(i);
- if (fc instanceof FigCompartment) {
- CompartmentFigText ft =
- unhighlight((FigCompartment) fc);
- if (ft != null) {
- return ft;
- }
- }
- }
- return null;
- }
-
- /**
- * Search the given compartment for a highlighted CompartmentFigText
- * and unhighlight it.
- *
- * @param fc compartment to search for highlight item
- * @return item that was unhighlighted or null if no action was taken
- */
- protected final CompartmentFigText unhighlight(
- FigCompartment fc) {
- Fig ft;
- for (int i = 1; i < fc.getFigs().size(); i++) {
- ft = fc.getFigAt(i);
- if (ft instanceof CompartmentFigText
- && ((CompartmentFigText) ft).isHighlighted()) {
- ((CompartmentFigText) ft).setHighlighted(false);
- ft.getGroup().damage();
- return ((CompartmentFigText) ft);
- }
- }
- return null;
- }
-
protected void createContainedModelElement(FigGroup fg, InputEvent ie) {
if (!(fg instanceof FigCompartment)) {
return;
@@ -585,17 +527,8 @@
if (figList.size() > 0) {
Fig fig = (Fig) figList.get(figList.size() - 1);
if (fig != null && fig instanceof CompartmentFigText) {
- if (highlightedFigText != null) {
- highlightedFigText.setHighlighted(false);
- if (highlightedFigText.getGroup() != null) {
- /* Preventing NullPointerException. */
- highlightedFigText.getGroup().damage();
- }
- }
CompartmentFigText ft = (CompartmentFigText) fig;
ft.startTextEditor(ie);
- ft.setHighlighted(true);
- highlightedFigText = ft;
}
}
ie.consume();
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/TabDiagram.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/TabDiagram.java?view=diff&pathrev=19208&r1=19207&r2=19208
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/TabDiagram.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/TabDiagram.java 2011-04-11 04:15:17-0700
@@ -60,6 +60,7 @@
import org.argouml.application.api.AbstractArgoJPanel;
import org.argouml.application.api.Argo;
import org.argouml.configuration.Configuration;
+import org.argouml.model.Model;
import org.argouml.ui.TabModelTarget;
import org.argouml.ui.targetmanager.TargetEvent;
import org.argouml.ui.targetmanager.TargetManager;
@@ -410,6 +411,11 @@
}
}
+ /**
+ * If the model element targets have changed then make sure the selection
+ * on the diagram changes to match.
+ * @param targets
+ */
private void select(Object[] targets) {
LayerManager manager = graph.getEditor().getLayerManager();
List<Fig> figList = new ArrayList<Fig>();
@@ -420,7 +426,28 @@
&& manager.getActiveLayer().getContents().contains(
targets[i])) {
theTarget = (Fig) targets[i];
+ } else if (Model.getFacade().isAAttribute(targets[i])
+ || Model.getFacade().isAEnumerationLiteral(targets[i])
+ || Model.getFacade().isAOperation(targets[i])) {
+ // Assuming the target is some model element.
+ Object container = Model.getFacade().getModelElementContainer(targets[i]);
+ FigCompartmentBox theContainer =
+ (FigCompartmentBox) manager.presentationFor(container);
+ if (theContainer != null) {
+ for (FigCompartment fc : theContainer.getCompartments()) {
+ for (Object o : fc.getFigs()) {
+ if (((Fig) o).getOwner() == targets[i]) {
+ theTarget = (Fig) o;
+ break;
+ }
+ }
+ if (theTarget != null) {
+ break;
+ }
+ }
+ }
} else {
+ // Assuming the target is some model element.
theTarget = manager.presentationFor(targets[i]);
}
------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2718822
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.