X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Frequests%2FNode.java;h=721c08e549e9fd5bd22137e961c56ad8b94c954a;hb=HEAD;hp=3d52b2604df683a08b8f610420ec2f17d023e6cf;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.modeling/src/org/simantics/modeling/requests/Node.java b/bundles/org.simantics.modeling/src/org/simantics/modeling/requests/Node.java index 3d52b2604..721c08e54 100644 --- a/bundles/org.simantics.modeling/src/org/simantics/modeling/requests/Node.java +++ b/bundles/org.simantics.modeling/src/org/simantics/modeling/requests/Node.java @@ -15,7 +15,9 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.simantics.db.Resource; import org.simantics.db.common.ResourceArray; @@ -27,15 +29,12 @@ import org.simantics.utils.strings.AlphanumComparator; */ public class Node implements Comparable { - public static final Comparator CASE_INSENSITIVE_COMPARATOR = new Comparator() { - @Override - public int compare(Node o1, Node o2) { - return AlphanumComparator.CASE_INSENSITIVE_COMPARATOR.compare(o1.getName(), o2.getName()); - } - }; + public static final Comparator CASE_INSENSITIVE_COMPARATOR = + (o1, o2) -> AlphanumComparator.CASE_INSENSITIVE_COMPARATOR.compare(o1.getName(), o2.getName()); private final Node parent; private final List children = new ArrayList(); + private final List unmodifiableChildren = Collections.unmodifiableList(children); /** * May be null if there is no diagram for this node. @@ -44,10 +43,10 @@ public class Node implements Comparable { private final ResourceArray definingResource; // i.e. Composite private final String name; -// private String[] partOfGroups = {}; - private PageDesc pageDesc; - private String RVI; + private String rvi; + + private Map properties; /** * @param parent @@ -67,6 +66,13 @@ public class Node implements Comparable { parent.addChild(this); } + public Node cloneWithoutChildren(Node parent) { + Node clone = new Node(parent, name, diagram, definingResource.resources); + clone.setRVI(rvi); + clone.setPageDesc(pageDesc); + return clone; + } + public Node getParent() { return parent; } @@ -100,33 +106,44 @@ public class Node implements Comparable { } public Collection getChildren() { - return Collections.unmodifiableCollection(children); + return unmodifiableChildren; } -// public void setPartOfGroups(Collection groups) { -// this.partOfGroups = groups.toArray(new String[groups.size()]); -// } -// -// public String[] getPartOfGroups() { -// return partOfGroups; -// } - public void setPageDesc(PageDesc pageDesc) { this.pageDesc = pageDesc; } - public void setRVI(String RVI) { - this.RVI = RVI; + public void setRVI(String rvi) { + this.rvi = rvi; } public String getRVI() { - return RVI; + return rvi; } public PageDesc getPageDesc() { return pageDesc; } + /** + * @param key + * @param value + * @return this node for chained initialization + */ + public Node setProperty(String key, Object value) { + if (properties == null) + properties = new HashMap<>(); + properties.put(key, value); + return this; + } + + @SuppressWarnings("unchecked") + public T getProperty(String key) { + if (properties == null) + return null; + return (T) properties.get(key); + } + @Override public int compareTo(Node o) { int ret = name.compareTo(o.name);