package org.simantics.spreadsheet.graph; import org.simantics.spreadsheet.SpreadsheetVisitor; import org.simantics.spreadsheet.solver.SpreadsheetBook; import org.simantics.spreadsheet.solver.SpreadsheetCell; import org.simantics.spreadsheet.solver.SpreadsheetEngine; import org.simantics.spreadsheet.solver.SpreadsheetLine; import org.simantics.spreadsheet.solver.SpreadsheetLines; import org.simantics.spreadsheet.solver.formula.SpreadsheetEvaluationEnvironment; public class EvaluateAll implements SpreadsheetVisitor { final SpreadsheetEvaluationEnvironment env; public EvaluateAll(SpreadsheetBook book) { this.env = SpreadsheetEvaluationEnvironment.getInstance(book); } @Override public void visit(SpreadsheetBook book) { for(SpreadsheetEngine engine : book.sheets) engine.accept(this); } @Override public void visit(SpreadsheetEngine engine) { engine.lines.accept(this); } @Override public void visit(SpreadsheetLines node) { for(SpreadsheetLines child : node.nodes.values()) child.accept(this); for(SpreadsheetLine line : node.lines.values()) line.accept(this); } @Override public void visit(SpreadsheetLine line) { for(SpreadsheetCell cell : line.cells) cell.accept(this); } @Override public void visit(SpreadsheetCell cell) { try { cell.evaluate(env, null); } catch (Throwable t) { t.printStackTrace(); } } }