]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/TextTableCellEditor.java
Spreadsheet updates cell values properly
[simantics/platform.git] / bundles / org.simantics.spreadsheet.ui / src / org / simantics / spreadsheet / ui / TextTableCellEditor.java
index b9920415ff31c3b7ef2357633275e60dc439f967..24fade56ae6a839b93195f7e723a699c42475256 100644 (file)
@@ -136,7 +136,14 @@ class TextTableCellEditor extends DefaultCellEditor implements SpreadsheetCellEd
        String str = (String)getCellEditorValue();
 
        String cellName = SpreadsheetUtils.cellName(row, column);
-       String expression = clientModel.getPossiblePropertyAt(cellName, ClientModel.CONTENT_EXPRESSION);
+       Object expressionO = clientModel.getPossiblePropertyAt(cellName, ClientModel.CONTENT_EXPRESSION);
+       String expression = null;
+       if(expressionO instanceof String) {
+               expression = (String)expressionO;
+       } else if(expressionO instanceof Variant) {
+               expression = ((Variant)expressionO).getValue().toString();
+       }
+       
                if(expression == null) {
                        Variant content = SpreadsheetUtils.getSafeClientVariant(clientModel, cellName, ClientModel.CONTENT);
                        if(content != null)
@@ -145,14 +152,19 @@ class TextTableCellEditor extends DefaultCellEditor implements SpreadsheetCellEd
                                expression = "";
                } else {
                        expression = "=" + expression;
-               }        
+               }
+               //Don't update if the expression hasn't changed
         if (expression.equals(str))
                return;
         
         if (str.startsWith("=")) {
                        editor.edit(null, SpreadsheetUtils.cellName(row, column), ClientModel.CONTENT_EXPRESSION, str, Bindings.STRING, null);
+               //Update cell expression
+                       clientModel.setProperty(cellName, ClientModel.CONTENT_EXPRESSION, str);
                } else {
                        editor.edit(null, SpreadsheetUtils.cellName(row, column), Variant.ofInstance(str), null);
+                       //Update cell expression
+                       clientModel.setProperty(cellName, ClientModel.CONTENT_EXPRESSION, null); //If not an expression, then the expression property is null
                }
         
     }