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;
@Override
public void setValue(WriteGraph graph, Variable context, Object value, Binding binding) throws DatabaseException {
- System.out.println("contentValueAccessor.context=" + context.getURI(graph));
if(value instanceof String) {
// Expressions are given as string
} else {
Variable cell = context.getParent(graph);
- System.out.println("setValue : " + cell.getURI(graph));
String formula = text.substring(1);
Variant v = new Variant(ExcelFormula.BINDING, new ExcelFormula(formula));
Layer0Utils.claimLiteral(graph, cell.getRepresents(graph), SHEET.Cell_content, SHEET.Cell_content_Inverse, Layer0.getInstance(graph).Variant, v, Bindings.VARIANT);
-
+
}
} else {
private void setValueToEngine(WriteGraph graph, Variable cell, Variable context, Object value, Binding binding) throws DatabaseException {
Variable sheet = cell.getParent(graph);
- if(Bindings.STRING.equals(binding) && !(value instanceof String))
- System.err.println("asd");
-
SpreadsheetResource SHEET = SpreadsheetResource.getInstance(graph);
while(!sheet.getType(graph).equals(SHEET.Spreadsheet)) {
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
return super.getVariable(graph, context, name);
-// TMap<String, Variable> map = new THashMap<String, Variable>();
-// getVariables(graph, context, map);
-// return map.get(name);
-
}
@Override
public Map<String, Variable> getVariables(ReadGraph graph, Variable context, Map<String, Variable> map) throws DatabaseException {
- System.err.println("getVariables " + context.getURI(graph));
-
if(ProxyVariables.isProxy(graph, context))
return StandardChildDomainChildren.getStandardChildDomainChildVariables(graph, context, Collections.emptyMap(), map);
}
};
+
+ 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);
+ }
- SpreadsheetUtils.schedule(transaction, new WriteRequest() {
+ @Override
+ public void copy(final Transaction<Write> transaction, final String location, final MutableVariant variant, Consumer<?> callback) {
+
+ 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();
}
@SCLValue(type = "ReadGraph -> Resource -> Variable -> CellEditor")
public static CellEditor<Write> textCellEditor(ReadGraph graph, Resource resource, final Variable context_) throws DatabaseException {
- System.out.println("Context URI : " + context_.getURI(graph));
Variable cells = context_.getParent(graph);
- System.out.println("Cell URI : " + cells.getURI(graph));
return new GraphCellEditorAdapter(cells) {
if (runCell != null)
runCell.setPropertyValue(graph, SHEET.Cell_content, value, Bindings.VARIANT);
} else if(ClientModel.CONTENT_EXPRESSION.equals(property)) {
- System.err.println("cell: " + cell.getURI(graph));
cell.setPropertyValue(graph, SHEET.Cell_content, value, Bindings.STRING);
Variable runCell = null;
Object transactionContext = transaction.getContext();
}
if (runCell != null) {
- System.out.println("All.edit " + runCell.getURI(graph));
runCell.setPropertyValue(graph, SHEET.Cell_content, value, Bindings.VARIANT);
}
}
runCell = Variables.switchRealization(graph, cell, context.getRepresents(graph), context);
}
- //Variant content = cell.getPropertyValue(graph, SHEET.Cell_content, Bindings.VARIANT);
Object object = cell.getPropertyValue(graph, SHEET.Cell_content);
Variant content = null;
if (object instanceof Variant) {