import javax.annotation.PostConstruct;
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.e4.ui.workbench.modeling.ESelectionService;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
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;
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;
/**
* @date 18.07.2017
*
*/
-public class DetailsPartE4 extends AbstractCdmEditorPartE4 implements IPartContentHasSupplementalData {
+public class DetailsPartE4 extends AbstractCdmEditorPartE4 implements IPartContentHasSupplementalData, IPartContentHasFactualData {
+ @Inject
+ private Logger logger;
- private ISelectionChangedListener selectionChangedListener;
-
- @Inject
- private ESelectionService selService;
-
- @Inject
+ @Inject
public DetailsPartE4() {
}
@PostConstruct
- public void create(Composite parent, MPart thisPart) {
+ public void create(Composite parent, MPart thisPart, IEclipseContext context) {
this.thisPart = thisPart;
- viewer = new DetailsViewerE4(parent, this);
+ viewer = ContextInjectionFactory.make(DetailsViewerE4.class, context);
+ ((DetailsViewerE4)viewer).init(parent, this);
// Propagate selection from viewer
selectionChangedListener = (event -> selService.setSelection(AbstractUtility.getElementsFromSelectionChangedEvent(event)));
}
Object partObject = createPartObject(activePart);
+ if (partObject instanceof SupplementalDataPartE4 ) {
+ // do not show empty page
+ return;
+ }
if(partObject instanceof IPartContentHasDetails){
IStructuredSelection structuredSelection = createSelection(selection);
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 if(selectionProvidingPart!=null && selectionProvidingPart.isVisible()){
+
+
+
return;
}
else{
}
}
-// protected void showEmptyPage() {
-// super.showEmptyPage();
-// if(viewer!=null){
-// viewer.showEmptyPage();
-// }
-// selectionProvidingPart = null;
-// }
+ 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() ){
+ 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);
+
+ }
+ }
+ }
+ }
@Override
protected String getViewName(){