import org.eclipse.jface.util.LocalSelectionTransfer;
import org.eclipse.jface.viewers.AbstractTreeViewer;
import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
@Inject
private EPartService partService;
+ private ISelectionChangedListener selectionChangedListener;
+
/**
* Default constructor
*/
viewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
viewer.getTree().setEnabled(CdmStore.isActive());
- // Propagate selection from viewer
- viewer.addSelectionChangedListener((SelectionChangedEvent event) -> {
- IStructuredSelection isel = (IStructuredSelection) event.getSelection();
- selService.setSelection((isel.size() == 1 ? isel.getFirstElement() : isel.toArray()));
- });
+ selectionChangedListener = new ISelectionChangedListener() {
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ IStructuredSelection isel = (IStructuredSelection) event.getSelection();
+ selService.setSelection((isel.size() == 1 ? isel.getFirstElement() : isel.toArray()));
+ }
+ };
+ viewer.addSelectionChangedListener(selectionChangedListener);
//create context menu
menuService.registerContextMenu(viewer.getControl(), "eu.etaxonomy.taxeditor.editor.popupmenu.specimeneditor");
public void updateRootEntities(List<SpecimenOrObservationBase> derivates) {
- if(derivates!=null){
- this.derivateToRootEntityMap = new HashMap<SpecimenOrObservationBase<?>, SpecimenOrObservationBase<?>>();
- this.rootElements = new HashSet<SpecimenOrObservationBase<?>>();
- for (SpecimenOrObservationBase derivate : derivates) {
+ if(derivates!=null){
+ this.derivateToRootEntityMap = new HashMap<SpecimenOrObservationBase<?>, SpecimenOrObservationBase<?>>();
+ this.rootElements = new HashSet<SpecimenOrObservationBase<?>>();
+ for (SpecimenOrObservationBase derivate : derivates) {
- if(derivate instanceof FieldUnit){
- derivateToRootEntityMap.put(derivate, derivate);
+ if(derivate instanceof FieldUnit){
+ derivateToRootEntityMap.put(derivate, derivate);
+ }
+ else {
+ SpecimenOrObservationBase<?> topMostDerivate = EditorUtil.getTopMostDerivate(derivate);
+ if(topMostDerivate!=null){
+ derivateToRootEntityMap.put(derivate, topMostDerivate);
}
- else {
- SpecimenOrObservationBase<?> topMostDerivate = EditorUtil.getTopMostDerivate(derivate);
- if(topMostDerivate!=null){
- derivateToRootEntityMap.put(derivate, topMostDerivate);
- }
- else{
- derivateToRootEntityMap.put(derivate, derivate);
- }
+ else{
+ derivateToRootEntityMap.put(derivate, derivate);
}
}
- for (SpecimenOrObservationBase<?> specimen : derivateToRootEntityMap.values()) {
- rootElements.add(specimen);
- }
}
- labelProvider.updateLabelCache(rootElements);
- viewer.setInput(rootElements);
-
- //TODO e4
-// getEditorSite().getActionBars().getStatusLineManager().setMessage(String.format(Messages.DerivateView_CNT_DERIVATIVES_FOUND, rootElements.size()));
-
- //set selection to derivatives if the filter criteria
- //taxon assignment or derivative type are set
- if(derivates!=null && !derivateSearchCompositeController.isDefaultSearch()){
- List<TreeNode> nodesToSelect = new ArrayList<TreeNode>();
- for (SpecimenOrObservationBase specimenOrObservationBase : derivates) {
- nodesToSelect.add(new TreeNode(specimenOrObservationBase));
- }
- viewer.setSelection(new StructuredSelection(nodesToSelect));
+ for (SpecimenOrObservationBase<?> specimen : derivateToRootEntityMap.values()) {
+ rootElements.add(specimen);
}
- else{
- viewer.setSelection(null);
+ }
+ labelProvider.updateLabelCache(rootElements);
+ viewer.setInput(rootElements);
+
+ //TODO e4
+ // getEditorSite().getActionBars().getStatusLineManager().setMessage(String.format(Messages.DerivateView_CNT_DERIVATIVES_FOUND, rootElements.size()));
+
+ //set selection to derivatives if the filter criteria
+ //taxon assignment or derivative type are set
+ if(derivates!=null && !derivateSearchCompositeController.isDefaultSearch()){
+ List<TreeNode> nodesToSelect = new ArrayList<TreeNode>();
+ for (SpecimenOrObservationBase specimenOrObservationBase : derivates) {
+ nodesToSelect.add(new TreeNode(specimenOrObservationBase));
}
+ setSelection(new StructuredSelection(nodesToSelect));
+ }
+ else{
+ setSelection(null);
+ }
+ }
+ private void setSelection(StructuredSelection selection){
+ viewer.removeSelectionChangedListener(selectionChangedListener);
+ viewer.setSelection(selection);
+ viewer.addSelectionChangedListener(selectionChangedListener);
}
public void updateLabelCache(){