Project

General

Profile

Download (3.39 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2009 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.definedterm;
11

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

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

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

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

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

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

    
50
		TermBase target = (TermBase) getCurrentTarget();//can be vocab
51
		int currentLocation = getCurrentLocation();
52
		System.out.println("current location : " + currentLocation + " , target : " + target.getTitleCache());
53
		//DefinedTermBase[] droppedElements = (DefinedTermBase[]) data;
54
		Object[] droppedTerms = (Object[]) data;
55
		Collection<DefinedTermBase> sourceTerms = new ArrayList<DefinedTermBase>(); //Arrays.asList(droppedElements)
56

    
57
		for (Object droppedTerm : droppedTerms) {
58

    
59
			DefinedTermBase term = (DefinedTermBase) droppedTerm;
60
			sourceTerms.add(term);
61

    
62
		}
63

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

    
75
		return true;
76
	}
77

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

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

    
101

    
102
	}
103

    
104
}
(2-2/8)