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%2FSpreadsheetNodeManager.java;h=caa6dc23f4602d10589187018c99f66a9f1f9a24;hp=56985d16c948c6754551484294381184e2eb1b62;hb=5915c1bbd6d0c6125aa3c815c7843339190f28e4;hpb=dfa52ccefe2e4c36965ad3ccf5e19b778cae0d99 diff --git a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetNodeManager.java b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetNodeManager.java index 56985d16c..caa6dc23f 100644 --- a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetNodeManager.java +++ b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetNodeManager.java @@ -1,8 +1,11 @@ package org.simantics.spreadsheet.graph; import java.util.Collections; +import java.util.HashSet; +import java.util.Map; import java.util.Set; +import org.simantics.databoard.binding.Binding; import org.simantics.layer0.Layer0; import org.simantics.simulator.toolkit.StandardNodeManager; import org.simantics.simulator.variable.exceptions.NodeManagerException; @@ -43,5 +46,36 @@ public class SpreadsheetNodeManager extends StandardNodeManager dirtyNodeContents = findDirtyNodeContents(node); + super.setValueAndFireSelectedListeners(node, value, binding, dirtyNodeContents); + } + + //Find the cells that are used by this cell and their SpreadsheetContents, so that they can be marked as dirty later + public Set findDirtyNodeContents(SheetNode node){ + Set dirty = new HashSet<>(); + + SpreadsheetCell sscell = null; + if(node instanceof SpreadsheetCell) { + sscell = (SpreadsheetCell)node; + } else if (node instanceof SpreadsheetCellContent) { + sscell = ((SpreadsheetCellContent)node).cell; + } + + if(sscell != null) { + Set result = ((SpreadsheetRealm)super.getRealm()).getEngine().invalidate(sscell); + dirty.addAll(result); + } + + Set dirtyNodeContents = new HashSet<>(); + for(SheetNode cell : dirty) { + Map properties = cell.getProperties(); + dirtyNodeContents.add((SpreadsheetCellContent)properties.get("content")); + } + + return dirtyNodeContents; + } }