reintegrated redlist branch into trunk
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / descriptive / DescriptiveViewPart.java
index 1ed443152bf121db0da6ec919c335966c2cf57ad..4b3a999c1fbd42794eda895cc62cd6888a25e973 100644 (file)
@@ -20,8 +20,10 @@ import org.eclipse.jface.action.IToolBarManager;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TreeNode;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.SWT;
@@ -32,26 +34,27 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.Tree;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchActionConstants;
 import org.eclipse.ui.IWorkbenchPart;
 
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
-import eu.etaxonomy.cdm.model.description.TaxonDescription;
-import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
-import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
-import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermEditor;
-import eu.etaxonomy.taxeditor.editor.key.AbstractGraphKeyEditor;
+import eu.etaxonomy.cdm.model.description.IDescribable;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistEditor;
+import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainerTree;
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
+import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
 import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
 import eu.etaxonomy.taxeditor.model.ImageResources;
 import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
+import eu.etaxonomy.taxeditor.view.detail.DetailsViewPart;
+import eu.etaxonomy.taxeditor.view.supplementaldata.SupplementalDataViewPart;
 
 /**
  * <p>DescriptiveViewPart class.</p>
@@ -71,7 +74,7 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
         * Maps {@link FeatureNodeContainerTree} to their corresponding {@link TaxonDescritpion}.<br>
         * This serves as input for the {@link ITreeContentProvider} of the {@link TreeViewer}
         */
-       protected Map<TaxonDescription, FeatureNodeContainerTree> featureNodeContainerCache = new HashMap<TaxonDescription, FeatureNodeContainerTree>();
+       protected Map<DescriptionBase<?>, FeatureNodeContainerTree> featureNodeContainerCache = new HashMap<DescriptionBase<?>, FeatureNodeContainerTree>();
 
        protected ToggleDescriptionAction showAllElementsAction;
 
@@ -157,27 +160,35 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
                        return;
                }
 
-               if(part instanceof BulkEditor){
-                       showEmptyPage();
-                       return;
+               if(part == this){
+                   return;
                }
-
-               if(part instanceof AbstractGraphKeyEditor){
-                       showEmptyPage();
-                       return;
+               if(part instanceof DetailsViewPart || part instanceof SupplementalDataViewPart){
+                   // do not show empty page as these views are also used to edit the description selected in this view
+                   return;
                }
-
-               if(part instanceof DefinedTermEditor){
-                       showEmptyPage();
-                       return;
+               // unpackage TreeNode of DerivateView
+               else if(part instanceof DerivateView){
+                   TreeNode treeNodeOfSelection = EditorUtil.getTreeNodeOfSelection(selection);
+                   if(treeNodeOfSelection!=null){
+                       selection = new StructuredSelection(treeNodeOfSelection.getValue());
+                   }
                }
-
-               if(part instanceof MultiPageTaxonEditor){
-                       if(! part.equals(this.part)){
-                               IEditorInput input = ((IEditorPart) part).getEditorInput();
-                               featureNodeContainerCache.clear();
-                               showViewer(part, new StructuredSelection(input));
-                       }
+        else if(part instanceof ChecklistEditor){
+            if(selection instanceof StructuredSelection  && ((IStructuredSelection) selection).getFirstElement() instanceof Taxon){
+                Taxon taxon = (Taxon)((IStructuredSelection) selection).getFirstElement();
+                selection = new StructuredSelection(taxon);
+            }
+        }
+               if(selection instanceof IStructuredSelection
+                       && ((IStructuredSelection) selection).getFirstElement() instanceof IDescribable<?>
+                       && part instanceof IPartContentHasFactualData){
+                   featureNodeContainerCache.clear();
+                   showViewer(part, (IStructuredSelection) selection);
+                   return;
+               }
+               else{
+                   showEmptyPage();
                }
        }
 
@@ -206,7 +217,7 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
                                }
                        });
 
-                       String toolTipText = expanded ? "Collapse all" : "Show all descriptive data";
+                       String toolTipText = expanded ? "Collapse all" : "Show all factual data";
                        setToolTipText(toolTipText);
                }