/*******************************************************************************
* Copyright (c) 2012, 2013 Association for Decentralized Information Management in
* Industry THTH ry.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* VTT Technical Research Centre of Finland - initial API and implementation
*******************************************************************************/
package org.simantics.g3d.scenegraph.base;
import org.eclipse.core.runtime.ListenerList;
public interface INode {
/**
*
* @return unique node identifier
*/
// public Long getId();
/**
* @return root node of the scene graph or null
if this node is
* not part of a properly rooted scene graph hierarchy
*/
public ParentNode> getRootNode();
/**
* @return Parent node reference or null
if not set
*/
public ParentNode> getParent();
public String getParentRel();
/**
* Set parent node. This method is for scene graph internal use only and
* should not be called outside the scene graph structure. This method
* simply sets the parent node parent field, and does not affect on parent
* node (i.e., should be called only from parent node).
*/
public void setParent(ParentNode> parent, String name);
/**
* Perform cleanup for this node and for the child nodes. Any resources
* (including child nodes) related to this node are unusable after this
* operation. This method is for scene graph internal use only, thus should
* not be called outside the scene graph structure.
*/
public void cleanup();
/**
* Remove this node and its children from the scene graph.
*/
public void remove();
public void deattach();
public void addListener(NodeListener listener);
public void removeListener(NodeListener listener);
public ListenerList getListeners();
}