]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.g3d.vtk/src/org/simantics/g3d/vtk/common/NodeSelectionProvider2.java
Compiler warning elimination
[simantics/3d.git] / org.simantics.g3d.vtk / src / org / simantics / g3d / vtk / common / NodeSelectionProvider2.java
index d5b8d70953db52e3dac044cbd224613537b24fa4..db4710ed78933fac3883deaac6e6fdb0989f9a2b 100644 (file)
@@ -37,15 +37,15 @@ public class NodeSelectionProvider2<DBObject,JavaObject> implements ISelectionPr
     protected ISelection selection = new StructuredSelection();
        protected List<ISelectionChangedListener> listeners = new ArrayList<ISelectionChangedListener>();
        
-       protected List<IG3DNode> selectedNodes = new ArrayList<IG3DNode>(); // selection is ordered
+       protected List<INode> selectedNodes = new ArrayList<>(); // selection is ordered
        //List<Resource> selectedResources = new ArrayList<Resource>();
        protected List<VTKSelectionItem<DBObject>> selectedItems = new ArrayList<VTKSelectionItem<DBObject>>();
        
        protected IEditorPart part;
        protected IMapping<DBObject,JavaObject> mapping;
-       protected VTKNodeMap nodeMap;
+       protected VTKNodeMap<DBObject, ? extends INode> nodeMap;
        
-       public NodeSelectionProvider2(IEditorPart part, IMapping<DBObject,JavaObject> mapping, VTKNodeMap nodeMap) {
+       public NodeSelectionProvider2(IEditorPart part, IMapping<DBObject,JavaObject> mapping, VTKNodeMap<DBObject, ? extends INode> nodeMap) {
                this.part = part;
                this.mapping = mapping;
                this.nodeMap = nodeMap;
@@ -78,6 +78,7 @@ public class NodeSelectionProvider2<DBObject,JavaObject> implements ISelectionPr
            } else if (resources.size() > 0) {
                nodes = new ArrayList<IG3DNode>();
                for (Resource r : resources) {
+                   @SuppressWarnings("unchecked")
                    JavaObject n  = mapping.get((DBObject)r);
                    if (n instanceof IG3DNode) {
                        nodes.add((IG3DNode)n);
@@ -85,6 +86,9 @@ public class NodeSelectionProvider2<DBObject,JavaObject> implements ISelectionPr
                }
                processSelection(new StructuredSelection(nodes.toArray()));
                fireSelectionChanged(this);
+           } else {
+               processSelection(selection);
+            fireSelectionChanged(this);
            }
                
        }
@@ -98,34 +102,38 @@ public class NodeSelectionProvider2<DBObject,JavaObject> implements ISelectionPr
                fireSelectionChanged(event.getSource());
        }
        
-       @SuppressWarnings("unchecked")
        protected void processSelection(ISelection s) {
                selectedNodes.clear();
                selectedItems.clear();
-               
-               Collection<vtkProp> selectedActors = AdaptationUtils.adaptToCollection(s, vtkProp.class);
-               if (selectedActors.size() > 0) {
-                       for (vtkProp a : selectedActors) {
-                               IG3DNode node = (IG3DNode)nodeMap.getNode((vtkProp)a);
-                               if (node == null)
-                                       continue;
-                               if (!selectedNodes.contains(node))
-                                       selectedNodes.add(node);
-                               DBObject r = mapping.inverseGet((JavaObject)node);
-                               selectedItems.add(new VTKSelectionItem<DBObject>(a, node,r));
-                       }
-               } else {
-                       Collection<IG3DNode> selectedNds = AdaptationUtils.adaptToCollection(s, IG3DNode.class);
-                       for (INode node : selectedNds) {
-                               if (!selectedNodes.contains(node))
-                                       selectedNodes.add((IG3DNode)node);
-                               DBObject r = mapping.inverseGet((JavaObject)node);
-                               selectedItems.add(new VTKSelectionItem<DBObject>(null, (IG3DNode)node,r));
-                       }
-               }
-               
-               
-               selection = new StructuredSelection(selectedItems);
+               _processSelection(s);
+       }
+       
+       protected void _processSelection(ISelection s) {
+           Collection<vtkProp> selectedActors = AdaptationUtils.adaptToCollection(s, vtkProp.class);
+        if (selectedActors.size() > 0) {
+            for (vtkProp a : selectedActors) {
+                INode node = nodeMap.getNode(a);
+                if (node == null)
+                    continue;
+                if (!selectedNodes.contains(node))
+                    selectedNodes.add(node);
+                @SuppressWarnings("unchecked")
+                DBObject r = mapping.inverseGet((JavaObject)node);
+                selectedItems.add(new VTKSelectionItem<DBObject>(a, node,r));
+            }
+        } else {
+            Collection<IG3DNode> selectedNds = AdaptationUtils.adaptToCollection(s, IG3DNode.class);
+            for (INode node : selectedNds) {
+                if (!selectedNodes.contains(node))
+                    selectedNodes.add((IG3DNode)node);
+                @SuppressWarnings("unchecked")
+                DBObject r = mapping.inverseGet((JavaObject)node);
+                selectedItems.add(new VTKSelectionItem<DBObject>(null, (IG3DNode)node,r));
+            }
+        }
+        
+        
+        selection = new StructuredSelection(selectedItems);
        }
        
        protected void fireSelectionChanged(Object source) {
@@ -146,10 +154,14 @@ public class NodeSelectionProvider2<DBObject,JavaObject> implements ISelectionPr
                
        }
        
-       public List<IG3DNode> getSelectedNodes() {
+       public List<INode> getSelectedNodes() {
                return selectedNodes;
        }
        
+       public List<VTKSelectionItem<DBObject>> getSelectedItems() {
+        return selectedItems;
+    }
+       
        @SuppressWarnings("unchecked")
        public List<DBObject> getSelectedResources() {