ref #6905, #6597 Allow saving of editor when view is active
authorPatrick Plitzner <p.plitzner@bgbm.org>
Fri, 11 Aug 2017 09:28:29 +0000 (11:28 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Fri, 11 Aug 2017 09:28:29 +0000 (11:28 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/e4/AbstractCdmEditorPartE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/e4/details/DetailsPartE4.java
eu.etaxonomy.taxeditor.workbench/src/main/java/eu/etaxonomy/taxeditor/workbench/SaveHandler.java

index a066de4c3b716f19e1b861db0c20049715f8246d..97ccf73205d1f060cde2a54312fb60f14c693078 100644 (file)
@@ -21,13 +21,14 @@ import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
+import eu.etaxonomy.taxeditor.workbench.part.ISelectionElementEditingPart;
 
 /**
  * @author pplitzner
  * @since Aug 10, 2017
  *
  */
-public abstract class AbstractCdmEditorPartE4 implements IConversationEnabled, IDirtyMarkable{
+public abstract class AbstractCdmEditorPartE4 implements IConversationEnabled, IDirtyMarkable, ISelectionElementEditingPart{
 
     protected AbstractCdmDataViewerE4 viewer;
 
@@ -83,6 +84,14 @@ public abstract class AbstractCdmEditorPartE4 implements IConversationEnabled, I
         return null;
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Object getSelectionProvidingPart() {
+        return selectionProvidingPart;
+    }
+
     @PreDestroy
     public void dispose() {
     }
index 21f7d5c0acfb920d8cd9371f7fc28c281f04cf0a..88e0c7fe58908c9ecbd6adec3009decdf1910854 100644 (file)
@@ -18,7 +18,6 @@ import org.eclipse.e4.ui.services.IServiceConstants;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IEditorPart;
 
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.model.description.Feature;
@@ -79,8 +78,12 @@ public class DetailsPartE4 extends AbstractCdmEditorPartE4{
             showEmptyPage();
             return;
         }
-        if((partObject instanceof IEditorPart) || (partObject instanceof IPartContentHasDetails)
-                && partObject instanceof IConversationEnabled) {
+        if(partObject instanceof IPartContentHasDetails){
+            if(partObject instanceof IConversationEnabled && ((IConversationEnabled) partObject).getConversationHolder()==null) {
+                //TODO show specific message (refactor EmptyElement to allow specific messages)
+                showEmptyPage();
+                return;
+            }
             // do not show details for feature nodes TODO strange check to avoid having shown the distribution map for every FeatureNodeContainer
             if(structuredSelection.getFirstElement() instanceof FeatureNodeContainer){
                 // do show the map for distributions
index 1e16c0b526efb80fbd6b604cbaaecc258c564cfe..1a8cc156109ad794888f8d3fbf14e88f137500d3 100644 (file)
@@ -39,13 +39,16 @@ public class SaveHandler {
                 else if(savablePart instanceof IE4SavablePart){
                     ((IE4SavablePart) savablePart).save(new NullProgressMonitor());
                 }
+                else if(savablePart instanceof MPart){
+                    savePart(partService, commandService, handlerService, (MPart) savablePart);
+                }
             }
         }
        }
 
        private Object findSavablePart(ISelectionElementEditingPart part){
            Object selectionProvidingPart = part.getSelectionProvidingPart();
-           if(selectionProvidingPart instanceof ISaveablePart || selectionProvidingPart instanceof IE4SavablePart){
+           if(selectionProvidingPart instanceof ISaveablePart || selectionProvidingPart instanceof IE4SavablePart || selectionProvidingPart instanceof MPart){
                return selectionProvidingPart;
            }
            else if(selectionProvidingPart instanceof ISelectionElementEditingPart){