]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.spreadsheet.ui/src/org/simantics/spreadsheet/ui/TextTableCellEditor.java
Adopt spreadsheet changes made in Balas development
[simantics/platform.git] / bundles / org.simantics.spreadsheet.ui / src / org / simantics / spreadsheet / ui / TextTableCellEditor.java
index b9920415ff31c3b7ef2357633275e60dc439f967..f84e0ef84747e402696c6fa6af2a0000a471231d 100644 (file)
@@ -27,6 +27,7 @@ import org.simantics.databoard.Bindings;
 import org.simantics.databoard.binding.mutable.Variant;
 import org.simantics.spreadsheet.CellEditor;
 import org.simantics.spreadsheet.ClientModel;
+import org.simantics.spreadsheet.Spreadsheets;
 import org.simantics.spreadsheet.util.SpreadsheetUtils;
 
 class TextTableCellEditor extends DefaultCellEditor implements SpreadsheetCellEditor {
@@ -135,8 +136,15 @@ class TextTableCellEditor extends DefaultCellEditor implements SpreadsheetCellEd
         
        String str = (String)getCellEditorValue();
 
-       String cellName = SpreadsheetUtils.cellName(row, column);
-       String expression = clientModel.getPossiblePropertyAt(cellName, ClientModel.CONTENT_EXPRESSION);
+       String cellName = Spreadsheets.cellName(row, column);
+       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 +153,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);
+                       editor.edit(null, Spreadsheets.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);
+                       editor.edit(null, Spreadsheets.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
                }
         
     }