svn commit: r14691 - trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/CompartmentFigText.java

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: bobtarling
Date: 2008-05-11 09:25:09-0700
New Revision: 14691

Modified:
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/CompartmentFigText.java

Log:
Improve highlighting of selected attribute or operation

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=14691&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=14690&r2=14691
==============================================================================
--- 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-05-11 09:25:09-0700
@@ -25,9 +25,12 @@
 package org.argouml.uml.diagram.ui;
 
 import java.awt.Color;
+import java.awt.Graphics;
 
 import org.apache.log4j.Logger;
 import org.argouml.notation.NotationProvider;
+import org.tigris.gef.base.Globals;
+import org.tigris.gef.base.Selection;
 import org.tigris.gef.presentation.Fig;
 import org.tigris.gef.presentation.FigGroup;
 import org.tigris.gef.presentation.FigText;
@@ -60,9 +63,9 @@
     private Fig refFig;
 
     /**
-     * Record whether we are currently highlighted.
+     * Set if the user has selected this component Fig inside the FigNode.
      */
-    private boolean isHighlighted;
+    private boolean highlighted;
 
     /**
      * Build a new compartment figText of the given dimensions, within the
@@ -220,14 +223,60 @@
      *              <code>false</code> otherwise.
      */
     public void setHighlighted(boolean flag) {
-        isHighlighted = flag;
-        if (isHighlighted) {
-            super.setLineWidth(1);
-        } else {
-            super.setLineWidth(0);
+        highlighted = flag;
+        if (flag == false) {
+            flag = false;
+        }
+    }
+    
+    /**
+     * Extends the normal paint function in order to display a similar
+     * selectionbox to that given for a non-resizable FigNode.
+     * @param g the graphics object
+     * @see org.tigris.gef.presentation.FigText#paint(java.awt.Graphics)
+     */
+    @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 - 1,
+                    y - 1,
+                    w + 2,
+                    h + 2);
+            g.fillRect(
+                x - Selection.HAND_SIZE / 2,
+                y - Selection.HAND_SIZE / 2,
+                Selection.HAND_SIZE,
+                Selection.HAND_SIZE);
+            g.fillRect(
+                x + w - Selection.HAND_SIZE / 2,
+                y - Selection.HAND_SIZE / 2,
+                Selection.HAND_SIZE,
+                Selection.HAND_SIZE);
+            g.fillRect(
+                x - Selection.HAND_SIZE / 2,
+                y + h - Selection.HAND_SIZE / 2,
+                Selection.HAND_SIZE,
+                Selection.HAND_SIZE);
+            g.fillRect(
+                x + w - Selection.HAND_SIZE / 2,
+                y + h - Selection.HAND_SIZE / 2,
+                Selection.HAND_SIZE,
+                Selection.HAND_SIZE);
         }
     }
-
 
     /**
      * Return whether this item is highlighted.<p>
@@ -236,6 +285,6 @@
      *          <code>false</code> otherwise.
      */
     public boolean isHighlighted() {
-        return isHighlighted;
+        return highlighted;
     }
 }
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.