]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.spreadsheet/src/org/simantics/spreadsheet/synchronization/LineNodeUpdater.java
Adopt spreadsheet changes made in Balas development
[simantics/platform.git] / bundles / org.simantics.spreadsheet / src / org / simantics / spreadsheet / synchronization / LineNodeUpdater.java
diff --git a/bundles/org.simantics.spreadsheet/src/org/simantics/spreadsheet/synchronization/LineNodeUpdater.java b/bundles/org.simantics.spreadsheet/src/org/simantics/spreadsheet/synchronization/LineNodeUpdater.java
new file mode 100644 (file)
index 0000000..7354b27
--- /dev/null
@@ -0,0 +1,53 @@
+package org.simantics.spreadsheet.synchronization;
+
+import java.util.Collection;
+import java.util.Map;
+
+import org.simantics.databoard.binding.mutable.Variant;
+import org.simantics.spreadsheet.solver.SheetLineComponent;
+import org.simantics.structural.synchronization.base.CommandBuilder;
+import org.simantics.structural.synchronization.base.ModuleUpdateContext;
+import org.simantics.structural.synchronization.base.ModuleUpdaterBase;
+import org.simantics.structural.synchronization.base.PropertyUpdateRule;
+
+public class LineNodeUpdater extends ModuleUpdaterBase<SheetLineComponent> {
+
+    public LineNodeUpdater(String id) {
+
+        super(id);
+
+        isComposite = true;
+
+        addPropertyUpdateRule(new PropertyUpdateRule<SheetLineComponent>() {
+
+            @Override
+            public String getPropertyName() {
+                return "keys";
+            }
+
+            @Override
+            public void apply(ModuleUpdateContext<SheetLineComponent> context, boolean isCreating,
+                    Map<String, Variant> propertyMap, Map<String, Collection<String>> connectionMap, Variant value) {
+
+                LinesCommandBuilder builder = context.<LinesCommandBuilder>getConcreteCommand();
+                Variant v = propertyMap.get("keys");
+                if (v != null & v.getValue() != null)
+                    builder.keys = (int[])v.getValue();
+
+            }
+
+        });
+
+    }
+
+    @Override
+    public CommandBuilder createAddCommandBuilder(String name) {
+        return new LinesCommandBuilder(name, false);
+    }
+
+    @Override
+    public CommandBuilder createUpdateCommandBuilder(String name) {
+        return new LinesCommandBuilder(name, true);
+    }
+
+}
\ No newline at end of file