1 package org.simantics.g3d.scenegraph.base;
\r
3 import java.util.ArrayList;
\r
4 import java.util.List;
\r
7 public abstract class Node implements INode {
\r
8 public transient static long IDCOUNTER = 1;
\r
9 protected transient ParentNode<?> parent = null;
\r
10 protected transient String parentName = null;
\r
11 protected Long id = IDCOUNTER++;
\r
14 public Long getId() {
\r
19 public ParentNode<?> getParent() {
\r
25 public String getParentRel() {
\r
29 public void setParent(ParentNode<?> parent, String name) {
\r
30 this.parent = parent;
\r
31 this.parentName = name;
\r
34 public ParentNode<?> getRootNode() {
\r
35 return parent != null ? parent.getRootNode() : null;
\r
38 public void remove() {
\r
39 if (parent != null) {
\r
40 parent.removeNode(parentName, this);
\r
44 public void deattach() {
\r
45 if (parent != null) {
\r
46 parent.deattachNode(parentName, this);
\r
50 public void init() {
\r
53 public void cleanup() {
\r
54 if (parent != null) {
\r
55 parent.removeNode(parentName, this);
\r
60 public String toString() {
\r
61 return getClass().getSimpleName();
\r
64 protected List<NodeListener> listeners = new ArrayList<NodeListener>();
\r
67 public void addListener(NodeListener listener) {
\r
68 if (!listeners.contains(listener))
\r
69 listeners.add(listener);
\r
73 public void removeListener(NodeListener listener) {
\r
74 listeners.remove(listener);
\r
78 public List<NodeListener> getListeners() {
\r
82 protected void firePropertyChanged(String id) {
\r
83 for (NodeListener listener : listeners) {
\r
84 listener.propertyChanged(this, id);
\r