Project

General

Profile

Download (1.83 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
 * Copyright (C) 2014 EDIT
3
 * European Distributed Institute of Taxonomy
4
 * http://www.e-taxonomy.eu
5
 *
6
 * The contents of this file are subject to the Mozilla Public License Version 1.1
7
 * See LICENSE.TXT at the top of this package for the full license terms.
8
 */
9
package eu.etaxonomy.taxeditor.editor.view.derivate;
10

    
11
import org.eclipse.jface.util.LocalSelectionTransfer;
12
import org.eclipse.jface.viewers.ISelection;
13
import org.eclipse.swt.dnd.DragSourceAdapter;
14
import org.eclipse.swt.dnd.DragSourceEvent;
15

    
16
import eu.etaxonomy.taxeditor.editor.EditorUtil;
17
import eu.etaxonomy.taxeditor.model.MessagingUtils;
18

    
19
/**
20
 * @author pplitzner
21
 * @date 18.03.2014
22
 *
23
 */
24
public class DerivateDragListener extends DragSourceAdapter{
25

    
26
    private final DerivateView derivateView;
27

    
28
    /**
29
     * @param derivateView
30
     */
31
    public DerivateDragListener(DerivateView derivateView) {
32
        this.derivateView = derivateView;
33
    }
34

    
35
    @Override
36
    public void dragSetData(DragSourceEvent event) {
37
        if (LocalSelectionTransfer.getTransfer().isSupportedType(event.dataType)) {
38
            DerivateViewSelection derivateViewSelection = new DerivateViewSelection(derivateView.getViewer().getSelection(), derivateView);
39
            LocalSelectionTransfer.getTransfer().setSelection(derivateViewSelection);
40
        }
41
    }
42

    
43
    @Override
44
    public void dragStart(DragSourceEvent event) {
45
        if(derivateView.isDirty()){
46
            event.doit = false;
47
            MessagingUtils.warningDialog(DerivateView.VIEW_HAS_UNSAVED_CHANGES, this, DerivateView.YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION);
48
            return;
49
        }
50
        ISelection selection = derivateView.getViewer().getSelection();
51
        if(EditorUtil.getTreeNodeOfSelection(selection)!=null){
52
            event.doit = true;
53
        }
54
        else{
55
            event.doit = false;
56
        }
57
    }
58
}
(1-1/6)