X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.browsing.ui.nattable%2Fsrc%2Forg%2Fsimantics%2Fbrowsing%2Fui%2Fnattable%2FTreeNode.java;fp=bundles%2Forg.simantics.browsing.ui.nattable%2Fsrc%2Forg%2Fsimantics%2Fbrowsing%2Fui%2Fnattable%2FTreeNode.java;h=529d02f4916c3745ae9e6a56de4b51c296d0f425;hb=d7ce5ab37a70cf207e3bfe0045c0df3f1fb98415;hp=4f9273d9120cfd48547986b1fcb630120fe98582;hpb=d613530ca19459bcc8a75015ec28533968b92c2d;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.browsing.ui.nattable/src/org/simantics/browsing/ui/nattable/TreeNode.java b/bundles/org.simantics.browsing.ui.nattable/src/org/simantics/browsing/ui/nattable/TreeNode.java index 4f9273d91..529d02f49 100644 --- a/bundles/org.simantics.browsing.ui.nattable/src/org/simantics/browsing/ui/nattable/TreeNode.java +++ b/bundles/org.simantics.browsing.ui.nattable/src/org/simantics/browsing/ui/nattable/TreeNode.java @@ -295,6 +295,25 @@ public class TreeNode implements IAdaptable { manager = null; } + /** + * Fast dispose is used to wipe the whole tree. + * + * ContextToNodeMap is cleared with one command, so we do not need to remove nodes one by one from the map. + */ + public void fastDispose() { + if (DEBUG) System.out.println("dispose " + this); + parent = null; + for (TreeNode n : children) { + n.fastDispose(); + } + clearCache(); + children.clear(); + context = null; + explorerContext = null; + manager.dispose(); + manager = null; + } + private void clearCache() { if (explorerContext != null) { GECache2 cache = explorerContext.cache;