X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.interop.update%2Fsrc%2Forg%2Fsimantics%2Finterop%2Fupdate%2Fmodel%2FUpdateNode.java;h=b786586c9a3daef1c2b562707e1b07779d107a54;hb=910cc5b113065eea0b3785e3140bb89d0fc86dd8;hp=3a7953174bd3ffb6b080af45cbe8f039ed5ced72;hpb=f13ae5d0bf1d136232cbce22b1a31be429ca2b54;p=simantics%2Finterop.git diff --git a/org.simantics.interop.update/src/org/simantics/interop/update/model/UpdateNode.java b/org.simantics.interop.update/src/org/simantics/interop/update/model/UpdateNode.java index 3a79531..b786586 100644 --- a/org.simantics.interop.update/src/org/simantics/interop/update/model/UpdateNode.java +++ b/org.simantics.interop.update/src/org/simantics/interop/update/model/UpdateNode.java @@ -12,6 +12,7 @@ import org.simantics.layer0.Layer0; public class UpdateNode { + private UpdateNode parent; private UpdateStatus status; private UpdateOp op; private Resource r; @@ -69,6 +70,7 @@ public class UpdateNode { public void addChild(UpdateNode node) { children.add(node); + node.parent = this; if (op != null && node.op != null) { if (!op.getSubOps().contains(node.op)) { op.addSubOp(node.op); @@ -111,6 +113,21 @@ public class UpdateNode { this.visible = visible; if (op != null) op.visible = visible; + if (visible) { + if (parent != null && !parent.visible) + parent.setVisible(true); + } else { + for (UpdateNode n : children) + n.setVisible(false); + } } + + public void setAllVisible(boolean visible) { + this.visible = visible; + if (op != null) + op.visible = visible; + for (UpdateNode n : children) + n.setAllVisible(visible); + } }