import javax.vecmath.Quat4d;
import javax.vecmath.Vector3d;
+import org.simantics.db.Resource;
import org.simantics.g3d.math.MathTools;
import org.simantics.g3d.scenegraph.IG3DNode;
import org.simantics.g3d.scenegraph.NodeMap;
import org.simantics.g3d.scenegraph.base.INode;
import org.simantics.g3d.scenegraph.base.NodeException;
import org.simantics.g3d.scenegraph.base.ParentNode;
+import org.simantics.objmap.graph.IMapping;
import org.simantics.objmap.graph.annotations.GraphType;
import org.simantics.objmap.graph.annotations.RelatedElementsAdd;
import org.simantics.objmap.graph.annotations.RelatedElementsGet;
import org.simantics.objmap.graph.annotations.RelatedElementsRem;
-import org.simantics.plant3d.editor.P3DNodeMap;
import org.simantics.plant3d.ontology.Plant3D;
import vtk.vtkProp;
@GraphType(Plant3D.URIs.Plant)
-public class P3DRootNode extends ParentNode<INode> implements IG3DNode, NodeMapProvider<vtkProp , INode> {
+public class P3DRootNode extends ParentNode<INode> implements IG3DNode, NodeMapProvider<Resource, vtkProp, INode> {
- @RelatedElementsAdd(Plant3D.URIs.childen)
- public void addChild(IP3DVisualNode node) {
- addNode(Plant3D.URIs.childen,node);
+ @RelatedElementsAdd(Plant3D.URIs.children)
+ public void addChild(INode node) {
+ //public void addChild(IP3DVisualNode node) {
+ addNode(Plant3D.URIs.children,node);
}
- @RelatedElementsGet(Plant3D.URIs.childen)
+ @RelatedElementsGet(Plant3D.URIs.children)
public Collection<INode> getChild() {
- return getNodes(Plant3D.URIs.childen);
+ return getNodes(Plant3D.URIs.children);
}
- @RelatedElementsRem(Plant3D.URIs.childen)
- public void remChild(IP3DNode node) {
- removeNode(Plant3D.URIs.childen, node);
+ @RelatedElementsRem(Plant3D.URIs.children)
+ public void remChild(INode node) {
+ //public void remChild(IP3DNode node) {
+ removeNode(Plant3D.URIs.children, node);
}
- private P3DNodeMap nodeMap;
+ private NodeMap<Resource, vtkProp, INode> nodeMap;
+ private IMapping<Resource, INode> mapping;
- public void setNodeMap(P3DNodeMap nodeMap) {
+ public void setNodeMap(NodeMap<Resource, vtkProp, INode> nodeMap) {
this.nodeMap = nodeMap;
+ this.mapping = nodeMap.getMapping();
+ }
+
+ public void setMapping(IMapping<Resource, INode> mapping) {
+ this.mapping = mapping;
}
@Override
- public NodeMap<vtkProp, INode> getNodeMap() {
+ public NodeMap<Resource, vtkProp, INode> getNodeMap() {
return nodeMap;
}
+ public Resource getNodeResource(INode node) {
+ return mapping.inverseGet(node);
+ }
+
+ public INode getResourceNode(Resource r) {
+ return mapping.get(r);
+ }
+
@Override
public ParentNode<?> getParent() {
return null;
}
- @SuppressWarnings("rawtypes")
@Override
- public Object getAdapter(Class adapter) {
- if (NodeMap.class == adapter)
- return nodeMap;
+ public <T> T getAdapter(Class<T> adapter) {
+ if (adapter.isAssignableFrom(NodeMap.class))
+ return adapter.cast(nodeMap);
return null;
}