--- /dev/null
+package org.simantics.diagram.profile;\r
+\r
+import java.awt.geom.AffineTransform;\r
+import java.util.Arrays;\r
+\r
+import org.simantics.common.color.Color;\r
+import org.simantics.common.format.Formatter;\r
+import org.simantics.databoard.Bindings;\r
+import org.simantics.databoard.binding.Binding;\r
+import org.simantics.databoard.util.Bean;\r
+import org.simantics.databoard.util.ObjectUtils;\r
+import org.simantics.datatypes.literal.Vec2d;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.layer0.variable.RVI;\r
+import org.simantics.db.layer0.variable.Variable;\r
+import org.simantics.diagram.synchronization.graph.DiagramGraphUtil;\r
+import org.simantics.g2d.utils.Alignment;\r
+import org.simantics.scl.runtime.function.Function1;\r
+import org.simantics.utils.datastructures.map.Tuple;\r
+\r
+public class MonitorTextGridResult extends Tuple {\r
+ \r
+ public static class B extends Bean {\r
+ private static final Binding BINDING = Bindings.getBindingUnchecked(B.class);\r
+ public int index;\r
+ public double gain;\r
+ public double bias;\r
+ public B(int index, double gain, double bias) {\r
+ super(BINDING);\r
+ this.index = index;\r
+ this.gain = gain;\r
+ this.bias = bias;\r
+ }\r
+ }\r
+ \r
+ 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
+ super(rowId, text1, text2, text3, enabled, up, spacing, modifier, validator, translator, parentTransform, null, null, null, null, null, null, null, null);\r
+ }\r
+ 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
+ super(rowId, text1, text2, text3, enabled, up, spacing, modifier, validator, translator, parentTransform, offset, null, null, null, null, null, null, null);\r
+ }\r
+ 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
+ super(rowId, text1, text2, text3, enabled, up, spacing, modifier, validator, translator, parentTransform, offset, color, null, null, null, null, null, null);\r
+ }\r
+ 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
+ super(rowId, text1, text2, text3, enabled, up, spacing, modifier, validator, translator, parentTransform, offset, color, rvi, null, null, null, null, null);\r
+ }\r
+ 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
+ super(rowId, text1, text2, text3, enabled, up, spacing, modifier, validator, translator, parentTransform, offset, color, rvi, property, formatter, b, null, null);\r
+ }\r
+ 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
+ super(rowId, text1, text2, text3, enabled, up, spacing, modifier, validator, translator, parentTransform, offset, color, rvi, property, formatter, b, alignment, verticalAlignment);\r
+ }\r
+ private MonitorTextGridResult(Object ... fields) {\r
+ super(fields);\r
+ }\r
+ public String getRowId() {\r
+ return (String) getField(0);\r
+ }\r
+ public String getText1() {\r
+ return (String) getField(1);\r
+ }\r
+ public String getText2() {\r
+ return (String) getField(2);\r
+ }\r
+ public String getText3() {\r
+ return (String) getField(3);\r
+ }\r
+ public Boolean getEnabled() {\r
+ return (Boolean) getField(4);\r
+ }\r
+ public Boolean getUp() {\r
+ return (Boolean) getField(5);\r
+ }\r
+ public Double getSpacing() {\r
+ return (Double) getField(6);\r
+ }\r
+ @SuppressWarnings("unchecked")\r
+ public Function1<String, String> getModifier() {\r
+ return (Function1<String, String>) getField(7);\r
+ }\r
+ @SuppressWarnings("unchecked")\r
+ public Function1<String, String> getValidator() {\r
+ return (Function1<String, String>) getField(8);\r
+ }\r
+ @SuppressWarnings("unchecked")\r
+ public Function1<Vec2d, Boolean> getTranslator() {\r
+ return (Function1<Vec2d, Boolean>) getField(9);\r
+ }\r
+ public AffineTransform getParentTransform() {\r
+ return (AffineTransform) getField(10);\r
+ }\r
+ public Vec2d getOffset() {\r
+ return (Vec2d) getField(11);\r
+ }\r
+ public Color getColor() {\r
+ return (Color) getField(12);\r
+ }\r
+ public RVI getRVI() {\r
+ return (RVI) getField(13);\r
+ }\r
+ public Variable getProperty() {\r
+ return (Variable) getField(14);\r
+ }\r
+ public Formatter getFormatter() {\r
+ return (Formatter) getField(15);\r
+ }\r
+ public B getB() {\r
+ return (B) getField(16);\r
+ }\r
+ public Alignment[] getAlignments() {\r
+ return (Alignment[]) getField(17);\r
+ }\r
+ public Alignment[] getVerticalAlignments() {\r
+ return (Alignment[]) getField(18);\r
+ }\r
+ public boolean getPending() {\r
+ Boolean b = tryGetTypedField(19);\r
+ return b != null && Boolean.TRUE.equals(b);\r
+ }\r
+ public Object getUnformattedValue() {\r
+ return tryGetField(20);\r
+ }\r
+ public boolean sameStructure(MonitorTextGridResult other) {\r
+ Object[] fields = getFields();\r
+ Object[] otherFields = other.getFields();\r
+ int level = getLevel();\r
+ if (fields.length != otherFields.length)\r
+ return false;\r
+ for(int i=0;i<2;i++) if(!ObjectUtils.objectEquals(fields[i],otherFields[i])) return false;\r
+ for(int i=3;i<level;i++) if(!ObjectUtils.objectEquals(fields[i],otherFields[i])) return false;\r
+ return true;\r
+ }\r
+ \r
+ public MonitorTextGridResult withValue(Object unformattedValue, String value) {\r
+ return withValue(unformattedValue, value, false);\r
+ }\r
+\r
+ public MonitorTextGridResult withValue(Object unformattedValue, String value, boolean pending) {\r
+ boolean hasValue = unformattedValue != null;\r
+ Object[] fs = Arrays.copyOf(getFields(), hasValue ? 21 : 20, Object[].class);\r
+ fs[2] = value;\r
+ fs[19] = pending;\r
+ if (hasValue)\r
+ fs[20] = unformattedValue;\r
+ return new MonitorTextGridResult(fs);\r
+ }\r
+\r
+ public static MonitorTextGridResult make(ReadGraph graph, Resource element, int index, String id, String label, String value, String unit) throws DatabaseException {\r
+ AffineTransform transform = DiagramGraphUtil.getAffineTransform(graph, element);\r
+ Vec2d offset = DiagramGraphUtil.getOffset(graph, element);\r
+ MonitorTextGridResult.B b = new MonitorTextGridResult.B(index, 1.0, 0.0);\r
+ return new MonitorTextGridResult(id, label, value, unit, true, true, 0.0, null, null, null, transform, offset, null, null, null, null, b, null, null);\r
+ }\r
+ \r
+}
\ No newline at end of file