ref #9337, #9287: show details of term and supplemental data of term node
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / view / e4 / details / DetailsPartE4.java
index d6d3559af7985da350ae93b31434837f245d475d..cf8d5743931aec2c11237ef685ccc14d70cc18df 100644 (file)
@@ -14,8 +14,11 @@ import javax.inject.Inject;
 
 import org.eclipse.e4.core.contexts.ContextInjectionFactory;
 import org.eclipse.e4.core.contexts.IEclipseContext;
+import org.eclipse.e4.core.services.log.Logger;
 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
 import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.SWTException;
 import org.eclipse.swt.widgets.Composite;
 
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
@@ -24,7 +27,10 @@ import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
+import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
 import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.view.e4.AbstractCdmEditorPartE4;
 import eu.etaxonomy.taxeditor.view.e4.supplementaldata.SupplementalDataPartE4;
 import eu.etaxonomy.taxeditor.workbench.part.ISelectionElementEditingPart;
@@ -34,9 +40,11 @@ import eu.etaxonomy.taxeditor.workbench.part.ISelectionElementEditingPart;
  * @date 18.07.2017
  *
  */
-public class DetailsPartE4 extends AbstractCdmEditorPartE4 implements IPartContentHasSupplementalData {
+public class DetailsPartE4 extends AbstractCdmEditorPartE4 implements IPartContentHasSupplementalData, IPartContentHasFactualData {
+       @Inject
+       private Logger logger;
 
-    @Inject
+       @Inject
     public DetailsPartE4() {
     }
 
@@ -60,7 +68,7 @@ public class DetailsPartE4 extends AbstractCdmEditorPartE4 implements IPartConte
         }
 
         Object partObject = createPartObject(activePart);
-        if (partObject instanceof SupplementalDataPartE4) {
+        if (partObject instanceof SupplementalDataPartE4 ) {
             // do not show empty page
             return;
         }
@@ -86,16 +94,16 @@ public class DetailsPartE4 extends AbstractCdmEditorPartE4 implements IPartConte
                     return;
                 }
             }
-//            if (partObject instanceof IDistributionEditor){
-//
-//                showViewer(structuredSelection, activePart, viewer);
-//                return;
-//
-//            }
+
             //FIXME this is a temporary workaround to fix selection handling for supplemental data view
             // Now the supp data view gets double selection from details view and name editor (see #7126)
+
             viewer.setSelection(structuredSelection, false);
+
             showViewer(structuredSelection, activePart, viewer);
+
+
+
             return;
         }
         else{
@@ -104,11 +112,27 @@ public class DetailsPartE4 extends AbstractCdmEditorPartE4 implements IPartConte
         }
     }
 
+    public void refreshSelection(){
+        selectionChanged_internal(new StructuredSelection(this.viewer.getInput()), selectionProvidingPart, thisPart);
+    }
+
     @Override
     protected void showEmptyPage() {
         super.showEmptyPage();
         if(viewer!=null && viewer.getControl()!=null && !viewer.getControl().isDisposed() ){
-            ((DetailsViewerE4)viewer).destroySections();
+               try{
+                       ((DetailsViewerE4)viewer).destroySections();
+               }catch(SWTException e){
+                       if (PreferencesUtil.isShowUpWidgetIsDisposedMessages() && e.getMessage().equals("Widget is disposed")){
+                    MessagingUtils.errorDialog("Widget is disposed",
+                            null,
+                            MessagingUtils.WIDGET_IS_DISPOSED_MESSAGE,
+                            null,
+                            e,
+                            true);
+
+                }
+               }
         }
     }