Merge branch 'develop' into LibrAlign
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / media / MediaViewPart.java
index a93272a31a03c0dc4708c9e2d2f048481e11a755..2cd347b2b48b0ed6b6fd3d588d2bda32a3090d88 100644 (file)
@@ -1,4 +1,3 @@
-// $Id$
 /**
 * Copyright (C) 2007 EDIT
 * European Distributed Institute of Taxonomy
@@ -23,39 +22,33 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.Tree;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchActionConstants;
 import org.eclipse.ui.IWorkbenchPart;
 
+import eu.etaxonomy.cdm.model.description.IDescribable;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
-import eu.etaxonomy.taxeditor.editor.EditorUtil;
-import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
-import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveViewPart;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
+import eu.etaxonomy.taxeditor.model.IPartContentHasMedia;
 import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
 import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
+import eu.etaxonomy.taxeditor.view.detail.DetailsViewPart;
+import eu.etaxonomy.taxeditor.view.supplementaldata.SupplementalDataViewPart;
 
 /**
- * <p>MediaViewPart class.</p>
- *
  * @author n.hoffmann
  * @created Jun 15, 2010
  * @version 1.0
  */
 public class MediaViewPart extends AbstractCdmEditorViewPart implements IPartContentHasDetails, IPartContentHasSupplementalData {
 
-       /** Constant <code>ID="eu.etaxonomy.taxeditor.editor.view.medi"{trunked}</code> */
        public static final String ID = "eu.etaxonomy.taxeditor.editor.view.media";
 
+
        private TreeViewer viewer;
 
-       /*
-        * (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.model.AbstractCdmViewPart#createViewer(org.eclipse.swt.widgets.Composite)
-        */
        /** {@inheritDoc} */
        @Override
        public void createViewer(Composite parent) {
@@ -81,9 +74,6 @@ public class MediaViewPart extends AbstractCdmEditorViewPart implements IPartCon
 
        }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.model.AbstractCdmViewPart#getInitialSelection()
-        */
        /** {@inheritDoc} */
        @Override
        protected ISelection getInitialSelection() {
@@ -97,38 +87,57 @@ public class MediaViewPart extends AbstractCdmEditorViewPart implements IPartCon
        /** {@inheritDoc} */
        @Override
     protected void selectionChanged_internal(IWorkbenchPart part, ISelection selection) {
+           if(part==this){
+               return;
+           }
                if(AbstractUtility.getActiveEditor() == null){
                        showEmptyPage();
                        return;
                }
 
-               if(part instanceof MultiPageTaxonEditor){
-                       IEditorInput input = ((IEditorPart) part).getEditorInput();
-                       showViewer(part, new StructuredSelection(input));
-               }
-
-               else if(part instanceof BulkEditor && selection instanceof IStructuredSelection){
-                       showViewer(part, (IStructuredSelection) selection);
-               }
+        if (part instanceof DetailsViewPart || part instanceof SupplementalDataViewPart
+                || part instanceof DescriptiveViewPart) {
+            // do not show empty page as these views are also used to edit the
+            // description selected in this view
+            return;
+        }
 
-               else if(part instanceof DerivateView){
-                   TreeNode treeNode = EditorUtil.getTreeNodeOfSelection(selection);
-                   if(treeNode!=null){
-                       showViewer(part, new StructuredSelection(treeNode.getValue()));
+               if(part instanceof IPartContentHasMedia && ((IPartContentHasMedia) part).canAttachMedia()){
+                   if(selection instanceof IStructuredSelection){
+                       Object firstElement = ((IStructuredSelection) selection).getFirstElement();
+                       if(firstElement instanceof TreeNode){
+                           showViewer(part, new StructuredSelection(((TreeNode) firstElement).getValue()));
+                           return;
+                       }
+                       else if(firstElement!=null
+                           && firstElement instanceof IDescribable<?>){
+                           showViewer(part, (IStructuredSelection) selection);
+                           return;
+                       }
                    }
-        }
+               }
+               showEmptyPage();
        }
 
        /** {@inheritDoc} */
        @Override
        public void changed(Object object) {
-               viewer.refresh();
-               //TODO: should be replaced with the possibility to set views dirty
-               // when we move to Eclipse 4
-               if(part instanceof BulkEditor && !(object instanceof SpecimenOrObservationBase<?>)){
-                   ((BulkEditor) part).forceDirty();
-               }
-               super.changed(object);
+           viewer.expandToLevel(2);
+           viewer.refresh();
+           if(object != null){
+               StructuredSelection selection = new StructuredSelection(object);
+               viewer.setSelection(selection, true);
+           }
+           //TODO: should be replaced with the possibility to set views dirty
+           // when we move to Eclipse 4
+           // take a look at ISaveblePart
+           if(part instanceof BulkEditor && !(object instanceof SpecimenOrObservationBase<?>)){
+               ((BulkEditor) part).forceDirty();
+               IStructuredSelection selection = (IStructuredSelection) ((BulkEditor) part).getSelectionProvider().getSelection();
+            ((BulkEditor) part).changed(selection.getFirstElement());
+            
+           }
+           super.changed(object);
        }
 
        /** {@inheritDoc} */
@@ -137,13 +146,13 @@ public class MediaViewPart extends AbstractCdmEditorViewPart implements IPartCon
                return viewer;
        }
 
-       /**
-        * <p>onComplete</p>
-        *
-        * @return a boolean.
-        */
        @Override
     public boolean onComplete() {
                return true;
        }
+
+       @Override
+       protected String getViewName() {
+               return "Media";
+       }
 }