1 package org.simantics.diagram.profile;
3 import java.awt.geom.AffineTransform;
4 import java.util.Arrays;
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;
23 public class MonitorTextGridResult extends Tuple {
25 public static class B extends Bean {
26 private static final Binding BINDING = Bindings.getBindingUnchecked(B.class);
30 public B(int index, double gain, double bias) {
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);
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);
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);
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);
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);
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);
56 private MonitorTextGridResult(Object ... fields) {
59 public String getRowId() {
60 return (String) getField(0);
62 public String getText1() {
63 return (String) getField(1);
65 public String getText2() {
66 return (String) getField(2);
68 public String getText3() {
69 return (String) getField(3);
71 public Boolean getEnabled() {
72 return (Boolean) getField(4);
74 public Boolean getUp() {
75 return (Boolean) getField(5);
77 public Double getSpacing() {
78 return (Double) getField(6);
80 @SuppressWarnings("unchecked")
81 public Function1<String, String> getModifier() {
82 return (Function1<String, String>) getField(7);
84 @SuppressWarnings("unchecked")
85 public Function1<String, String> getValidator() {
86 return (Function1<String, String>) getField(8);
88 @SuppressWarnings("unchecked")
89 public Function1<Vec2d, Boolean> getTranslator() {
90 return (Function1<Vec2d, Boolean>) getField(9);
92 public AffineTransform getParentTransform() {
93 return (AffineTransform) getField(10);
95 public Vec2d getOffset() {
96 return (Vec2d) getField(11);
98 public Color getColor() {
99 return (Color) getField(12);
101 public RVI getRVI() {
102 return (RVI) getField(13);
104 public Variable getProperty() {
105 return (Variable) getField(14);
107 public Formatter getFormatter() {
108 return (Formatter) getField(15);
111 return (B) getField(16);
113 public Alignment[] getAlignments() {
114 return (Alignment[]) getField(17);
116 public Alignment[] getVerticalAlignments() {
117 return (Alignment[]) getField(18);
119 public boolean getPending() {
120 Boolean b = tryGetTypedField(19);
121 return b != null && Boolean.TRUE.equals(b);
123 public Object getUnformattedValue() {
124 return tryGetField(20);
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)
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;
137 public MonitorTextGridResult withValue(Object unformattedValue, String value) {
138 return withValue(unformattedValue, value, false);
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);
147 fs[20] = unformattedValue;
148 return new MonitorTextGridResult(fs);
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);