]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetCell.java
Adopt spreadsheet changes made in Balas development
[simantics/platform.git] / bundles / org.simantics.spreadsheet.graph / src / org / simantics / spreadsheet / graph / SpreadsheetCell.java
diff --git a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetCell.java b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetCell.java
deleted file mode 100644 (file)
index 0ee66cf..0000000
+++ /dev/null
@@ -1,224 +0,0 @@
-package org.simantics.spreadsheet.graph;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-
-import org.simantics.spreadsheet.graph.formula.FormulaError2;
-import org.simantics.spreadsheet.graph.formula.SpreadsheetEvaluationEnvironment;
-import org.simantics.spreadsheet.graph.parser.ast.AstValue;
-import org.simantics.spreadsheet.resource.SpreadsheetResource;
-import org.simantics.spreadsheet.util.SpreadsheetUtils;
-
-public class SpreadsheetCell implements SpreadsheetElement, SheetNode {
-
-       private static final long serialVersionUID = 6616793596542239339L;
-
-       public static SpreadsheetCell EMPTY;
-       
-       static {
-           EMPTY = new SpreadsheetCell(null, -1);
-           EMPTY.setContent("");
-           EMPTY.setStyle(SpreadsheetStyle.empty().getStyleId());
-       }
-       
-       private boolean inProgress = false;
-       private int iterations = 0;
-       
-       final private SpreadsheetLine line;
-       final private int column;
-       int style;
-       Object content;
-       final private Map<String, SheetNode> properties;
-       
-       public SpreadsheetCell(SpreadsheetLine line, int column) {
-               this.properties = createProperties();
-               this.line = line;
-               this.column = column;
-       }
-
-       //All SpreadsheetCells have these properties - create them when object is created
-       private Map<String, SheetNode> createProperties() {
-           Map<String, SheetNode> p = new HashMap<>();     
-           p.put("typeURI", new SpreadsheetTypeNode(SpreadsheetResource.URIs.Cell));
-           p.put("content", new SpreadsheetCellContent(this));
-        p.put("style", new SpreadsheetCellStyle(this));
-        p.put("editable", new SpreadsheetCellEditable(this));
-        return p;
-       }
-       
-    public boolean hasExpression() {
-               return content instanceof SpreadsheetFormula || content instanceof SpreadsheetSCLConstant; 
-       }
-       
-       public void setContent(Object newContent) {
-//       if(newContent != null) {
-//            if (!(newContent instanceof Serializable)) {
-//                throw new AssertionError("content not instanceof Serializable but it is " + newContent.getClass().getSimpleName());
-//            }
-//        }
-           if (GraphUI.DEBUG)
-               System.out.println("SpreadsheetCell.setContent "+ this + " " + newContent);
-               this.content = newContent;
-       }
-
-       @Override
-       public String getName() {
-               return SpreadsheetUtils.cellName(line.row, column);
-       }
-
-       @Override
-       public Map<?, ?> getChildren() {
-               return Collections.emptyMap();
-       }
-       
-       private static String[] keys = { "typeURI", "content" };
-       
-       @Override
-       public Map<String, SheetNode> getProperties() {
-           if (GraphUI.DEBUG)
-               System.out.println("SpreadsheetCell.getProperties: " + this + " " + content + " " + style);
-           return properties; //Return this SpreadsheetCells's properties, rather than a new HashMap
-       }
-       
-       public SpreadsheetBook getBook() {
-               return line.getEngine().getBook();
-       }
-
-       public SpreadsheetEngine getEngine() {
-               return line.getEngine();
-       }
-
-       public <T> T evaluate(SpreadsheetEvaluationEnvironment env) {
-               return evaluate(env, null);
-       }
-
-       public <T> T evaluate(SpreadsheetEvaluationEnvironment env, CellValueVisitor caller) {
-//         System.err.println(getEngine().getName() + ":" + getName() + ": evaluate");
-               if(caller != null)
-                       caller.addReference(makeReferenceKey());
-               if(content instanceof SpreadsheetFormula) {
-                       SpreadsheetFormula f = (SpreadsheetFormula)content;
-                       if(f.result == null) {
-                               CellValueVisitor visitor = new CellValueVisitor(env, this);
-                               AstValue value = ((SpreadsheetFormula)content).value;
-                               if(this.inProgress == true) this.iterations++;
-                               
-                               if(!env.getBook().isIterationEnabled()){
-                                       if(this.inProgress == false){
-                                               this.inProgress = true;
-                                               f.result = value.accept(visitor);
-                                       }
-                                       else f.result = FormulaError2.CIRCULAR_REF.getString();
-                               }
-                               else if(this.iterations<env.iterationLimit){
-                                       this.inProgress = true;
-                                       f.result = value.accept(visitor);
-                               }
-                               else {
-                                       if(f.result==null)
-                                               f.result = 0.0;
-                               }
-                               
-                               env.getBook().registerReferences(makeReferenceKey(), visitor.getReferences());
-                       }
-                       this.inProgress = false;
-                       this.iterations = 0;
-                       return (T)f.result;
-               } else if (content instanceof SpreadsheetSCLConstant) {
-                   SpreadsheetSCLConstant sclConstant = (SpreadsheetSCLConstant) content;
-                   return (T) sclConstant.content;
-               } else {
-                       this.inProgress = false;
-                       return (T)content;
-               }
-       }
-       
-       public long makeReferenceKey() {
-               SpreadsheetBook book = getBook();
-               SpreadsheetEngine engine = getEngine();
-               long engineIndex = book.getEngineIndex(engine);
-               long row = line.row;
-               long col = column;
-               return (engineIndex << 40) + (row << 20) + col; 
-       }
-       
-       public void invalidate() {
-               getEngine().rangeCache = null;
-               if(content instanceof SpreadsheetFormula) {
-                       SpreadsheetFormula f = (SpreadsheetFormula)content;
-                       f.result = null;
-               }
-       }
-
-       @Override
-       public void accept(SpreadsheetVisitor v) {
-               v.visit(this);
-       }
-
-    @Override
-    public Optional<SpreadsheetElement> getParent() {
-        return Optional.of(line);
-    }
-
-    @Override
-    public List<SpreadsheetElement> getSpreadsheetChildren() {
-        return Collections.emptyList();
-    }
-
-    @Override
-    public void remove(SpreadsheetElement child) {
-        // TODO Auto-generated method stub
-        
-    }
-
-    @Override
-    public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + column;
-        result = prime * result + ((line == null) ? 0 : line.hashCode());
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj)
-            return true;
-        if (obj == null)
-            return false;
-        if (getClass() != obj.getClass())
-            return false;
-        SpreadsheetCell other = (SpreadsheetCell) obj;
-        if (column != other.column)
-            return false;
-        if (line == null) {
-            if (other.line != null)
-                return false;
-        } else if (!line.equals(other.line))
-            return false;
-        return true;
-    }
-
-    public void setStyle(int styleId) {
-        this.style = styleId;
-    }
-
-    public int getStyle() {
-        return style;
-    }
-
-    public Object getContent() {
-        return content;
-    }
-    
-    public static SpreadsheetCell empty(SpreadsheetLine line, int column) {
-        SpreadsheetCell cell =  new SpreadsheetCell(line, column);
-        cell.setContent("");
-        cell.setStyle(SpreadsheetStyle.empty().getStyleId());
-        return cell;
-    }
-
-}