]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.diagram/src/org/simantics/diagram/profile/IconButtonStyleBase.java
Added identity-providing constructor for IconButtonStyleBase
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / profile / IconButtonStyleBase.java
index 04d5a500557a029be35e6c96f97d8d5a6c635423..4055e8d4aa5ad47fef14bba55cac542d4894c801 100644 (file)
@@ -1,76 +1,84 @@
-package org.simantics.diagram.profile;\r
-\r
-import java.awt.geom.AffineTransform;\r
-\r
-import org.simantics.datatypes.literal.Vec2d;\r
-import org.simantics.scenegraph.INode;\r
-import org.simantics.scenegraph.g2d.IG2DNode;\r
-import org.simantics.scenegraph.g2d.nodes.SingleElementNode;\r
-import org.simantics.scenegraph.profile.EvaluationContext;\r
-import org.simantics.scenegraph.profile.common.ProfileVariables;\r
-import org.simantics.scenegraph.utils.NodeUtil;\r
-\r
-/**\r
- * @author Antti Villberg\r
- * @author Tuukka Lehtonen\r
- */\r
-public abstract class IconButtonStyleBase<T extends IconButtonResult> extends StyleBase<T> {\r
-\r
-       abstract protected String getNodePrefix();\r
-       abstract protected Class<?> getNodeClass();\r
-       \r
-    private AffineTransform translateAndScaleIfNeeded(AffineTransform tr, Vec2d offset, boolean relativeTransform) {\r
-       if(relativeTransform) {\r
-               if(!offset.isZero()) {\r
-                       tr = new AffineTransform(tr);\r
-                       tr.translate(offset.x, offset.y);\r
-               }\r
-       } else {\r
-               Vec2d translation = new Vec2d(tr.getTranslateX()+offset.x, tr.getTranslateY()+offset.y);\r
-               tr = new AffineTransform();\r
-               tr.translate(translation.x, translation.y);\r
-       }\r
-       return tr;\r
-    }\r
-    \r
-    private AffineTransform getSymbolTransform(INode node, Vec2d offset, boolean relativeTransform) {\r
-       if(node instanceof SingleElementNode) {\r
-               SingleElementNode s = (SingleElementNode)node;\r
-               INode symbol = NodeUtil.findChildByPrefix(s, "composite_image"); \r
-               return translateAndScaleIfNeeded(symbol != null ? ((IG2DNode)symbol).getTransform() : new AffineTransform(), offset, relativeTransform);\r
-       }\r
-       return null;\r
-    }\r
-    \r
-    @Override\r
-    public void applyStyleForNode(EvaluationContext observer, INode node, T result) {\r
-\r
-       if (result == null) {\r
-            ProfileVariables.denyChildren(node, getNodePrefix());\r
-            return;\r
-        }\r
-\r
-       IconButtonState state = result.getState();\r
-       IconButtonConfiguration config = state.getConfiguration(); \r
-       \r
-       if (config.getOffset() == null) {\r
-               ProfileVariables.denyChild(node, getNodePrefix() + config.getId());\r
-               return;\r
-       }\r
-\r
-       @SuppressWarnings("unchecked")\r
-               IconButtonNode iconNode = ProfileVariables.claimChild(node, "", getNodePrefix() + config.getId(), (Class<IconButtonNode>)getNodeClass(), observer);\r
-\r
-        iconNode.setZIndex( Integer.MAX_VALUE );\r
-        iconNode.setTransform( getSymbolTransform(node, config.getOffset(), config.getRelativeTransform()));\r
-\r
-        iconNode.setData(result);\r
-            \r
-    }\r
-\r
-    @Override\r
-    protected void cleanupStyleForNode(EvaluationContext observer, INode node) {\r
-       ProfileVariables.denyChildren(node, getNodePrefix());\r
-    }\r
-\r
-}\r
+package org.simantics.diagram.profile;
+
+import java.awt.geom.AffineTransform;
+
+import org.simantics.datatypes.literal.Vec2d;
+import org.simantics.scenegraph.INode;
+import org.simantics.scenegraph.g2d.IG2DNode;
+import org.simantics.scenegraph.g2d.nodes.SingleElementNode;
+import org.simantics.scenegraph.profile.EvaluationContext;
+import org.simantics.scenegraph.profile.common.ProfileVariables;
+import org.simantics.scenegraph.utils.NodeUtil;
+
+/**
+ * @author Antti Villberg
+ * @author Tuukka Lehtonen
+ */
+public abstract class IconButtonStyleBase<T extends IconButtonResult> extends StyleBase<T> {
+
+       abstract protected String getNodePrefix();
+       abstract protected Class<?> getNodeClass();
+
+    public IconButtonStyleBase(Object identity) {
+        super(identity);
+    }
+
+    public IconButtonStyleBase() {
+        super();
+    }
+
+    private AffineTransform translateAndScaleIfNeeded(AffineTransform tr, Vec2d offset, boolean relativeTransform) {
+       if(relativeTransform) {
+               if(!offset.isZero()) {
+                       tr = new AffineTransform(tr);
+                       tr.translate(offset.x, offset.y);
+               }
+       } else {
+               Vec2d translation = new Vec2d(tr.getTranslateX()+offset.x, tr.getTranslateY()+offset.y);
+               tr = new AffineTransform();
+               tr.translate(translation.x, translation.y);
+       }
+       return tr;
+    }
+    
+    private AffineTransform getSymbolTransform(INode node, Vec2d offset, boolean relativeTransform) {
+       if(node instanceof SingleElementNode) {
+               SingleElementNode s = (SingleElementNode)node;
+               INode symbol = NodeUtil.findChildByPrefix(s, "composite_image"); 
+               return translateAndScaleIfNeeded(symbol != null ? ((IG2DNode)symbol).getTransform() : new AffineTransform(), offset, relativeTransform);
+       }
+       return null;
+    }
+    
+    @Override
+    public void applyStyleForNode(EvaluationContext observer, INode node, T result) {
+
+       if (result == null) {
+            ProfileVariables.denyChildren(node, getNodePrefix());
+            return;
+        }
+
+       IconButtonState state = result.getState();
+       IconButtonConfiguration config = state.getConfiguration(); 
+       
+       if (config.getOffset() == null) {
+               ProfileVariables.denyChild(node, getNodePrefix() + config.getId());
+               return;
+       }
+
+       @SuppressWarnings("unchecked")
+               IconButtonNode iconNode = ProfileVariables.claimChild(node, "", getNodePrefix() + config.getId(), (Class<IconButtonNode>)getNodeClass(), observer);
+
+        iconNode.setZIndex( Integer.MAX_VALUE );
+        iconNode.setTransform( getSymbolTransform(node, config.getOffset(), config.getRelativeTransform()));
+
+        iconNode.setData(result);
+            
+    }
+
+    @Override
+    protected void cleanupStyleForNode(EvaluationContext observer, INode node) {
+       ProfileVariables.denyChildren(node, getNodePrefix());
+    }
+
+}