]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.diagram/src/org/simantics/diagram/profile/IconResult.java
Fixed multiple issues causing dangling references to discarded queries
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / profile / IconResult.java
1 package org.simantics.diagram.profile;
2
3 import java.awt.geom.AffineTransform;
4
5 import org.simantics.databoard.Bindings;
6 import org.simantics.databoard.annotations.Optional;
7 import org.simantics.databoard.binding.Binding;
8 import org.simantics.databoard.util.Bean;
9 import org.simantics.datatypes.literal.RGB;
10 import org.simantics.datatypes.literal.Vec2d;
11 import org.simantics.db.layer0.variable.Variable;
12 import org.simantics.utils.datastructures.map.Tuple;
13
14 public class IconResult extends Tuple implements IconButtonResult {
15         
16     public static class B extends Bean implements IconButtonConfiguration {
17         private static final Binding BINDING = Bindings.getBindingUnchecked(B.class);
18         public String id;
19         public String iconName;
20         public int index;
21         public double loValue;
22         public double hiValue;
23         @Optional
24         public RGB.Integer loColor;
25         @Optional
26         public RGB.Integer midColor;
27         @Optional
28         public RGB.Integer hiColor;
29         @Optional
30         public Vec2d offset;
31         public Vec2d size;
32         public boolean relativeTransform;
33         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) {
34                 super(BINDING);
35                 this.id = id;
36                 this.iconName = iconName;
37                 this.index = index;
38                 this.loValue = loValue;
39                 this.hiValue = hiValue;
40                 this.loColor = loColor;
41                 this.midColor = midColor;
42                 this.hiColor = hiColor;
43                 this.offset = offset;
44                 this.size = size;
45                 this.relativeTransform = relativeTransform;
46         }
47                 @Override
48                 public Vec2d getOffset() {
49                         return offset;
50                 }
51                 @Override
52                 public String getId() {
53                         return id;
54                 }
55                 @Override
56                 public Vec2d getSize() {
57                         return size;
58                 }
59                 @Override
60                 public int getIndex() {
61                         return index;
62                 }
63                 @Override
64                 public boolean getRelativeTransform() {
65                         return relativeTransform;
66                 }
67     }
68     public static class A extends Bean implements IconButtonState {
69         private static final Binding BINDING = Bindings.getBindingUnchecked(A.class);
70         public double value;
71         public B config;
72         public A(double value, B config) {
73                 super(BINDING);
74                 this.value = value;
75                 this.config = config;
76         }
77                 @Override
78                 public IconButtonConfiguration getConfiguration() {
79                         return config;
80                 }
81     }
82     public IconResult(A a, Variable property, AffineTransform transform) {
83         super(a, property, transform);
84     }
85     public A getA() {
86         return (A) getField(0);
87     }
88     public Variable getProperty() {
89         return (Variable) getField(1);
90     }
91     public AffineTransform getParentTransform() {
92         return (AffineTransform) getField(2);
93     }
94     public IconResult withValue(double value) {
95         return new IconResult(new A(value, getA().config), getProperty(), getParentTransform());
96     }
97         @Override
98         public IconButtonState getState() {
99                 return getA();
100         }
101 }