1 package org.simantics.spreadsheet.graph.celleditor;
\r
3 import java.util.function.Consumer;
\r
5 import org.simantics.databoard.binding.Binding;
\r
6 import org.simantics.databoard.binding.mutable.MutableVariant;
\r
7 import org.simantics.databoard.binding.mutable.Variant;
\r
8 import org.simantics.db.WriteGraph;
\r
9 import org.simantics.db.common.request.WriteRequest;
\r
10 import org.simantics.db.exception.DatabaseException;
\r
11 import org.simantics.db.layer0.util.Layer0Utils;
\r
12 import org.simantics.db.layer0.variable.Variable;
\r
13 import org.simantics.db.request.Write;
\r
14 import org.simantics.spreadsheet.CellEditor;
\r
15 import org.simantics.spreadsheet.ClientModel.OperationMode;
\r
16 import org.simantics.spreadsheet.util.SpreadsheetUtils;
\r
18 public class GraphCellEditorAdapter implements CellEditor<Write> {
\r
20 protected final Variable cell;
\r
22 public GraphCellEditorAdapter(Variable cell) {
\r
26 public <T> void edit(WriteGraph graph, Transaction<Write> transaction, String location, String property, T value, Binding binding) throws DatabaseException {
\r
30 public <T> void edit(WriteGraph graph, Transaction<Write> transaction, String location, Variant value) throws DatabaseException {
\r
34 public <T> void copy(WriteGraph graph, Transaction<Write> transaction, String location, MutableVariant variant) throws DatabaseException {
\r
39 public <T> void edit(Transaction<Write> transaction, final String location, final String property, final T value, final Binding binding, Consumer<?> callback) {
\r
40 SpreadsheetUtils.schedule(transaction, new WriteRequest() {
\r
43 public void perform(WriteGraph graph) throws DatabaseException {
\r
44 edit(graph, transaction, location, property, value, binding);
\r
45 Layer0Utils.addCommentMetadata(graph, "Modified cell in location " + location + " with value " + value);
\r
46 if (callback != null)
\r
47 callback.accept(null);
\r
54 public void edit(Transaction<Write> transaction, final String location, final Variant value, Consumer<?> callback) {
\r
55 SpreadsheetUtils.schedule(transaction, new WriteRequest() {
\r
58 public void perform(WriteGraph graph) throws DatabaseException {
\r
59 edit(graph, transaction, location, value);
\r
60 Layer0Utils.addCommentMetadata(graph, "Modified cell on location " + location + " with value " + value);
\r
61 if (callback != null)
\r
62 callback.accept(null);
\r
69 public void copy(Transaction<Write> transaction, final String location, final MutableVariant variant, Consumer<?> callback) {
\r
70 SpreadsheetUtils.schedule(transaction, new WriteRequest() {
\r
73 public void perform(WriteGraph graph) throws DatabaseException {
\r
74 copy(graph, transaction, location, variant);
\r
81 public Transaction<Write> startTransaction(OperationMode mode) {
\r
82 return SpreadsheetUtils.startTransaction(mode);
\r