ref #6390: supplemental data view for missapplied names
authorKatja Luther <k.luther@bgbm.org>
Tue, 4 Jul 2017 11:21:19 +0000 (13:21 +0200)
committerKatja Luther <k.luther@bgbm.org>
Tue, 4 Jul 2017 11:21:19 +0000 (13:21 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/supplementaldata/SupplementalDataViewPart.java

index 1817a5ab306789fee4b21430fc0f1f7f29fd7050..41174858f9fdf3c9b1970b277e53033fb0c2697e 100644 (file)
@@ -9,9 +9,12 @@
 
 package eu.etaxonomy.taxeditor.view.supplementaldata;
 
+import java.util.Set;
+
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewerInternals;
 import org.eclipse.jface.viewers.TreeNode;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.widgets.Composite;
@@ -21,6 +24,9 @@ import org.eclipse.ui.part.EditorPart;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
+import eu.etaxonomy.taxeditor.editor.ITaxonEditor;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
@@ -75,13 +81,24 @@ public class SupplementalDataViewPart extends AbstractCdmEditorViewPart {
         }
 
         IStructuredSelection structuredSelection = (IStructuredSelection) selection;
-
+        
                if((partObject instanceof EditorPart || partObject instanceof IPartContentHasSupplementalData)) {
                        if(structuredSelection.size() != 1){
                                showEmptyPage();
                                return;
                        }
-
+               if (partObject instanceof ITaxonEditor && structuredSelection.getFirstElement() instanceof Taxon ){
+                       if (((ITaxonEditor)partObject).getTaxon() != structuredSelection.getFirstElement() && ((Taxon)structuredSelection.getFirstElement()).isMisapplication()){
+                               Set<TaxonRelationship> rels =((Taxon)structuredSelection.getFirstElement()).getTaxonRelations(((ITaxonEditor)partObject).getTaxon());
+                               if (rels.size() == 1){
+                                        structuredSelection = new StructuredSelection(rels.iterator().next());
+                               }else{
+                                       showEmptyPage();
+                                       return;
+                               }
+                               
+                       }
+               }
                        // do not show supplemental data for feature nodes
                        if(structuredSelection.getFirstElement() instanceof FeatureNodeContainer){
                                showEmptyPage();
@@ -98,7 +115,8 @@ public class SupplementalDataViewPart extends AbstractCdmEditorViewPart {
                        }
                        else if(structuredSelection.getFirstElement() instanceof GbifResponse){
                            structuredSelection = new StructuredSelection(((GbifResponse)structuredSelection.getFirstElement()).getDerivedUnitFacade().innerDerivedUnit());
-                       }
+                       } 
+                       
                        showViewer(partObject, structuredSelection);
                }else{
                        showEmptyPage();