merge-update from trunk
authorPatric Plitzner <p.plitzner@bgbm.org>
Mon, 22 Sep 2014 08:03:54 +0000 (08:03 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Mon, 22 Sep 2014 08:03:54 +0000 (08:03 +0000)
1  2 
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java

index 6731b675c78691d2d23c19901bbb3326ca8fb026,1cc320d3308a529ff502d9bb61b81a868dbe71cc..6f67454f4ffe3925f0eda4f2812ba26b4d2909a4
@@@ -9,9 -9,11 +9,12 @@@ import org.eclipse.core.runtime.IProgre
  import org.eclipse.jface.action.MenuManager;
  import org.eclipse.jface.util.LocalSelectionTransfer;
  import org.eclipse.jface.viewers.AbstractTreeViewer;
+ import org.eclipse.jface.viewers.ISelection;
+ import org.eclipse.jface.viewers.ISelectionChangedListener;
+ import org.eclipse.jface.viewers.SelectionChangedEvent;
  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.swt.SWT;
  import org.eclipse.swt.dnd.DND;
@@@ -23,6 -25,7 +26,6 @@@ import org.eclipse.swt.widgets.Tree
  import org.eclipse.ui.IEditorInput;
  import org.eclipse.ui.IEditorPart;
  import org.eclipse.ui.IEditorSite;
 -import org.eclipse.ui.IMemento;
  import org.eclipse.ui.PartInitException;
  import org.eclipse.ui.part.EditorPart;
  
@@@ -31,22 -34,24 +34,23 @@@ import eu.etaxonomy.cdm.api.conversatio
  import eu.etaxonomy.cdm.api.service.molecular.ISequenceService;
  import eu.etaxonomy.cdm.model.molecular.Sequence;
  import eu.etaxonomy.cdm.model.molecular.SingleRead;
- import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
  import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
  import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 -import eu.etaxonomy.taxeditor.model.IContextListener;
  import eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider;
  import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
  import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
+ import eu.etaxonomy.taxeditor.model.IPartContentHasMedia;
  import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
  import eu.etaxonomy.taxeditor.store.CdmStore;
  import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateLabelProvider;
  
  /**
-  * Displays the derivate hierarchy of all derivates having one single {@link FieldUnit} as root.
+  * Displays the derivate hierarchy of the specimen specified in the editor input.
   *
   */
  public class DerivateView extends EditorPart implements IPartContentHasFactualData, IDirtyMarkableSelectionProvider,
-         IConversationEnabled, IPartContentHasDetails, IPartContentHasSupplementalData {
+         IConversationEnabled, IPartContentHasDetails, IPartContentHasMedia, IPartContentHasSupplementalData,
 -        IContextListener, ISelectionChangedListener {
++        ISelectionChangedListener {
  
        /**
       * Key used for storing a single DerivateView in a memento
  
      private Set<SingleRead> multiLinkSingleReads;
  
+     private ISelection selection = null;
      /**
       * Default constructor
       */
      public DerivateView() {
 -        CdmStore.getContextManager().addContextListener(this);
      }
  
      /* (non-Javadoc)
@@@ -91,6 -99,8 +97,8 @@@
          viewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
          // Propagate selection from viewer
          getSite().setSelectionProvider(viewer);
+         //listen to selection changes
+         viewer.addSelectionChangedListener(this);
  
          //create context menu
          MenuManager menuManager = new MenuManager();
          viewer.refresh();
      }
  
 +    /**
 +     * Refreshes the derivate hierarchy tree and expands the tree
 +     * to show and select the given object.
 +     *
 +     * @param expandTo the object to which the tree should be expanded
 +     */
 +    public void refreshTree(Object expandTo){
 +        refreshTree();
 +        TreeSelection selection = (TreeSelection) viewer.getSelection();
 +        viewer.expandToLevel(selection.getFirstElement(), 1);
 +        viewer.setSelection(new StructuredSelection(new TreeNode(expandTo)));
 +    }
 +
      /**
       * Refreshes the derivate hierarchy tree
       */
          viewer.refresh();
      }
  
 +
      private void generateMultiLinkSingleReads() {
          Set<SingleRead> multiLinkSingleReads = new HashSet<SingleRead>();
          for(Entry<SingleRead, Collection<Sequence>> entry:CdmStore.getService(ISequenceService.class).getSingleReadSequencesMap().entrySet()){
          return this.multiLinkSingleReads;
      }
  
 -    /* (non-Javadoc)
 -     * @see eu.etaxonomy.taxeditor.model.IContextListener#contextAboutToStop(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
 -     */
 -    @Override
 -    public void contextAboutToStop(IMemento memento, IProgressMonitor monitor) {
 -    }
 -
 -    /* (non-Javadoc)
 -     * @see eu.etaxonomy.taxeditor.model.IContextListener#contextStop(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
 -     */
 -    @Override
 -    public void contextStop(IMemento memento, IProgressMonitor monitor) {
 -    }
 -
 -    /* (non-Javadoc)
 -     * @see eu.etaxonomy.taxeditor.model.IContextListener#contextStart(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
 -     */
 -    @Override
 -    public void contextStart(IMemento memento, IProgressMonitor monitor) {
 -//        if(memento == null){
 -//            return;
 -//        }
 -//        IMemento editorMementos = memento.getChild(DERIVATE_VIEW_MEMENTO_KEY);
 -//            DerivateViewEditorInput input = new DerivateViewEditorInput(UUID.fromString(editorInput.getString(DerivateViewEditorInput.UUID_MEMENTO_KEY)));
 -//                try {
 -//                    EditorUtil.open(input);
 -//                } catch (PartInitException e) {
 -//                    AbstractUtility.error(getClass(), "Error opening an editor window", e);
 -//                }
 -    }
 -
 -    /* (non-Javadoc)
 -     * @see eu.etaxonomy.taxeditor.model.IContextListener#contextRefresh(org.eclipse.core.runtime.IProgressMonitor)
 -     */
 -    @Override
 -    public void contextRefresh(IProgressMonitor monitor) {
 -    }
 -
 -    /* (non-Javadoc)
 -     * @see eu.etaxonomy.taxeditor.model.IContextListener#workbenchShutdown(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
 -     */
 -    @Override
 -    public void workbenchShutdown(IMemento memento, IProgressMonitor monitor) {
 -//        if (!conversation.isBound()) {
 -//            conversation.bind();
 -//        }
 -//        conversation.close();
 -//        if(memento == null){
 -//            return;
 -//        }
 -//
 -//        IEditorInput input = getEditorInput();
 -//        if(input instanceof IPersistable){
 -//            memento.createChild(DERIVATE_VIEW_MEMENTO_KEY);
 -//            ((IPersistable) input).saveState(memento);
 -//        }
 -    }
 -
+     /* (non-Javadoc)
+      * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
+      */
+     @Override
+     public void selectionChanged(SelectionChangedEvent event) {
+         this.selection  = event.getSelection();
+     }
+     /**
+      * @return the selection
+      */
+     public ISelection getSelection() {
+         return selection;
+     }
  }