Project

General

Profile

Download (3.28 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.definedterm;
10

    
11
import java.util.ArrayList;
12
import java.util.Collection;
13

    
14
import org.eclipse.jface.viewers.StructuredSelection;
15
import org.eclipse.jface.viewers.ViewerDropAdapter;
16
import org.eclipse.swt.dnd.DND;
17
import org.eclipse.swt.dnd.DropTargetEvent;
18
import org.eclipse.swt.dnd.TransferData;
19

    
20
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
21
import eu.etaxonomy.cdm.model.common.OrderedTermBase;
22
import eu.etaxonomy.cdm.model.common.TermBase;
23
import eu.etaxonomy.taxeditor.editor.definedterm.operation.MoveDefinedTermOperation;
24
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
25
import eu.etaxonomy.taxeditor.store.StoreUtil;
26

    
27
/**
28
 * @author l.morris
29
 * @date 10 Jan 2012
30
 *
31
 */
32
public class DefinedTermDropAdapter extends ViewerDropAdapter {
33

    
34
	private final DefinedTermEditor editor;
35
	/**
36
	 * @param viewer
37
	 */
38
	protected DefinedTermDropAdapter(DefinedTermEditor editor) {
39
		super(editor.getViewer());
40
		this.editor = editor;
41
	}
42

    
43
	/* (non-Javadoc)
44
	 * @see org.eclipse.jface.viewers.ViewerDropAdapter#performDrop(java.lang.Object)
45
	 */
46
	@Override
47
	public boolean performDrop(Object data) {
48

    
49
		TermBase target = (TermBase) getCurrentTarget();//can be vocab
50
		int currentLocation = getCurrentLocation();
51
		//DefinedTermBase[] droppedElements = (DefinedTermBase[]) data;
52
		Object[] droppedTerms = (Object[]) data;
53
		Collection<DefinedTermBase> sourceTerms = new ArrayList<DefinedTermBase>(); //Arrays.asList(droppedElements)
54

    
55
		for (Object droppedTerm : droppedTerms) {
56

    
57
			DefinedTermBase term = (DefinedTermBase) droppedTerm;
58
			sourceTerms.add(term);
59

    
60
		}
61

    
62
		AbstractPostOperation operation = new MoveDefinedTermOperation("Move Descriptions",
63
		        StoreUtil.getUndoContext(),
64
		        target,
65
		        sourceTerms,
66
		        editor,
67
		        currentLocation);
68
		//TODO: implement execute
69
//		StoreUtil.executeOperation(operation);
70
		// select the newly moved objects
71
		editor.getViewer().setSelection(new StructuredSelection(sourceTerms.toArray(new TermBase[sourceTerms.size()])));
72

    
73
		return true;
74
	}
75

    
76
	/* (non-Javadoc)
77
	 * @see org.eclipse.jface.viewers.ViewerDropAdapter#validateDrop(java.lang.Object, int, org.eclipse.swt.dnd.TransferData)
78
	 */
79
	@Override
80
	public boolean validateDrop(Object target, int operation,
81
			TransferData transferType) {
82
		boolean transferDataIsSupported = TermTransfer.getInstance().isSupportedType(transferType);
83
		// maybe don't need this - they will be all TermBase anyway
84
		return target instanceof TermBase && transferDataIsSupported;
85
	}
86

    
87
	/* (non-Javadoc)
88
	 * @see org.eclipse.jface.viewers.ViewerDropAdapter#dragOver(org.eclipse.swt.dnd.DropTargetEvent)
89
	 */
90
	@Override
91
	public void dragOver(DropTargetEvent event) {
92
	    super.dragOver(event);
93
	    TermBase target = (TermBase) getCurrentTarget();
94
	    if(!(target instanceof OrderedTermBase)) {
95
	        // this is to only disable insert between items
96
	        event.feedback = DND.FEEDBACK_SELECT | DND.FEEDBACK_SCROLL;
97
	    }
98

    
99

    
100
	}
101

    
102
}
(2-2/8)