- adapted sub classes of AbstractPostOperation
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / descriptive / DescriptiveViewPart.java
index 1ed443152bf121db0da6ec919c335966c2cf57ad..cb8582f84d3eb203576b33495849597d3bb114e0 100644 (file)
@@ -20,6 +20,7 @@ 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.TreeViewer;
@@ -32,26 +33,23 @@ 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.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 +69,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 +155,23 @@ 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;
+               if(selection instanceof IStructuredSelection
+                       && ((IStructuredSelection) selection).getFirstElement() instanceof IDescribable<?>
+                       && part instanceof IPartContentHasFactualData){
+                   featureNodeContainerCache.clear();
+                   showViewer(part, (IStructuredSelection) selection);
+                   return;
                }
-
-               if(part instanceof MultiPageTaxonEditor){
-                       if(! part.equals(this.part)){
-                               IEditorInput input = ((IEditorPart) part).getEditorInput();
-                               featureNodeContainerCache.clear();
-                               showViewer(part, new StructuredSelection(input));
-                       }
+               else{
+                   showEmptyPage();
                }
        }