import org.eclipse.jface.util.LocalSelectionTransfer;
import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.TreeNode;
-import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.dnd.DragSourceAdapter;
import org.eclipse.swt.dnd.DragSourceEvent;
-import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
/**
* @author pplitzner
*/
public class DerivateDragListener extends DragSourceAdapter{
- private final Viewer viewer;
+ private final DerivateView derivateView;
/**
- * @param viewer
+ * @param derivateView
*/
- public DerivateDragListener(Viewer viewer) {
- this.viewer = viewer;
+ public DerivateDragListener(DerivateView derivateView) {
+ this.derivateView = derivateView;
}
- /* (non-Javadoc)
- * @see org.eclipse.swt.dnd.DragSourceAdapter#dragSetData(org.eclipse.swt.dnd.DragSourceEvent)
- */
@Override
public void dragSetData(DragSourceEvent event) {
if (LocalSelectionTransfer.getTransfer().isSupportedType(event.dataType)) {
- LocalSelectionTransfer.getTransfer().setSelection(viewer.getSelection());
+ DerivateViewSelection derivateViewSelection = new DerivateViewSelection(derivateView.getViewer().getSelection(), derivateView);
+ LocalSelectionTransfer.getTransfer().setSelection(derivateViewSelection);
}
}
- /* (non-Javadoc)
- * @see org.eclipse.swt.dnd.DragSourceAdapter#dragStart(org.eclipse.swt.dnd.DragSourceEvent)
- */
@Override
public void dragStart(DragSourceEvent event) {
- ISelection selection = viewer.getSelection();
- if(selection instanceof IStructuredSelection
- && ((IStructuredSelection) selection).size()==1
- && ((IStructuredSelection) selection).getFirstElement() instanceof TreeNode
- && ((TreeNode) ((IStructuredSelection) selection).getFirstElement()).getValue() instanceof SpecimenOrObservationBase<?>){
+ if(derivateView.isDirty()){
+ event.doit = false;
+ MessagingUtils.warningDialog(DerivateView.VIEW_HAS_UNSAVED_CHANGES, this, DerivateView.YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION);
+ return;
+ }
+ ISelection selection = derivateView.getViewer().getSelection();
+ if(EditorUtil.getTreeNodeOfSelection(selection)!=null){
event.doit = true;
}
else{