Merge branch 'release/4.6.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / concept / ConceptViewPart.java
index 171ad1bcbae8183aa98d2be540ac9f8954e592d7..79e9985d356b972ce4ed64def10b0a6d36178bdd 100644 (file)
@@ -1,4 +1,3 @@
-// $Id$
 /**
 * Copyright (C) 2007 EDIT
 * European Distributed Institute of Taxonomy
 
 package eu.etaxonomy.taxeditor.editor.view.concept;
 
+import java.util.Map.Entry;
+
 import org.eclipse.jface.action.GroupMarker;
-import org.eclipse.jface.action.IToolBarManager;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ListViewer;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Menu;
@@ -25,88 +27,104 @@ import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchActionConstants;
 import org.eclipse.ui.IWorkbenchPart;
 
+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.TaxonEditorInput;
 import eu.etaxonomy.taxeditor.editor.key.AbstractGraphKeyEditor;
+import eu.etaxonomy.taxeditor.editor.l10n.Messages;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
+import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
+import eu.etaxonomy.taxeditor.model.LineSelection;
 import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
+import eu.etaxonomy.taxeditor.view.detail.DetailsViewPart;
+import eu.etaxonomy.taxeditor.view.supplementaldata.SupplementalDataViewPart;
 
 /**
  * @author n.hoffmann
  * @created Jan 24, 2011
  * @version 1.0
  */
-public class ConceptViewPart extends AbstractCdmEditorViewPart implements IPartContentHasDetails{
+public class ConceptViewPart extends AbstractCdmEditorViewPart 
+implements IPartContentHasDetails, IPartContentHasSupplementalData{
 
-       public static final String ID = "eu.etaxonomy.taxeditor.editor.view.concept";
+       public static final String ID = "eu.etaxonomy.taxeditor.editor.view.concept"; //$NON-NLS-1$
 
-       private ListViewer viewer;
+       private ConceptRelationViewer viewer;
 
-       /* (non-Javadoc)
-        * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
-        */
        @Override
-       protected void internal_selectionChanged(IWorkbenchPart part, ISelection selection) {
+       protected void selectionChanged_internal(IWorkbenchPart part, ISelection selection) {
+               if(part == this){
+                   return;
+               }
                if(AbstractUtility.getActiveEditor() == null){
                        showEmptyPage();
                        return;
                }
-
-               if(part instanceof BulkEditor){
-                       showEmptyPage();
+               
+        if (part instanceof DetailsViewPart || part instanceof SupplementalDataViewPart) {
+            // do not show empty page as these views are also used to edit the
+            // description selected in this view
+            return;
+        }
+        else if(part instanceof BulkEditor && selection instanceof LineSelection){
+                       if(((LineSelection) selection).getFirstElement() instanceof Taxon){
+                               showViewer(part, (LineSelection) selection);
+                       }
+                       else{
+                               showEmptyPage();
+                       }
                        return;
                }
-
-               if(part instanceof AbstractGraphKeyEditor){
+               else if(part instanceof AbstractGraphKeyEditor){
                        showEmptyPage();
                        return;
                }
-
-               if(part instanceof MultiPageTaxonEditor){
+               else if(part instanceof MultiPageTaxonEditor){
                        if(! part.equals(this.part)){
                                IEditorInput input = ((IEditorPart) part).getEditorInput();
                                showViewer(part, new StructuredSelection(input));
                        }
-                       showViewer();
+               }
+               else {
+                   showEmptyPage();
                }
 
        }
+       
+       @Override
+       protected String createPartTitle(Object selectedObject) {
+               if(selectedObject instanceof TaxonEditorInput){
+                       return super.createPartTitle(((TaxonEditorInput) selectedObject).getTaxon());
+               }
+               return super.createPartTitle(selectedObject);
+       }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.operation.IPostOperationEnabled#onComplete()
-        */
        @Override
        public boolean onComplete() {
                return true;
        }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.model.AbstractCdmViewPart#getViewer()
-        */
        @Override
        public Viewer getViewer() {
                return viewer;
        }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.model.AbstractCdmViewPart#createViewer(org.eclipse.swt.widgets.Composite)
-        */
        @Override
        public void createViewer(Composite parent) {
-               viewer = new ListViewer(parent);
+               viewer = new ConceptRelationViewer(parent);
 
                viewer.setContentProvider(new ConceptContentProvider());
                viewer.setLabelProvider(new ConceptLabelProvider());
 
 
-               viewer.setSorter(new ConceptViewerSorter());
+               viewer.setSorter(new ViewerSorter());
 
                getSite().setSelectionProvider(viewer);
 
                createMenu();
-
-               createToolbar();
        }
 
        private void createMenu(){
@@ -121,19 +139,40 @@ public class ConceptViewPart extends AbstractCdmEditorViewPart implements IPartC
                control.setMenu(menu);
        }
 
-       private void createToolbar() {
-               IToolBarManager toolBarManager = getViewSite().getActionBars().getToolBarManager();
-//             toolBarManager.add();
-//             toolBarManager.add();
-       }
-
-
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.editor.view.AbstractCdmEditorViewPart#changed(java.lang.Object)
-        */
        @Override
        public void changed(Object object) {
                getViewer().refresh();
                super.changed(object);
        }
+
+       private class ConceptRelationViewer extends ListViewer {
+
+               public ConceptRelationViewer(Composite parent) {
+                       super(parent);
+               } 
+               
+               @Override
+               public ISelection getSelection() {
+                       ISelection selection = super.getSelection();
+                       if(selection instanceof IStructuredSelection && !selection.isEmpty()){
+                               Object firstElement = ((IStructuredSelection) selection).getFirstElement();
+                               TaxonRelationship taxonRelationship = ((Entry<TaxonRelationship, Taxon>)firstElement).getKey();
+                               return new StructuredSelection(taxonRelationship);
+                               
+                       }
+                       return selection;
+               }
+               
+               @Override
+               public void setSelection(ISelection selection) {
+                       super.setSelection(selection);
+               }
+
+       }
+
+       @Override
+       protected String getViewName() {
+               return Messages.ConceptViewPart_VIEWER_NAME;
+       }
+
 }