]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.diagram/src/org/simantics/diagram/profile/MonitorTextGridResult.java
Fixed multiple issues causing dangling references to discarded queries
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / profile / MonitorTextGridResult.java
1 package org.simantics.diagram.profile;
2
3 import java.awt.geom.AffineTransform;
4 import java.util.Arrays;
5
6 import org.simantics.common.color.Color;
7 import org.simantics.common.format.Formatter;
8 import org.simantics.databoard.Bindings;
9 import org.simantics.databoard.binding.Binding;
10 import org.simantics.databoard.util.Bean;
11 import org.simantics.databoard.util.ObjectUtils;
12 import org.simantics.datatypes.literal.Vec2d;
13 import org.simantics.db.ReadGraph;
14 import org.simantics.db.Resource;
15 import org.simantics.db.exception.DatabaseException;
16 import org.simantics.db.layer0.variable.RVI;
17 import org.simantics.db.layer0.variable.Variable;
18 import org.simantics.diagram.synchronization.graph.DiagramGraphUtil;
19 import org.simantics.g2d.utils.Alignment;
20 import org.simantics.scl.runtime.function.Function1;
21 import org.simantics.utils.datastructures.map.Tuple;
22
23 public class MonitorTextGridResult extends Tuple {
24         
25     public static class B extends Bean {
26         private static final Binding BINDING = Bindings.getBindingUnchecked(B.class);
27         public int index;
28         public double gain;
29         public double bias;
30         public B(int index, double gain, double bias) {
31                 super(BINDING);
32                 this.index = index;
33                 this.gain = gain;
34                 this.bias = bias;
35         }
36     }
37         
38     public MonitorTextGridResult(String rowId, String text1, String text2, String text3, boolean enabled, boolean up, double spacing, Function1<String, String> modifier, Function1<String, String> validator, Function1<Vec2d, Boolean> translator, AffineTransform parentTransform) {
39         super(rowId, text1, text2, text3, enabled, up, spacing, modifier, validator, translator, parentTransform, null, null, null, null, null, null, null, null);
40     }
41     public MonitorTextGridResult(String rowId, String text1, String text2, String text3, boolean enabled, boolean up, double spacing, Function1<String, String> modifier, Function1<String, String> validator, Function1<Vec2d, Boolean> translator, AffineTransform parentTransform, Vec2d offset) {
42         super(rowId, text1, text2, text3, enabled, up, spacing, modifier, validator, translator, parentTransform, offset, null, null, null, null, null, null, null);
43     }
44     public MonitorTextGridResult(String rowId, String text1, String text2, String text3, boolean enabled, boolean up, double spacing, Function1<String, String> modifier, Function1<String, String> validator, Function1<Vec2d, Boolean> translator, AffineTransform parentTransform, Vec2d offset, Color color) {
45         super(rowId, text1, text2, text3, enabled, up, spacing, modifier, validator, translator, parentTransform, offset, color, null, null, null, null, null, null);
46     }
47     public MonitorTextGridResult(String rowId, String text1, String text2, String text3, boolean enabled, boolean up, double spacing, Function1<String, String> modifier, Function1<String, String> validator, Function1<Vec2d, Boolean> translator, AffineTransform parentTransform, Vec2d offset, Color color, RVI rvi) {
48         super(rowId, text1, text2, text3, enabled, up, spacing, modifier, validator, translator, parentTransform, offset, color, rvi, null, null, null, null, null);
49     }
50     public MonitorTextGridResult(String rowId, String text1, String text2, String text3, boolean enabled, boolean up, double spacing, Function1<String, String> modifier, Function1<String, String> validator, Function1<Vec2d, Boolean> translator, AffineTransform parentTransform, Vec2d offset, Color color, RVI rvi, Variable property, Formatter formatter, B b) {
51         super(rowId, text1, text2, text3, enabled, up, spacing, modifier, validator, translator, parentTransform, offset, color, rvi, property, formatter, b, null, null);
52     }
53     public MonitorTextGridResult(String rowId, String text1, String text2, String text3, boolean enabled, boolean up, double spacing, Function1<String, String> modifier, Function1<String, String> validator, Function1<Vec2d, Boolean> translator, AffineTransform parentTransform, Vec2d offset, Color color, RVI rvi, Variable property, Formatter formatter, B b, Alignment[] alignment, Alignment[] verticalAlignment) {
54         super(rowId, text1, text2, text3, enabled, up, spacing, modifier, validator, translator, parentTransform, offset, color, rvi, property, formatter, b, alignment, verticalAlignment);
55     }
56     private MonitorTextGridResult(Object ... fields) {
57         super(fields);
58     }
59     public String getRowId() {
60         return (String) getField(0);
61     }
62     public String getText1() {
63         return (String) getField(1);
64     }
65     public String getText2() {
66         return (String) getField(2);
67     }
68     public String getText3() {
69         return (String) getField(3);
70     }
71     public Boolean getEnabled() {
72         return (Boolean) getField(4);
73     }
74     public Boolean getUp() {
75         return (Boolean) getField(5);
76     }
77     public Double getSpacing() {
78         return (Double) getField(6);
79     }
80     @SuppressWarnings("unchecked")
81     public Function1<String, String> getModifier() {
82         return (Function1<String, String>) getField(7);
83     }
84     @SuppressWarnings("unchecked")
85     public Function1<String, String> getValidator() {
86         return (Function1<String, String>) getField(8);
87     }
88     @SuppressWarnings("unchecked")
89     public Function1<Vec2d, Boolean> getTranslator() {
90         return (Function1<Vec2d, Boolean>) getField(9);
91     }
92     public AffineTransform getParentTransform() {
93         return (AffineTransform) getField(10);
94     }
95     public Vec2d getOffset() {
96         return (Vec2d) getField(11);
97     }
98     public Color getColor() {
99         return (Color) getField(12);
100     }
101     public RVI getRVI() {
102         return (RVI) getField(13);
103     }
104     public Variable getProperty() {
105         return (Variable) getField(14);
106     }
107     public Formatter getFormatter() {
108         return (Formatter) getField(15);
109     }
110     public B getB() {
111         return (B) getField(16);
112     }
113     public Alignment[] getAlignments() {
114         return (Alignment[]) getField(17);
115     }
116     public Alignment[] getVerticalAlignments() {
117         return (Alignment[]) getField(18);
118     }
119     public boolean getPending() {
120         Boolean b = tryGetTypedField(19);
121         return b != null && Boolean.TRUE.equals(b);
122     }
123     public Object getUnformattedValue() {
124         return tryGetField(20);
125     }
126     public boolean sameStructure(MonitorTextGridResult other) {
127         Object[] fields = getFields();
128         Object[] otherFields = other.getFields();
129         int level = getLevel();
130         if (fields.length != otherFields.length)
131             return false;
132         for(int i=0;i<2;i++) if(!ObjectUtils.objectEquals(fields[i],otherFields[i])) return false;
133         for(int i=3;i<level;i++) if(!ObjectUtils.objectEquals(fields[i],otherFields[i])) return false;
134         return true;
135     }
136     
137     public MonitorTextGridResult withValue(Object unformattedValue, String value) {
138         return withValue(unformattedValue, value, false);
139     }
140
141     public MonitorTextGridResult withValue(Object unformattedValue, String value, boolean pending) {
142         boolean hasValue = unformattedValue != null;
143         Object[] fs = Arrays.copyOf(getFields(), hasValue ? 21 : 20, Object[].class);
144         fs[2] = value;
145         fs[19] = pending;
146         if (hasValue)
147             fs[20] = unformattedValue;
148         return new MonitorTextGridResult(fs);
149     }
150
151     public static MonitorTextGridResult make(ReadGraph graph, Resource element, int index, String id, String label, String value, String unit) throws DatabaseException {
152                 AffineTransform transform = DiagramGraphUtil.getAffineTransform(graph, element);
153                 Vec2d offset = DiagramGraphUtil.getOffset(graph, element);
154                 MonitorTextGridResult.B b = new MonitorTextGridResult.B(index, 1.0, 0.0);
155         return new MonitorTextGridResult(id, label, value, unit, true, true, 0.0, null, null, null, transform, offset, null, null, null, null, b, null, null);
156     }
157     
158 }