import org.simantics.spreadsheet.ClientModel;
import org.simantics.spreadsheet.Range;
import org.simantics.spreadsheet.Spreadsheets;
+import org.simantics.spreadsheet.Transaction;
import org.simantics.spreadsheet.graph.SpreadsheetGraphUtils;
import org.simantics.spreadsheet.graph.SpreadsheetNodeManager;
import org.simantics.spreadsheet.graph.SpreadsheetSessionManager;
StandardRealm<SheetNode, SpreadsheetBook> realm = SpreadsheetSessionManager.getInstance().getOrCreateRealm(graph, sessionName);
SpreadsheetBook book = realm.getEngine();
SpreadsheetCell sc = book.get(sheet.getName(graph), r.startRow, r.startColumn);
- sc.setContent(value);
+ //sc.setContent(value);
realm.asyncExec(new Runnable() {
@Override
}
};
+
+ public static class DefaultSheetCellEditor extends GraphCellEditorAdapter {
+
+ final public Variable sheet;
+
+ public DefaultSheetCellEditor(Variable sheet, Variable cell) {
+ super(cell);
+ this.sheet = sheet;
+ }
+ @Override
+ public <T> void edit(final Transaction<Write> transaction, final String location, final String property, final T value, final Binding binding, Consumer<?> callback) {
- @SCLValue(type = "ReadGraph -> Resource -> Variable -> CellEditor")
- public static CellEditor<Write> defaultSheetCellEditor(ReadGraph graph, Resource resource, final Variable context_) throws DatabaseException {
-
- final Variable sheet = context_.getParent(graph);
-
- return new GraphCellEditorAdapter(null) {
+ SpreadsheetUtils.schedule(transaction, new WriteRequest() {
- @Override
- public <T> void edit(final Transaction<Write> transaction, final String location, final String property, final T value, final Binding binding, Consumer<?> callback) {
+ @Override
+ public void perform(WriteGraph graph) throws DatabaseException {
+ CellEditor<Write> editor = getPossibleCellEditor(graph, location, value == null ? null : new Variant(binding, value));
+ if (editor == null)
+ return;
+ editor.edit(transaction, location, property, value, binding, callback);
+ }
+ });
- SpreadsheetUtils.schedule(transaction, new WriteRequest() {
+ }
- @Override
- public void perform(WriteGraph graph) throws DatabaseException {
- CellEditor<Write> editor = getPossibleCellEditor(graph, location, value == null ? null : new Variant(binding, value));
- if (editor == null)
- return;
- editor.edit(transaction, location, property, value, binding, callback);
- }
- });
+ @Override
+ public void edit(final Transaction<Write> transaction, final String location, final Variant value, Consumer<?> callback) {
+ SpreadsheetUtils.schedule(transaction, new WriteRequest() {
- }
+ @Override
+ public void perform(WriteGraph graph) throws DatabaseException {
+ CellEditor<Write> editor = getPossibleCellEditor(graph, location, value);
+ if (editor == null)
+ return;
+ editor.edit(transaction, location, value, callback);
+ }
+ });
- @Override
- public void edit(final Transaction<Write> transaction, final String location, final Variant value, Consumer<?> callback) {
- SpreadsheetUtils.schedule(transaction, new WriteRequest() {
-
- @Override
- public void perform(WriteGraph graph) throws DatabaseException {
- CellEditor<Write> editor = getPossibleCellEditor(graph, location, value);
- if (editor == null)
- return;
- editor.edit(transaction, location, value, callback);
- }
- });
+ }
- }
+ private CellEditor<Write> getPossibleCellEditor(WriteGraph graph, String location, Variant value) throws DatabaseException {
+ SpreadsheetResource SHEET = SpreadsheetResource.getInstance(graph);
+ Range range = Spreadsheets.decodePossibleCellAbsolute(location);
+ if(range == null) return null; //No editor found
- private CellEditor<Write> getPossibleCellEditor(WriteGraph graph, String location, Variant value) throws DatabaseException {
- SpreadsheetResource SHEET = SpreadsheetResource.getInstance(graph);
- Range range = Spreadsheets.decodePossibleCellAbsolute(location);
- if(range == null) return null; //No editor found
-
- List<Variable> cells = SpreadsheetGraphUtils.possibleConfigurationCellVariables(graph, sheet, range);
- if (cells.isEmpty()) {
- if (value == null) {
- return null;
- } else {
- cells = SpreadsheetGraphUtils.getOrCreateConfigurationCellVariables(graph, sheet, range);
- }
+ List<Variable> cells = SpreadsheetGraphUtils.possibleConfigurationCellVariables(graph, sheet, range);
+ if (cells.isEmpty()) {
+ if (value == null) {
+ return null;
+ } else {
+ cells = SpreadsheetGraphUtils.getOrCreateConfigurationCellVariables(graph, sheet, range);
}
- if (cells.size() != 1)
- throw new DatabaseException("Can edit only one cell at a time!");
-
- return cells.iterator().next().getPropertyValue(graph, SHEET.cellEditor);
}
+ if (cells.size() != 1)
+ throw new DatabaseException("Can edit only one cell at a time!");
- @Override
- public void copy(final Transaction<Write> transaction, final String location, final MutableVariant variant, Consumer<?> callback) {
+ return cells.iterator().next().getPropertyValue(graph, SHEET.cellEditor);
+ }
+
+ @Override
+ public void copy(final Transaction<Write> transaction, final String location, final MutableVariant variant, Consumer<?> callback) {
- SpreadsheetUtils.schedule(transaction, new WriteRequest() {
+ SpreadsheetUtils.schedule(transaction, new WriteRequest() {
- @Override
- public void perform(WriteGraph graph) throws DatabaseException {
+ @Override
+ public void perform(WriteGraph graph) throws DatabaseException {
- SpreadsheetResource SHEET = SpreadsheetResource.getInstance(graph);
- Variable variable = sheet.getPossibleChild(graph, location);
- if(variable != null) {
- CellEditor<Write> editor = variable.getPossiblePropertyValue(graph, SHEET.cellEditor);
- if(editor != null) {
- editor.copy(transaction, location, variant, null);
- }
+ SpreadsheetResource SHEET = SpreadsheetResource.getInstance(graph);
+ Variable variable = sheet.getPossibleChild(graph, location);
+ if(variable != null) {
+ CellEditor<Write> editor = variable.getPossiblePropertyValue(graph, SHEET.cellEditor);
+ if(editor != null) {
+ editor.copy(transaction, location, variant, null);
}
}
+ }
- });
+ });
- }
+ }
+
+ }
- };
+
+ @SCLValue(type = "ReadGraph -> Resource -> Variable -> CellEditor")
+ public static CellEditor<Write> defaultSheetCellEditor(ReadGraph graph, Resource resource, final Variable context_) throws DatabaseException {
+
+ final Variable sheet = context_.getParent(graph);
+ return new DefaultSheetCellEditor(sheet, null);
}
if (style != null)
styleId = graph.getPossibleRelatedValue(style, SR.Style_id, Bindings.INTEGER);
if (styleId == null) {
- System.err.println("Style " + style + " has no ID or either cell "+ repr + " has no style attached to it !!");
styleId = SpreadsheetStyle.empty().getStyleId();
}
}
if (runCell != null) {
- System.out.println("All.edit " + runCell.getURI(graph));
runCell.setPropertyValue(graph, SHEET.Cell_content, value, Bindings.VARIANT);
}
}