]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/SelectionNode.java
Customisable selection padding on diagrams
[simantics/platform.git] / bundles / org.simantics.scenegraph / src / org / simantics / scenegraph / g2d / nodes / SelectionNode.java
index b5b8c4151fc7510a5c828bdbf36b5261b737e5e3..bd09c45745be9ab675d25f0bb073caca8cc85b0d 100644 (file)
@@ -35,7 +35,17 @@ public class SelectionNode extends G2DNode implements Decoration {
     protected transient Rectangle2D rect;
     protected transient BasicStroke scaledStroke;
     protected transient double previousScaleRecip = Double.NaN;
+    private boolean ignore = false;
+    private double paddingFactor = 5.0;
 
+    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) {
         this.transform = transform;
@@ -46,6 +56,8 @@ public class SelectionNode extends G2DNode implements Decoration {
     @Override
     public void render(Graphics2D g) {
         if (bounds == null) return;
+        
+        if (ignore) return;
 
         // Prevent exceptions during rendering.
         if (transform.getDeterminant() == 0)
@@ -71,7 +83,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 +96,10 @@ public class SelectionNode extends G2DNode implements Decoration {
         g.setTransform(ot);
 
     }
+    
+    public Rectangle2D getRect() {
+       return transform.createTransformedShape(rect).getBounds2D();
+    }
 
     @Override
     public Rectangle2D getBoundsInLocal() {