Project

General

Profile

Download (3.08 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2009 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.descriptiveDataSet.character;
10

    
11
import java.util.Iterator;
12

    
13
import org.eclipse.e4.ui.di.UISynchronize;
14
import org.eclipse.jface.util.LocalSelectionTransfer;
15
import org.eclipse.jface.viewers.ISelection;
16
import org.eclipse.jface.viewers.IStructuredSelection;
17
import org.eclipse.jface.viewers.Viewer;
18
import org.eclipse.swt.dnd.DropTargetEvent;
19
import org.eclipse.swt.dnd.TransferData;
20

    
21
import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
22
import eu.etaxonomy.cdm.model.description.Character;
23
import eu.etaxonomy.cdm.model.description.FeatureNode;
24
import eu.etaxonomy.cdm.model.description.FeatureTree;
25
import eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeDropAdapter;
26
import eu.etaxonomy.taxeditor.featuretree.e4.IFeatureTreeEditor;
27
import eu.etaxonomy.taxeditor.store.CdmStore;
28
import eu.etaxonomy.taxeditor.store.StoreUtil;
29

    
30
/**
31
 *
32
 * @author pplitzner
33
 * @date Jun 1, 2017
34
 *
35
 */
36
public class CharacterDropAdapter extends FeatureTreeDropAdapter {
37

    
38
	protected CharacterDropAdapter(IFeatureTreeEditor editor, Viewer viewer, UISynchronize sync) {
39
	    super(editor, viewer, sync);
40
	}
41

    
42
	@Override
43
	protected Object determineTarget(DropTargetEvent event) {
44
        return event.item == null ? ((FeatureTree)getViewer().getInput()).getRoot() : event.item.getData();
45
	}
46

    
47
	@Override
48
	public boolean performDrop(Object data) {
49
	    if(StoreUtil.checkDirty(editor)){
50
	        return false;
51
	    }
52
	    FeatureNode target = (FeatureNode) getCurrentTarget();
53
	    ISelection selection = LocalSelectionTransfer.getTransfer().getSelection();
54
	    if(selection!=null
55
	            &&selection instanceof IStructuredSelection
56
	            ){
57
	        IStructuredSelection structuredSelection = (IStructuredSelection)selection;
58
	        Iterator iterator = structuredSelection.iterator();
59
	        while(iterator.hasNext()){
60
	            Object next = iterator.next();
61
	            if(next instanceof Character){
62
	                Character character = (Character)next;
63
	                if(target==null){
64
	                    //drop on feature tree
65
	                    target = ((FeatureTree)getViewer().getInput()).getRoot();
66
	                }
67
	                CdmStore.getService(IFeatureNodeService.class).addChildFeatureNode(target.getUuid(), character.getUuid());
68
	            }
69
	        }
70
	        getViewer().refresh();
71
	        LocalSelectionTransfer.getTransfer().setSelection(null);
72
	        return true;
73
	    }
74
	    return super.performDrop(data);
75
	}
76

    
77
	@Override
78
	public boolean validateDrop(Object target, int operation,
79
			TransferData transferData) {
80
		LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer();
81
        boolean valid = true;
82
		valid &= transfer.getSelection()!=null
83
		        && !transfer.getSelection().isEmpty();
84
		if(!valid){
85
		    return super.validateDrop(target, operation, transferData);
86
		}
87
		return valid;
88
	}
89

    
90
}
(2-2/3)