]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/EvaluateAll.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.spreadsheet.graph / src / org / simantics / spreadsheet / graph / EvaluateAll.java
diff --git a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/EvaluateAll.java b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/EvaluateAll.java
new file mode 100644 (file)
index 0000000..88b92b2
--- /dev/null
@@ -0,0 +1,43 @@
+package org.simantics.spreadsheet.graph;\r
+\r
+import org.simantics.spreadsheet.graph.formula.SpreadsheetEvaluationEnvironment;\r
+\r
+public class EvaluateAll implements SpreadsheetVisitor {\r
+       \r
+       final SpreadsheetEvaluationEnvironment env;\r
+       \r
+       public EvaluateAll(SpreadsheetBook book) {\r
+               this.env = SpreadsheetEvaluationEnvironment.getInstance(book);\r
+       }\r
+\r
+       @Override\r
+       public void visit(SpreadsheetBook book) {\r
+               for(SpreadsheetEngine engine : book.sheets) engine.accept(this);\r
+       }\r
+\r
+       @Override\r
+       public void visit(SpreadsheetEngine engine) {\r
+               engine.lines.accept(this);\r
+       }\r
+\r
+       @Override\r
+       public void visit(SpreadsheetLines node) {\r
+               for(SpreadsheetLines child : node.nodes.values()) child.accept(this);\r
+               for(SpreadsheetLine line : node.lines.values()) line.accept(this);\r
+       }\r
+\r
+       @Override\r
+       public void visit(SpreadsheetLine line) {\r
+               for(SpreadsheetCell cell : line.cells) cell.accept(this);\r
+       }\r
+\r
+       @Override\r
+       public void visit(SpreadsheetCell cell) {\r
+               try {\r
+                       cell.evaluate(env, null);\r
+               } catch (Throwable t) {\r
+                       t.printStackTrace();\r
+               }\r
+       }\r
+\r
+}\r