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=b9e3a0e8fc222f330e1e05e91156d945f7180ac3;hb=db7a5dfe7c90c6752e871f84de0f70a182dd527a;hp=d5b8d70953db52e3dac044cbd224613537b24fa4;hpb=f3f97890617bc359b043b903f5d9e75c6bdc71bd;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..b9e3a0e8 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,7 +37,7 @@ 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>(); @@ -85,6 +85,9 @@ public class NodeSelectionProvider2 implements ISelectionPr } processSelection(new StructuredSelection(nodes.toArray())); fireSelectionChanged(this); + } else { + processSelection(selection); + fireSelectionChanged(this); } } @@ -102,30 +105,33 @@ public class NodeSelectionProvider2 implements ISelectionPr 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) { + 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); } protected void fireSelectionChanged(Object source) { @@ -146,10 +152,14 @@ public class NodeSelectionProvider2 implements ISelectionPr } - public List getSelectedNodes() { + public List getSelectedNodes() { return selectedNodes; } + public List> getSelectedItems() { + return selectedItems; + } + @SuppressWarnings("unchecked") public List getSelectedResources() {