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;
/**
*
* @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();
}
- //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);
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
@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;
}