]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.spreadsheet/src/org/simantics/spreadsheet/synchronization/LineUpdater.java
Adopt spreadsheet changes made in Balas development
[simantics/platform.git] / bundles / org.simantics.spreadsheet / src / org / simantics / spreadsheet / synchronization / LineUpdater.java
diff --git a/bundles/org.simantics.spreadsheet/src/org/simantics/spreadsheet/synchronization/LineUpdater.java b/bundles/org.simantics.spreadsheet/src/org/simantics/spreadsheet/synchronization/LineUpdater.java
new file mode 100644 (file)
index 0000000..95c601b
--- /dev/null
@@ -0,0 +1,50 @@
+package org.simantics.spreadsheet.synchronization;
+
+import java.util.Collection;
+import java.util.Map;
+
+import org.simantics.databoard.adapter.AdaptException;
+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 LineUpdater extends ModuleUpdaterBase<SheetLineComponent> {
+
+    public LineUpdater(String id) {
+        super(id);
+        addPropertyUpdateRule(new PropertyUpdateRule<SheetLineComponent>() {
+            @Override
+            public String getPropertyName() {
+                return "content";
+            }
+            @Override
+            public void apply(ModuleUpdateContext<SheetLineComponent> context, boolean isCreating,
+                    Map<String, Variant> propertyMap, Map<String, Collection<String>> connectionMap, Variant value) {
+//                System.err.println("LineUpdater.apply " + value);
+                LineCommandBuilder builder = context.<LineCommandBuilder>getConcreteCommand();
+                try {
+                    LineContentBean valuee = (LineContentBean) value.getValue(LineContentBean.BINDING);
+                    builder.bean = valuee;
+                } catch (AdaptException e) {
+                    e.printStackTrace();
+                } catch (ClassCastException e) {
+                    e.printStackTrace();
+                }
+            }
+        });
+    }
+
+    @Override
+    public CommandBuilder createAddCommandBuilder(String name) {
+        return new LineCommandBuilder(name, false);
+    }
+
+    @Override
+    public CommandBuilder createUpdateCommandBuilder(String name) {
+        return new LineCommandBuilder(name, true);
+    }
+
+}
\ No newline at end of file