Merge branch 'release/3.12.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / descriptive / DescriptiveViewPart.java
index a4b95431052963bf9c752e04e8afc44f56d72cfc..60d46862b9da5485d2e8fb2d3eb687d47bf83fd8 100644 (file)
 package eu.etaxonomy.taxeditor.editor.view.descriptive;
 
 import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
 import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
 
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.GroupMarker;
@@ -23,14 +19,11 @@ import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.action.IToolBarManager;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.TreeNode;
-import org.eclipse.jface.viewers.TreeSelection;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.SWT;
@@ -43,21 +36,18 @@ import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.Tree;
 import org.eclipse.ui.IWorkbenchActionConstants;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.PartInitException;
 
-import eu.etaxonomy.cdm.api.application.CdmChangeEvent;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.IDescribable;
-import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistEditor;
 import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
-import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
+import eu.etaxonomy.taxeditor.editor.view.media.MediaViewPart;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainerTree;
@@ -65,14 +55,12 @@ import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
 import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
 import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
 import eu.etaxonomy.taxeditor.model.ImageResources;
-import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
 import eu.etaxonomy.taxeditor.view.detail.DetailsViewPart;
 import eu.etaxonomy.taxeditor.view.supplementaldata.SupplementalDataViewPart;
 
 /**
- * <p>DescriptiveViewPart class.</p>
- *
  * @author n.hoffmann
  * @created Jun 9, 2010
  * @version 1.0
@@ -125,58 +113,8 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
 
                createToolbar();
 
-               // set initial input
-//             if(getEditor() != null){
-//                     viewer.setInput(getEditor().getEditorInput());
-//             }
-
-               viewer.addDoubleClickListener(new IDoubleClickListener() {
-            @Override
-            public void doubleClick(DoubleClickEvent event) {
-                //Open derivate editor when specimen description element is double clicked
-                TreeSelection selection = (TreeSelection) viewer.getSelection();
-                Iterator iterator = selection.iterator();
-                Set<UUID> specimenUuids = new HashSet<UUID>();
-                while(iterator.hasNext()){
-                    Object next = iterator.next();
-                    if(next instanceof IndividualsAssociation){
-                        SpecimenOrObservationBase<?> specimen = ((IndividualsAssociation)next).getAssociatedSpecimenOrObservation();
-                        if(specimen!=null){
-                            specimenUuids.add(specimen.getUuid());
-                        }
-                    }
-                }
-                try {
-                    if(!specimenUuids.isEmpty()){
-                        EditorUtil.open(new DerivateViewEditorInput(specimenUuids));
-                    }
-                } catch (PartInitException e) {
-                    MessagingUtils.error(DescriptiveViewPart.class, "Could not open Derivative Editor", e);
-                }
-
-
-                    //TODO: extend command to accept parameter to open editor
-//                    String commandId = "eu.etaxonomy.taxeditor.editor.handler.openDerivateView";
-//                    IHandlerService handlerService = (IHandlerService) AbstractUtility.getService(IHandlerService.class);
-//                    try {
-//                        handlerService.executeCommand(commandId, null);
-//                    } catch (ExecutionException e) {
-//                        MessagingUtils.error(DerivateSearchCompositeController.class, e);
-//                    } catch (NotDefinedException e) {
-//                        MessagingUtils.error(DerivateSearchCompositeController.class, e);
-//                    } catch (NotEnabledException e) {
-//                        MessagingUtils.error(DerivateSearchCompositeController.class, e);
-//                    } catch (NotHandledException e) {
-//                        MessagingUtils.error(DerivateSearchCompositeController.class, e);
-//                    }
-
-            }
-        });
        }
 
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.model.AbstractCdmViewPart#getInitialSelection()
-        */
        /** {@inheritDoc} */
        @Override
        protected ISelection getInitialSelection() {
@@ -224,10 +162,12 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
                if(part == this){
                    return;
                }
-               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;
-               }
+        if (part instanceof DetailsViewPart || part instanceof SupplementalDataViewPart
+                || part instanceof MediaViewPart) {
+            // do not show empty page as these views are also used to edit the
+            // description selected in this view
+            return;
+        }
                // unpackage TreeNode of DerivateView
                else if(part instanceof DerivateView){
                    TreeNode treeNodeOfSelection = EditorUtil.getTreeNodeOfSelection(selection);
@@ -337,8 +277,13 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
                }
                if(part instanceof BulkEditor && !(object instanceof SpecimenOrObservationBase<?>)){
                    ((BulkEditor) part).forceDirty();
+                   if(CdmStore.getCurrentSessionManager().isRemoting()) {
+                       IStructuredSelection selection = (IStructuredSelection) ((BulkEditor) part).getSelectionProvider().getSelection();
+                       ((BulkEditor) part).changed(selection.getFirstElement());
+                   }
                }
 
+
                super.changed(object);
        }
 
@@ -348,11 +293,6 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
                return viewer;
        }
 
-       /**
-        * <p>onComplete</p>
-        *
-        * @return a boolean.
-        */
        @Override
     public boolean onComplete() {
                return false;
@@ -362,13 +302,4 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
            provider.toggleShowOnlyIndividualAssociations();
            viewer.refresh();
        }
-
-    /* (non-Javadoc)
-     * @see eu.etaxonomy.cdm.api.application.ICdmChangeListener#onChange(eu.etaxonomy.cdm.api.application.CdmChangeEvent)
-     */
-    @Override
-    public void onChange(CdmChangeEvent event) {
-        // TODO Auto-generated method stub
-
-    }
 }