1 package org.simantics.diagram.profile;
\r
3 import java.awt.geom.AffineTransform;
\r
4 import java.util.Arrays;
\r
6 import org.simantics.common.color.Color;
\r
7 import org.simantics.common.format.Formatter;
\r
8 import org.simantics.databoard.Bindings;
\r
9 import org.simantics.databoard.binding.Binding;
\r
10 import org.simantics.databoard.util.Bean;
\r
11 import org.simantics.databoard.util.ObjectUtils;
\r
12 import org.simantics.datatypes.literal.Vec2d;
\r
13 import org.simantics.db.ReadGraph;
\r
14 import org.simantics.db.Resource;
\r
15 import org.simantics.db.exception.DatabaseException;
\r
16 import org.simantics.db.layer0.variable.RVI;
\r
17 import org.simantics.db.layer0.variable.Variable;
\r
18 import org.simantics.diagram.synchronization.graph.DiagramGraphUtil;
\r
19 import org.simantics.g2d.utils.Alignment;
\r
20 import org.simantics.scl.runtime.function.Function1;
\r
21 import org.simantics.utils.datastructures.map.Tuple;
\r
23 public class MonitorTextGridResult extends Tuple {
\r
25 public static class B extends Bean {
\r
26 private static final Binding BINDING = Bindings.getBindingUnchecked(B.class);
\r
30 public B(int index, double gain, double bias) {
\r
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) {
\r
39 super(rowId, text1, text2, text3, enabled, up, spacing, modifier, validator, translator, parentTransform, null, null, null, null, null, null, null, null);
\r
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) {
\r
42 super(rowId, text1, text2, text3, enabled, up, spacing, modifier, validator, translator, parentTransform, offset, null, null, null, null, null, null, null);
\r
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) {
\r
45 super(rowId, text1, text2, text3, enabled, up, spacing, modifier, validator, translator, parentTransform, offset, color, null, null, null, null, null, null);
\r
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) {
\r
48 super(rowId, text1, text2, text3, enabled, up, spacing, modifier, validator, translator, parentTransform, offset, color, rvi, null, null, null, null, null);
\r
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) {
\r
51 super(rowId, text1, text2, text3, enabled, up, spacing, modifier, validator, translator, parentTransform, offset, color, rvi, property, formatter, b, null, null);
\r
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) {
\r
54 super(rowId, text1, text2, text3, enabled, up, spacing, modifier, validator, translator, parentTransform, offset, color, rvi, property, formatter, b, alignment, verticalAlignment);
\r
56 private MonitorTextGridResult(Object ... fields) {
\r
59 public String getRowId() {
\r
60 return (String) getField(0);
\r
62 public String getText1() {
\r
63 return (String) getField(1);
\r
65 public String getText2() {
\r
66 return (String) getField(2);
\r
68 public String getText3() {
\r
69 return (String) getField(3);
\r
71 public Boolean getEnabled() {
\r
72 return (Boolean) getField(4);
\r
74 public Boolean getUp() {
\r
75 return (Boolean) getField(5);
\r
77 public Double getSpacing() {
\r
78 return (Double) getField(6);
\r
80 @SuppressWarnings("unchecked")
\r
81 public Function1<String, String> getModifier() {
\r
82 return (Function1<String, String>) getField(7);
\r
84 @SuppressWarnings("unchecked")
\r
85 public Function1<String, String> getValidator() {
\r
86 return (Function1<String, String>) getField(8);
\r
88 @SuppressWarnings("unchecked")
\r
89 public Function1<Vec2d, Boolean> getTranslator() {
\r
90 return (Function1<Vec2d, Boolean>) getField(9);
\r
92 public AffineTransform getParentTransform() {
\r
93 return (AffineTransform) getField(10);
\r
95 public Vec2d getOffset() {
\r
96 return (Vec2d) getField(11);
\r
98 public Color getColor() {
\r
99 return (Color) getField(12);
\r
101 public RVI getRVI() {
\r
102 return (RVI) getField(13);
\r
104 public Variable getProperty() {
\r
105 return (Variable) getField(14);
\r
107 public Formatter getFormatter() {
\r
108 return (Formatter) getField(15);
\r
111 return (B) getField(16);
\r
113 public Alignment[] getAlignments() {
\r
114 return (Alignment[]) getField(17);
\r
116 public Alignment[] getVerticalAlignments() {
\r
117 return (Alignment[]) getField(18);
\r
119 public boolean getPending() {
\r
120 Boolean b = tryGetTypedField(19);
\r
121 return b != null && Boolean.TRUE.equals(b);
\r
123 public Object getUnformattedValue() {
\r
124 return tryGetField(20);
\r
126 public boolean sameStructure(MonitorTextGridResult other) {
\r
127 Object[] fields = getFields();
\r
128 Object[] otherFields = other.getFields();
\r
129 int level = getLevel();
\r
130 if (fields.length != otherFields.length)
\r
132 for(int i=0;i<2;i++) if(!ObjectUtils.objectEquals(fields[i],otherFields[i])) return false;
\r
133 for(int i=3;i<level;i++) if(!ObjectUtils.objectEquals(fields[i],otherFields[i])) return false;
\r
137 public MonitorTextGridResult withValue(Object unformattedValue, String value) {
\r
138 return withValue(unformattedValue, value, false);
\r
141 public MonitorTextGridResult withValue(Object unformattedValue, String value, boolean pending) {
\r
142 boolean hasValue = unformattedValue != null;
\r
143 Object[] fs = Arrays.copyOf(getFields(), hasValue ? 21 : 20, Object[].class);
\r
147 fs[20] = unformattedValue;
\r
148 return new MonitorTextGridResult(fs);
\r
151 public static MonitorTextGridResult make(ReadGraph graph, Resource element, int index, String id, String label, String value, String unit) throws DatabaseException {
\r
152 AffineTransform transform = DiagramGraphUtil.getAffineTransform(graph, element);
\r
153 Vec2d offset = DiagramGraphUtil.getOffset(graph, element);
\r
154 MonitorTextGridResult.B b = new MonitorTextGridResult.B(index, 1.0, 0.0);
\r
155 return new MonitorTextGridResult(id, label, value, unit, true, true, 0.0, null, null, null, transform, offset, null, null, null, null, b, null, null);
\r