eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateDropListener.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateViewEditorInput.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateViewSelection.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateDerivateContextMenu.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/DerivateViewContextMenu.java -text
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/SingleReadSequenceContextMenu.java -text
package eu.etaxonomy.taxeditor.editor.view.derivate;
import org.eclipse.jface.util.LocalSelectionTransfer;
-import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TreeNode;
import org.eclipse.jface.viewers.ViewerDropAdapter;
import org.eclipse.swt.dnd.TransferData;
return false;
}
Object target = getCurrentTarget();
- if(target instanceof TreeNode && data instanceof IStructuredSelection){
+ if(target instanceof TreeNode && data instanceof DerivateViewSelection){
+ DerivateViewSelection derivateViewSelection = (DerivateViewSelection)data;
TreeNode targetNode = (TreeNode) target;
- TreeNode draggednode = EditorUtil.getTreeNodeOfSelection((IStructuredSelection) data);
+ TreeNode draggednode = EditorUtil.getTreeNodeOfSelection(derivateViewSelection.getSelection());
if(draggednode!=null){
if(moveTreeNode(draggednode, targetNode)){
+ //update DerivateView
+ derivateView.getConversationHolder().commit();
derivateView.refreshTree();
+
+ // update source DerivateView if dragging between different views occured
+ DerivateView sourceDerivateView = derivateViewSelection.getDerivateView();
+ if(sourceDerivateView!=derivateView){
+ sourceDerivateView.setFocus();
+// derivateView.getSite().getPage().activate(sourceDerivateView);
+ sourceDerivateView.getConversationHolder().commit();
+ sourceDerivateView.refreshTree();
+ }
+
LocalSelectionTransfer.getTransfer().setSelection(null);
return true;
}
Object fromParentSpecimen = fromParentNode.getValue();
// drag'n'drop for SpecimenOrObservationBase
+ IOccurrenceService occurrenceService = CdmStore.getService(IOccurrenceService.class);
if(draggedNodeValue instanceof DerivedUnit && targetNodeValue instanceof SpecimenOrObservationBase<?>){
DerivedUnit draggedSpecimen = (DerivedUnit) draggedNodeValue;
SpecimenOrObservationBase<?> targetSpecimen = (SpecimenOrObservationBase<?>) targetNodeValue;
//check if type is a sub derivate type
if(!fromParentNode.equals(targetNode)//don't drag on direct parent node
&& fromParentSpecimen instanceof SpecimenOrObservationBase<?>){
- CdmStore.getService(IOccurrenceService.class).moveDerivate((SpecimenOrObservationBase<?>)fromParentSpecimen, targetSpecimen, draggedSpecimen);
+ occurrenceService.moveDerivate((SpecimenOrObservationBase<?>)fromParentSpecimen, targetSpecimen, draggedSpecimen);
return true;
}
}
else if(draggedNodeValue instanceof Sequence && targetNodeValue instanceof DnaSample ){
Sequence sequence = (Sequence)draggedNodeValue;
if(fromParentSpecimen instanceof DnaSample){
- CdmStore.getService(IOccurrenceService.class).moveSequence((DnaSample)fromParentSpecimen, (DnaSample)targetNodeValue, sequence);
+ occurrenceService.moveSequence((DnaSample)fromParentSpecimen, (DnaSample)targetNodeValue, sequence);
return true;
}
}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2014 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.editor.view.derivate;
+
+import org.eclipse.jface.viewers.ISelection;
+
+/**
+ * Wrapper for {@link ISelection} which additionally holds a
+ * reference to the {@link DerivateView}
+ * @author pplitzner
+ * @date 14.05.2014
+ *
+ */
+public class DerivateViewSelection implements ISelection {
+
+ private final ISelection selection;
+ private final DerivateView derivateView;
+
+ /**
+ * @param selection
+ * @param derivateView
+ */
+ public DerivateViewSelection(ISelection selection, DerivateView derivateView) {
+ super();
+ this.selection = selection;
+ this.derivateView = derivateView;
+ }
+
+ /**
+ * @return the selection
+ */
+ public ISelection getSelection() {
+ return selection;
+ }
+
+ /**
+ * @return the derivateView
+ */
+ public DerivateView getDerivateView() {
+ return derivateView;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ISelection#isEmpty()
+ */
+ @Override
+ public boolean isEmpty() {
+ return selection.isEmpty();
+ }
+
+}