--- /dev/null
+package org.simantics.spreadsheet.graph.celleditor;\r
+\r
+import java.util.function.Consumer;\r
+\r
+import org.simantics.databoard.binding.Binding;\r
+import org.simantics.databoard.binding.mutable.MutableVariant;\r
+import org.simantics.databoard.binding.mutable.Variant;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.db.common.request.WriteRequest;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.layer0.util.Layer0Utils;\r
+import org.simantics.db.layer0.variable.Variable;\r
+import org.simantics.db.request.Write;\r
+import org.simantics.spreadsheet.CellEditor;\r
+import org.simantics.spreadsheet.ClientModel.OperationMode;\r
+import org.simantics.spreadsheet.util.SpreadsheetUtils;\r
+\r
+public class GraphCellEditorAdapter implements CellEditor<Write> {\r
+\r
+ protected final Variable cell;\r
+\r
+ public GraphCellEditorAdapter(Variable cell) {\r
+ this.cell = cell;\r
+ }\r
+ \r
+ public <T> void edit(WriteGraph graph, Transaction<Write> transaction, String location, String property, T value, Binding binding) throws DatabaseException {\r
+ \r
+ }\r
+ \r
+ public <T> void edit(WriteGraph graph, Transaction<Write> transaction, String location, Variant value) throws DatabaseException {\r
+ \r
+ }\r
+ \r
+ public <T> void copy(WriteGraph graph, Transaction<Write> transaction, String location, MutableVariant variant) throws DatabaseException {\r
+ \r
+ }\r
+\r
+ @Override\r
+ public <T> void edit(Transaction<Write> transaction, final String location, final String property, final T value, final Binding binding, Consumer<?> callback) {\r
+ SpreadsheetUtils.schedule(transaction, new WriteRequest() {\r
+\r
+ @Override\r
+ public void perform(WriteGraph graph) throws DatabaseException {\r
+ edit(graph, transaction, location, property, value, binding);\r
+ Layer0Utils.addCommentMetadata(graph, "Modified cell in location " + location + " with value " + value);\r
+ if (callback != null)\r
+ callback.accept(null);\r
+ }\r
+ \r
+ });\r
+ }\r
+\r
+ @Override\r
+ public void edit(Transaction<Write> transaction, final String location, final Variant value, Consumer<?> callback) {\r
+ SpreadsheetUtils.schedule(transaction, new WriteRequest() {\r
+\r
+ @Override\r
+ public void perform(WriteGraph graph) throws DatabaseException {\r
+ edit(graph, transaction, location, value);\r
+ Layer0Utils.addCommentMetadata(graph, "Modified cell on location " + location + " with value " + value);\r
+ if (callback != null)\r
+ callback.accept(null);\r
+ }\r
+ \r
+ });\r
+ }\r
+\r
+ @Override\r
+ public void copy(Transaction<Write> transaction, final String location, final MutableVariant variant, Consumer<?> callback) {\r
+ SpreadsheetUtils.schedule(transaction, new WriteRequest() {\r
+\r
+ @Override\r
+ public void perform(WriteGraph graph) throws DatabaseException {\r
+ copy(graph, transaction, location, variant);\r
+ }\r
+ \r
+ });\r
+ }\r
+ \r
+ @Override\r
+ public Transaction<Write> startTransaction(OperationMode mode) {\r
+ return SpreadsheetUtils.startTransaction(mode);\r
+ }\r
+\r
+}\r