rename some eu.*.Abstract*E4 classes
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / concept / e4 / ConceptViewPartE4.java
index b76da194a54b46fd35774082db6b87e87fbf3406..d401847eeabb59a715bc7d543c36281669719b5e 100644 (file)
@@ -9,39 +9,35 @@
 
 package eu.etaxonomy.taxeditor.editor.view.concept.e4;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
 import java.util.Map.Entry;
 
 import javax.annotation.PostConstruct;
-import javax.inject.Inject;
 
 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
 import org.eclipse.e4.ui.services.EMenuService;
-import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
 import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ListViewer;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.ViewerSorter;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
 
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
-import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
-import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
-import eu.etaxonomy.taxeditor.editor.key.AbstractGraphKeyEditor;
+import eu.etaxonomy.taxeditor.editor.key.e4.AbstractGraphKeyEditor;
 import eu.etaxonomy.taxeditor.editor.l10n.Messages;
 import eu.etaxonomy.taxeditor.editor.view.concept.ConceptContentProvider;
 import eu.etaxonomy.taxeditor.editor.view.concept.ConceptLabelProvider;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.e4.FactualDataPartE4;
+import eu.etaxonomy.taxeditor.editor.view.media.e4.MediaViewPartE4;
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
 import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
-import eu.etaxonomy.taxeditor.model.LineSelection;
-import eu.etaxonomy.taxeditor.view.detail.DetailsViewPart;
-import eu.etaxonomy.taxeditor.view.e4.AbstractCdmEditorPartE4;
-import eu.etaxonomy.taxeditor.view.supplementaldata.SupplementalDataViewPart;
+import eu.etaxonomy.taxeditor.view.e4.AbstractCdmEditorPart;
+import eu.etaxonomy.taxeditor.view.e4.details.DetailsPartE4;
+import eu.etaxonomy.taxeditor.view.e4.supplementaldata.SupplementalDataPartE4;
 
 /**
  *
@@ -49,42 +45,31 @@ import eu.etaxonomy.taxeditor.view.supplementaldata.SupplementalDataViewPart;
  * @date 21.08.2017
  *
  */
-public class ConceptViewPartE4 extends AbstractCdmEditorPartE4
+public class ConceptViewPartE4 extends AbstractCdmEditorPart
 implements IPartContentHasDetails, IPartContentHasSupplementalData{
 
-    private ISelectionChangedListener selectionChangedListener;
-
-    @Inject
-    private ESelectionService selService;
-
     @Override
     public void selectionChanged_internal(Object selection, MPart activePart, MPart thisPart) {
         if(activePart==thisPart){
             return;
         }
+        if (!viewer.getControl().isDisposed()){
+            viewer.getControl().setEnabled(true);
+        }
+        Object partObject = getPartObject(activePart);
+        IStructuredSelection structuredSelection = createSelection(selection);
 
-        Object partObject = createPartObject(activePart);
-
-        if (partObject instanceof DetailsViewPart || partObject instanceof SupplementalDataViewPart) {
+        if (partObject instanceof DetailsPartE4 || partObject instanceof SupplementalDataPartE4
+                || partObject instanceof FactualDataPartE4|| partObject instanceof MediaViewPartE4) {
             // do not show empty page as these views are also used to edit the
             // description selected in this view
             return;
         }
-        else if(partObject instanceof BulkEditor && selection instanceof LineSelection){
-                       if(((LineSelection) selection).getFirstElement() instanceof Taxon){
-                               showViewer((LineSelection) selection, activePart, viewer);
-                       }
-                       else{
-                               showEmptyPage();
-                       }
-                       return;
-               }
                else if(partObject instanceof AbstractGraphKeyEditor){
                        showEmptyPage();
                }
-               else if(partObject instanceof MultiPageTaxonEditor){
-                   IEditorInput input = ((IEditorPart) partObject).getEditorInput();
-                   showViewer(new StructuredSelection(input), activePart, viewer);
+               else if(selection!=null){
+                   showViewer(structuredSelection, activePart, viewer);
                }
                else {
                    showEmptyPage();
@@ -92,17 +77,10 @@ implements IPartContentHasDetails, IPartContentHasSupplementalData{
 
        }
 
-    //FIXME E4 implement
-//     @Override
-//     protected String createPartTitle(Object selectedObject) {
-//             if(selectedObject instanceof TaxonEditorInput){
-//                     return super.createPartTitle(((TaxonEditorInput) selectedObject).getTaxon());
-//             }
-//             return super.createPartTitle(selectedObject);
-//     }
-
        @PostConstruct
-    public void create(Composite parent, EMenuService menuService) {
+    public void create(Composite parent, EMenuService menuService, MPart thisPart) {
+
+           this.thisPart = thisPart;
 
            ConceptRelationViewer conceptViewer = new ConceptRelationViewer(parent);
 
@@ -115,7 +93,7 @@ implements IPartContentHasDetails, IPartContentHasSupplementalData{
                viewer = conceptViewer;
 
                // Propagate selection from viewer
-        selectionChangedListener = (event -> selService.setSelection(AbstractUtility.getElementsFromSelectionChangedEvent(event)));
+        selectionChangedListener = (event -> selService.setSelection(viewer.getSelection()));
         viewer.addSelectionChangedListener(selectionChangedListener);
 
         //create context menu
@@ -138,11 +116,13 @@ implements IPartContentHasDetails, IPartContentHasSupplementalData{
                @Override
                public ISelection getSelection() {
                        ISelection selection = super.getSelection();
+                       List<TaxonRelationship> relationships = new ArrayList<>();
                        if(selection instanceof IStructuredSelection && !selection.isEmpty()){
-                               Object firstElement = ((IStructuredSelection) selection).getFirstElement();
-                               TaxonRelationship taxonRelationship = ((Entry<TaxonRelationship, Taxon>)firstElement).getKey();
-                               return new StructuredSelection(taxonRelationship);
-
+                           for(Iterator iter = ((IStructuredSelection) selection).iterator();iter.hasNext();){
+                               Object object = iter.next();
+                               relationships.add(((Entry<TaxonRelationship, Taxon>)object).getKey());
+                           }
+                           return new StructuredSelection(relationships);
                        }
                        return selection;
                }