+package org.simantics.diagram.profile;\r
+\r
+import java.awt.geom.AffineTransform;\r
+\r
+import org.simantics.databoard.Bindings;\r
+import org.simantics.databoard.annotations.Optional;\r
+import org.simantics.databoard.binding.Binding;\r
+import org.simantics.databoard.util.Bean;\r
+import org.simantics.datatypes.literal.RGB;\r
+import org.simantics.datatypes.literal.Vec2d;\r
+import org.simantics.db.layer0.variable.Variable;\r
+import org.simantics.utils.datastructures.map.Tuple;\r
+\r
+public class IconResult extends Tuple implements IconButtonResult {\r
+ \r
+ public static class B extends Bean implements IconButtonConfiguration {\r
+ private static final Binding BINDING = Bindings.getBindingUnchecked(B.class);\r
+ public String id;\r
+ public String iconName;\r
+ public int index;\r
+ public double loValue;\r
+ public double hiValue;\r
+ @Optional\r
+ public RGB.Integer loColor;\r
+ @Optional\r
+ public RGB.Integer midColor;\r
+ @Optional\r
+ public RGB.Integer hiColor;\r
+ @Optional\r
+ public Vec2d offset;\r
+ public Vec2d size;\r
+ public boolean relativeTransform;\r
+ public B(String id, String iconName, int index, double loValue, double hiValue, RGB.Integer loColor, RGB.Integer midColor, RGB.Integer hiColor, Vec2d offset, Vec2d size, boolean relativeTransform) {\r
+ super(BINDING);\r
+ this.id = id;\r
+ this.iconName = iconName;\r
+ this.index = index;\r
+ this.loValue = loValue;\r
+ this.hiValue = hiValue;\r
+ this.loColor = loColor;\r
+ this.midColor = midColor;\r
+ this.hiColor = hiColor;\r
+ this.offset = offset;\r
+ this.size = size;\r
+ this.relativeTransform = relativeTransform;\r
+ }\r
+ @Override\r
+ public Vec2d getOffset() {\r
+ return offset;\r
+ }\r
+ @Override\r
+ public String getId() {\r
+ return id;\r
+ }\r
+ @Override\r
+ public Vec2d getSize() {\r
+ return size;\r
+ }\r
+ @Override\r
+ public int getIndex() {\r
+ return index;\r
+ }\r
+ @Override\r
+ public boolean getRelativeTransform() {\r
+ return relativeTransform;\r
+ }\r
+ }\r
+ public static class A extends Bean implements IconButtonState {\r
+ private static final Binding BINDING = Bindings.getBindingUnchecked(A.class);\r
+ public double value;\r
+ public B config;\r
+ public A(double value, B config) {\r
+ super(BINDING);\r
+ this.value = value;\r
+ this.config = config;\r
+ }\r
+ @Override\r
+ public IconButtonConfiguration getConfiguration() {\r
+ return config;\r
+ }\r
+ }\r
+ public IconResult(A a, Variable property, AffineTransform transform) {\r
+ super(a, property, transform);\r
+ }\r
+ public A getA() {\r
+ return (A) getField(0);\r
+ }\r
+ public Variable getProperty() {\r
+ return (Variable) getField(1);\r
+ }\r
+ public AffineTransform getParentTransform() {\r
+ return (AffineTransform) getField(2);\r
+ }\r
+ public IconResult withValue(double value) {\r
+ return new IconResult(new A(value, getA().config), getProperty(), getParentTransform());\r
+ }\r
+ @Override\r
+ public IconButtonState getState() {\r
+ return getA();\r
+ }\r
+}
\ No newline at end of file