Project

General

Profile

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

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

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

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

    
27
    private final DerivateView derivateView;
28

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

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

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