X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.g3d.vtk%2Fsrc%2Forg%2Fsimantics%2Fg3d%2Fvtk%2Fcommon%2FNodeSelectionProvider2.java;h=db4710ed78933fac3883deaac6e6fdb0989f9a2b;hb=refs%2Fchanges%2F60%2F3460%2F1;hp=d5b8d70953db52e3dac044cbd224613537b24fa4;hpb=6dd5b348d85e1b5d9dffa9422a01388701b061eb;p=simantics%2F3d.git diff --git a/org.simantics.g3d.vtk/src/org/simantics/g3d/vtk/common/NodeSelectionProvider2.java b/org.simantics.g3d.vtk/src/org/simantics/g3d/vtk/common/NodeSelectionProvider2.java index d5b8d709..db4710ed 100644 --- a/org.simantics.g3d.vtk/src/org/simantics/g3d/vtk/common/NodeSelectionProvider2.java +++ b/org.simantics.g3d.vtk/src/org/simantics/g3d/vtk/common/NodeSelectionProvider2.java @@ -37,15 +37,15 @@ public class NodeSelectionProvider2 implements ISelectionPr protected ISelection selection = new StructuredSelection(); protected List listeners = new ArrayList(); - protected List selectedNodes = new ArrayList(); // selection is ordered + protected List selectedNodes = new ArrayList<>(); // selection is ordered //List selectedResources = new ArrayList(); protected List> selectedItems = new ArrayList>(); protected IEditorPart part; protected IMapping mapping; - protected VTKNodeMap nodeMap; + protected VTKNodeMap nodeMap; - public NodeSelectionProvider2(IEditorPart part, IMapping mapping, VTKNodeMap nodeMap) { + public NodeSelectionProvider2(IEditorPart part, IMapping mapping, VTKNodeMap nodeMap) { this.part = part; this.mapping = mapping; this.nodeMap = nodeMap; @@ -78,6 +78,7 @@ public class NodeSelectionProvider2 implements ISelectionPr } else if (resources.size() > 0) { nodes = new ArrayList(); 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 implements ISelectionPr } processSelection(new StructuredSelection(nodes.toArray())); fireSelectionChanged(this); + } else { + processSelection(selection); + fireSelectionChanged(this); } } @@ -98,34 +102,38 @@ public class NodeSelectionProvider2 implements ISelectionPr fireSelectionChanged(event.getSource()); } - @SuppressWarnings("unchecked") protected void processSelection(ISelection s) { selectedNodes.clear(); selectedItems.clear(); - - Collection 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(a, node,r)); - } - } else { - Collection 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(null, (IG3DNode)node,r)); - } - } - - - selection = new StructuredSelection(selectedItems); + _processSelection(s); + } + + protected void _processSelection(ISelection s) { + Collection 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(a, node,r)); + } + } else { + Collection 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(null, (IG3DNode)node,r)); + } + } + + + selection = new StructuredSelection(selectedItems); } protected void fireSelectionChanged(Object source) { @@ -146,10 +154,14 @@ public class NodeSelectionProvider2 implements ISelectionPr } - public List getSelectedNodes() { + public List getSelectedNodes() { return selectedNodes; } + public List> getSelectedItems() { + return selectedItems; + } + @SuppressWarnings("unchecked") public List getSelectedResources() {