]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/DistrictNetworkEdgeNode.java
First prototype of HSV color space based dynamic DN element coloring
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / nodes / DistrictNetworkEdgeNode.java
index 1e577e97a4553faebcfebd82659f56c4a8c96894..9f8c9a23ed192245813cdccd1ddbf2a0a61ddc16 100644 (file)
@@ -4,7 +4,6 @@ import java.awt.BasicStroke;
 import java.awt.Color;
 import java.awt.Graphics2D;
 import java.awt.RenderingHints;
-import java.awt.Stroke;
 import java.awt.geom.AffineTransform;
 import java.awt.geom.Line2D;
 import java.awt.geom.Path2D;
@@ -21,19 +20,17 @@ public class DistrictNetworkEdgeNode extends G2DNode implements ISelectionPainte
 
     private static final long serialVersionUID = 8049769475036519806L;
 
-    private static final Stroke     SELECTION_STROKE = new BasicStroke(1f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER);
-    private static final Color      SELECTION_COLOR  = new Color(255, 0, 255, 96);
+    private static final BasicStroke STROKE           = new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
+    private static final Color       SELECTION_COLOR  = new Color(255, 0, 255, 96);
 
     private DistrictNetworkEdge edge;
     private Rectangle2D bounds;
-    private Line2D path;
+    private transient Line2D path;
 
-    private static final BasicStroke STROKE = new BasicStroke(4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND);
     private boolean scaleStroke = true;
-
     private Color color;
-
     private Double stroke;
+    private transient Color dynamicColor = null;
 
     @Override
     public void init() {
@@ -54,7 +51,6 @@ public class DistrictNetworkEdgeNode extends G2DNode implements ISelectionPainte
         Color oldColor = g2d.getColor();
         BasicStroke oldStroke = (BasicStroke) g2d.getStroke();
 
-        g2d.setColor(color);
         BasicStroke bs = null;
         if (scaleStroke) {
             double scale = GeometryUtils.getScale(g2d.getTransform());
@@ -73,6 +69,7 @@ public class DistrictNetworkEdgeNode extends G2DNode implements ISelectionPainte
             g2d.draw(path);
         }
 
+        g2d.setColor(dynamicColor != null ? dynamicColor : color);
         g2d.setStroke(bs);
         g2d.draw(path);
 
@@ -153,4 +150,9 @@ public class DistrictNetworkEdgeNode extends G2DNode implements ISelectionPainte
         this.stroke = stroke;
     }
 
+    @PropertySetter(value = "dynamicColor")
+    public void setDynamicColor(Color color) {
+        this.dynamicColor = color;
+    }
+
 }