]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/editor/Plant3DEditor.java
Overriding selection and hover highlights
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / editor / Plant3DEditor.java
index 82d592c4d4b8b8c0c95652b81b4d6819f72dd899..273e1062d15ae6e805fbf1507007000df30a6673 100644 (file)
@@ -171,12 +171,12 @@ public class Plant3DEditor extends ResourceEditorPart {
                                throw new RuntimeException("Scenegraph loading failed.");
                        populate();
                        
-                       selectionProvider = new NodeSelectionProvider2<Resource,Object>(this,mapping,nodeMap);
+                       selectionProvider = createSelectionProvider();
 
                        cameraAction.addSelectionChangedListener(selectionProvider);
 
-                       cameraAction.addHoverChangedListener(new HoverHighlighter(panel,nodeMap));
-                       selectionProvider.addSelectionChangedListener(new SelectionHighlighter(panel,nodeMap));
+                       cameraAction.addHoverChangedListener(createHoverHighlhighter());
+                       selectionProvider.addSelectionChangedListener(createSelectionHighlighter());
                        
                        getSite().setSelectionProvider(selectionProvider);
                        getSite().getPage().addPostSelectionListener(selectionProvider);
@@ -212,6 +212,18 @@ public class Plant3DEditor extends ResourceEditorPart {
            return new vtkCameraAndSelectorAction(panel); 
        }
        
+       protected NodeSelectionProvider2<Resource,Object> createSelectionProvider() {
+           return new NodeSelectionProvider2<Resource,Object>(this,mapping,nodeMap);
+       }
+       
+       protected HoverHighlighter createHoverHighlhighter() {
+           return new HoverHighlighter(panel,nodeMap);
+       }
+       
+       protected SelectionHighlighter<INode> createSelectionHighlighter() {
+           return new SelectionHighlighter<INode>(panel,nodeMap);
+       }
+       
        protected void createActions() {
                translateAction = new TranslateAction(panel,nodeMap);
                translateInlineAction = new TranslateInlineAction(panel, nodeMap);
@@ -437,6 +449,10 @@ public class Plant3DEditor extends ResourceEditorPart {
                return result;
        }
        
+       public InteractiveVtkComposite getPanel() {
+        return panel;
+    }
+       
        public P3DRootNode getRootNode() {
                return rootNode;
        }
@@ -444,4 +460,8 @@ public class Plant3DEditor extends ResourceEditorPart {
        public IMapping<Resource, Object> getMapping() {
                return mapping;
        }
+       
+       public P3DNodeMap getNodeMap() {
+        return nodeMap;
+    }
 }