- expand branch in DerivateView where a new derivate created and select the derivate
authorPatric Plitzner <p.plitzner@bgbm.org>
Mon, 7 Jul 2014 12:22:55 +0000 (12:22 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Mon, 7 Jul 2014 12:22:55 +0000 (12:22 +0000)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateDerivateContextMenu.java

index bab27cfed83353fb37aa25949f082ea979737abf..527859a4c3179aaf2cc77901c476ffdcd35ccf5f 100644 (file)
@@ -11,6 +11,7 @@ import org.eclipse.jface.util.LocalSelectionTransfer;
 import org.eclipse.jface.viewers.AbstractTreeViewer;
 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;
@@ -22,7 +23,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;
 
@@ -34,7 +34,6 @@ 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;
@@ -47,7 +46,7 @@ import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateLabelProvider;
  *
  */
 public class DerivateView extends EditorPart implements IPartContentHasFactualData, IDirtyMarkableSelectionProvider,
-        IConversationEnabled, IPartContentHasDetails, IPartContentHasSupplementalData, IContextListener {
+        IConversationEnabled, IPartContentHasDetails, IPartContentHasSupplementalData {
 
        /**
      * Key used for storing a single DerivateView in a memento
@@ -77,7 +76,6 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
      * Default constructor
      */
     public DerivateView() {
-        CdmStore.getContextManager().addContextListener(this);
     }
 
     /* (non-Javadoc)
@@ -233,6 +231,19 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
         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
      */
@@ -242,6 +253,7 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
         viewer.refresh();
     }
 
+
     private void generateMultiLinkSingleReads() {
         Set<SingleRead> multiLinkSingleReads = new HashSet<SingleRead>();
         for(Entry<SingleRead, Collection<Sequence>> entry:CdmStore.getService(ISequenceService.class).getSingleReadSequencesMap().entrySet()){
@@ -259,62 +271,4 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
         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);
-//        }
-    }
-
 }
index b956e86c779337c9dc9e6335f021c44b07749fe0..2470481be9cbb29634301d0768dbea2902227349 100644 (file)
@@ -123,15 +123,20 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
          */
         @Override
         public void widgetSelected(SelectionEvent e) {
+            Object createdElement = null;
             Object selectedDerivate = selectedNode.getValue();
             if(selectedDerivate instanceof DnaSample){
                 DnaSample dnaSample = (DnaSample)selectedDerivate;
                 if(childClass.equals(Sequence.class)){
-                    dnaSample.addSequence(Sequence.NewInstance(""));//why does this not have DnaSample as constructor parameter?
+                    Sequence newInstance = Sequence.NewInstance("");
+                    dnaSample.addSequence(newInstance);//why does this not have DnaSample as constructor parameter?
+                    createdElement = newInstance;
                 }
             }
             else if(selectedDerivate instanceof Sequence){
-                ((Sequence) selectedDerivate).addSingleRead(SingleRead.NewInstance());
+                SingleRead newInstance = SingleRead.NewInstance();
+                ((Sequence) selectedDerivate).addSingleRead(newInstance);
+                createdElement = newInstance;
             }
             else if(selectedDerivate instanceof SpecimenOrObservationBase && DerivedUnit.class.isAssignableFrom(childClass)){
                 SpecimenOrObservationBase<?> specimenOrObservationBase = (SpecimenOrObservationBase<?>)selectedDerivate;
@@ -150,6 +155,7 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
                 specimenOrObservationBase.addDerivationEvent(DerivationEvent.NewSimpleInstance(specimenOrObservationBase, derivedUnit, DerivationEventType.GATHERING_IN_SITU()));
                 derivedUnit.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
                 derivedUnit.getTitleCache(); //update title cache
+                createdElement = derivedUnit;
             }
 
             //refresh view
@@ -157,7 +163,7 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
             if(activePart instanceof DerivateView){
                 DerivateView derivateView = (DerivateView)activePart;
                 derivateView.changed(null);
-                derivateView.refreshTree();
+                derivateView.refreshTree(createdElement);
             }
         }
     }