]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/SelectionNode.java
Add customisation possibilities for SelectionNode
[simantics/platform.git] / bundles / org.simantics.scenegraph / src / org / simantics / scenegraph / g2d / nodes / SelectionNode.java
index b5b8c4151fc7510a5c828bdbf36b5261b737e5e3..98aaebb250c308bda1f33fc42800826b61926592 100644 (file)
  *******************************************************************************/
 package org.simantics.scenegraph.g2d.nodes;
 
+import java.awt.AlphaComposite;
 import java.awt.BasicStroke;
 import java.awt.Color;
+import java.awt.Composite;
 import java.awt.Graphics2D;
 import java.awt.geom.AffineTransform;
 import java.awt.geom.Rectangle2D;
@@ -35,17 +37,39 @@ public class SelectionNode extends G2DNode implements Decoration {
     protected transient Rectangle2D rect;
     protected transient BasicStroke scaledStroke;
     protected transient double previousScaleRecip = Double.NaN;
+    protected boolean ignore = false;
+    protected double paddingFactor = 5.0;
+    protected int selectionId;
 
+    public int getSelectionId() {
+        return selectionId;
+    }
+    
+    public void setIgnore(boolean value) {
+        ignore = value;
+    }
+    
+    public void setPaddingFactor(double factor) {
+        paddingFactor = factor;
+    }
+  
     @SyncField({"transform", "bounds", "color"})
-    public void init(AffineTransform transform, Rectangle2D bounds, Color color) {
+    public void init(int selectionId, AffineTransform transform, Rectangle2D bounds, Color color) {
+        this.selectionId = selectionId;
         this.transform = transform;
         this.bounds = bounds;
         this.color = color;
     }
 
+    public void init(AffineTransform transform, Rectangle2D bounds, Color color) {
+        init(0, transform, bounds, color);
+    }
+
     @Override
     public void render(Graphics2D g) {
         if (bounds == null) return;
+        
+        if (ignore) return;
 
         // Prevent exceptions during rendering.
         if (transform.getDeterminant() == 0)
@@ -71,7 +95,7 @@ public class SelectionNode extends G2DNode implements Decoration {
         }
         g.setStroke(scaledStroke);
 
-        double padding = 5.0 * scaleRecip;
+        double padding = paddingFactor * scaleRecip;
         double paddingX = padding;
         double paddingY = padding;
 
@@ -84,6 +108,10 @@ public class SelectionNode extends G2DNode implements Decoration {
         g.setTransform(ot);
 
     }
+    
+    public Rectangle2D getRect() {
+       return transform.createTransformedShape(rect).getBounds2D();
+    }
 
     @Override
     public Rectangle2D getBoundsInLocal() {