X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.spreadsheet.graph%2Fsrc%2Forg%2Fsimantics%2Fspreadsheet%2Fgraph%2FSpreadsheetBook.java;h=d64d008edf713b1cfaf33a3e0fe28261bf188447;hp=277b10cb0635f6e8401f78069a175f56104bc037;hb=5915c1bbd6d0c6125aa3c815c7843339190f28e4;hpb=81169c54002f4a9f89db5b6821f3e5a70dad2da7 diff --git a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetBook.java b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetBook.java index 277b10cb0..d64d008ed 100644 --- a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetBook.java +++ b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetBook.java @@ -6,13 +6,18 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Set; +import org.simantics.databoard.Bindings; +import org.simantics.databoard.binding.Binding; import org.simantics.databoard.binding.mutable.Variant; import org.simantics.db.exception.DatabaseException; -import org.simantics.db.layer0.StandardEngine; +import org.simantics.simulator.toolkit.StandardNodeManagerSupport; +import org.simantics.simulator.variable.exceptions.NodeManagerException; import org.simantics.spreadsheet.graph.formula.SpreadsheetEvaluationEnvironment; import org.simantics.spreadsheet.graph.synchronization.LineNodeUpdater; import org.simantics.spreadsheet.graph.synchronization.LineUpdater; @@ -33,7 +38,7 @@ import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; import it.unimi.dsi.fastutil.longs.LongArraySet; import it.unimi.dsi.fastutil.longs.LongLinkedOpenHashSet; -public class SpreadsheetBook implements SpreadsheetElement, StandardEngine, Serializable, SheetNode, Solver, SolverNameUtil, ComponentFactory, ModuleUpdaterFactoryBase { +public class SpreadsheetBook implements StandardNodeManagerSupport, SpreadsheetElement, Serializable, SheetNode, Solver, SolverNameUtil, ComponentFactory, ModuleUpdaterFactoryBase { private static final long serialVersionUID = 7417208688311691396L; @@ -90,7 +95,17 @@ public class SpreadsheetBook implements SpreadsheetElement invalidate(SpreadsheetCell cell) { + //Recursively find all SpreadsheetCells, invalidate them and return them all as a set + public Set invalidate(SpreadsheetCell cell) { + Set result = new HashSet<>(); + result.add(cell); + cell.invalidate(); + long refKey = cell.makeReferenceKey(); + AbstractLongSet refs = referenceMap.remove(refKey); + if(refs == null) return result; + for(long ref : refs) { + long sheet = ref >> 40; + long row = (ref >> 20) & 0xFFFFF; + long col = (ref) & 0xFFFFF; + SpreadsheetCell referer = get(sheets.get((int)sheet), (int)row, (int)col); + result.addAll(invalidate(referer)); + } + return result; + } + + @Deprecated + public List invalidateShallow(SpreadsheetCell cell) { ArrayList result = new ArrayList<>(); result.add(cell); cell.invalidate();