ref #7073: keep the details view when clicking on supplemental data
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / view / AbstractCdmViewPart.java
index 03acaeb247bdf7d4af4a919fcf122eb5820d784e..ac6544ddc65f42d6980fbafc3110dd1b3e9bea5e 100644 (file)
@@ -1,4 +1,3 @@
-// $Id$
 /**
  * Copyright (C) 2007 EDIT
  * European Distributed Institute of Taxonomy
@@ -12,6 +11,7 @@ package eu.etaxonomy.taxeditor.view;
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
@@ -23,7 +23,6 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.ui.ISelectionListener;
 import org.eclipse.ui.ISelectionService;
-import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.part.PageBook;
 import org.eclipse.ui.part.ViewPart;
 
@@ -31,7 +30,6 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
@@ -50,7 +48,7 @@ public abstract class AbstractCdmViewPart extends ViewPart implements ISelection
 
     public static IStructuredSelection EMPTY_SELECTION = new StructuredSelection();
 
-    protected IWorkbenchPart part;
+    protected Object part;
 
     private PageBook pageBook;
 
@@ -75,11 +73,8 @@ public abstract class AbstractCdmViewPart extends ViewPart implements ISelection
         setInitialSelection();
     }
 
-    /**
-     *
-     */
     private void setInitialSelection() {
-        selectionChanged(AbstractUtility.getActivePart(), getInitialSelection());
+//        selectionChanged(AbstractUtility.getActiveWorkbenchPart(), getInitialSelection());
     }
 
     /**
@@ -95,6 +90,7 @@ public abstract class AbstractCdmViewPart extends ViewPart implements ISelection
      * <p>showEmptyPage</p>
      */
     public void showEmptyPage(){
+       setPartName(createPartTitle(null));
         pageBook.showPage(emptySelectionLabel);
     }
 
@@ -104,13 +100,17 @@ public abstract class AbstractCdmViewPart extends ViewPart implements ISelection
      * @param part a {@link org.eclipse.ui.IWorkbenchPart} object.
      * @param selection a {@link org.eclipse.jface.viewers.ISelection} object.
      */
-    public void showViewer(IWorkbenchPart part, IStructuredSelection selection){
+    public void showViewer(Object part, IStructuredSelection selection){
         this.part = part;
 
         Object element = selection.getFirstElement();
+      //avoid widget is disposed exceptions
+        if (getViewer().getControl()==null || getViewer().getControl().isDisposed()){
+            return;
+        }
 
+        setPartName(createPartTitle(element));
         getViewer().setInput(element);
-
         showViewer();
     }
 
@@ -185,7 +185,7 @@ public abstract class AbstractCdmViewPart extends ViewPart implements ISelection
     }
 
     @Override
-    public  List<CdmBase> getRootEntities() {
+    public  List<? extends CdmBase> getRootEntities() {
         return Arrays.asList((CdmBase)getViewer().getInput());
     }
 
@@ -209,4 +209,23 @@ public abstract class AbstractCdmViewPart extends ViewPart implements ISelection
     public void forceDirty() {
         changed(null);
     }
+
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getPropertyPathsMap()
+     */
+    @Override
+    public Map<Object, List<String>> getPropertyPathsMap() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+       protected String createPartTitle(Object selectedObject){
+           if(selectedObject!=null){
+               return getViewName()+": "+selectedObject; //$NON-NLS-1$
+           }
+        return getViewName();
+       }
+
+    protected abstract String getViewName();
 }