1 package org.simantics.diagram.flag;
3 import java.util.ArrayList;
5 import org.simantics.databoard.Bindings;
6 import org.simantics.db.Resource;
7 import org.simantics.db.WriteGraph;
8 import org.simantics.db.exception.DatabaseException;
9 import org.simantics.diagram.stubs.DiagramResource;
10 import org.simantics.scl.runtime.tuple.Tuple2;
12 public class IOTablesInfo {
13 public static final IOTablesInfo EMPTY = new IOTablesInfo();
15 ArrayList<IOTableInfo> tables = new ArrayList<IOTableInfo>();
17 public Tuple2 getBindingRef(double x, double y) {
18 for(IOTableInfo table : tables) {
19 if(x < table.x || x > table.x + table.width)
21 return new Tuple2(table.name, (int)((y-table.y)/table.rowHeight));
26 public boolean updateBinding(WriteGraph graph, DiagramResource DIA, Resource flagResource, double flagX, double flagY) throws DatabaseException {
27 Tuple2 bindingRef = getBindingRef(flagX, flagY);
29 if(bindingRef != null) {
30 graph.claimLiteral(flagResource, DIA.Flag_HasIOTableBinding, (String)bindingRef.c0, Bindings.STRING);
31 graph.claimLiteral(flagResource, DIA.Flag_HasIOTableRowIndex, (Integer)bindingRef.c1, Bindings.INTEGER);
35 String currentBinding = graph.getPossibleRelatedValue(flagResource, DIA.Flag_HasIOTableBinding);
36 if(currentBinding != null && !currentBinding.isEmpty()) {
37 graph.claimLiteral(flagResource, DIA.Flag_HasIOTableBinding, "", Bindings.STRING);
38 double[] transform = graph.getRelatedValue(flagResource, DIA.HasTransform, Bindings.DOUBLE_ARRAY);
41 graph.claimLiteral(flagResource, DIA.HasTransform, transform);