1 package org.simantics.g3d.scenegraph.structural;
\r
3 import java.util.ArrayList;
\r
4 import java.util.Collection;
\r
5 import java.util.List;
\r
7 import org.simantics.g3d.ontology.G3D;
\r
8 import org.simantics.g3d.property.annotations.GetPropertyValue;
\r
9 import org.simantics.g3d.property.annotations.SetPropertyValue;
\r
10 import org.simantics.g3d.scenegraph.base.ParentNode;
\r
11 import org.simantics.layer0.Layer0;
\r
12 import org.simantics.objmap.graph.annotations.RelatedGetValue;
\r
13 import org.simantics.objmap.graph.annotations.RelatedSetValue;
\r
14 import org.simantics.objmap.structural.IStructuralObject;
\r
16 public abstract class StructuralParentNode<T extends IStructuralNode> extends ParentNode<T> implements IStructuralNode{
\r
18 private String name;
\r
21 @RelatedGetValue(Layer0.URIs.HasName)
\r
22 @GetPropertyValue(value = Layer0.URIs.HasName, tabId = "Default", name = "Name")
\r
23 public String getName() {
\r
27 @RelatedSetValue(Layer0.URIs.HasName)
\r
28 @SetPropertyValue(Layer0.URIs.HasName)
\r
29 public void setName(String name) {
\r
33 firePropertyChanged(Layer0.URIs.HasName);
\r
37 public String toString() {
\r
41 public boolean isPartOfInstantiatedModel() {
\r
42 return ctx.size() > 0;
\r
45 public boolean isExposed() {
\r
46 if (ctx.size() == 0)
\r
48 return getPublishedBy().contains(ctx.get(0));
\r
52 public boolean isInstantiatedModelRoot() {
\r
53 return ctx.size() == 1 && this.equals(ctx.get(0));
\r
57 public boolean isPublishable() {
\r
58 return !isPartOfInstantiatedModel();
\r
61 private List<IStructuralObject> ctx = new ArrayList<IStructuralObject>(1);
\r
63 public List<IStructuralObject> getContext() {
\r
68 public void setContext(List<IStructuralObject> object) {
\r
72 private List<IStructuralNode> publisher = new ArrayList<IStructuralNode>(1);
\r
75 public void addPublishedBy(IStructuralNode node) {
\r
76 publisher.add(node);
\r
77 firePropertyChanged(G3D.URIs.publishes);
\r
81 public Collection<IStructuralNode> getPublishedBy() {
\r
86 public void removePublishedBy(IStructuralNode node) {
\r
87 if (publisher.remove(node))
\r
88 firePropertyChanged(G3D.URIs.publishes);
\r
92 public void remove() {
\r
93 IStructuralRootNode root = (IStructuralRootNode)getRootNode();
\r
94 if (root.getPublished().contains(this))
\r
95 root.removePublished(this);
\r