Project

General

Profile

Download (2.93 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.e4;
10

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

    
14
import javax.inject.Inject;
15

    
16
import org.eclipse.e4.ui.di.UISynchronize;
17
import org.eclipse.jface.viewers.StructuredSelection;
18
import org.eclipse.swt.dnd.DND;
19
import org.eclipse.swt.dnd.DropTargetEvent;
20
import org.eclipse.swt.dnd.TransferData;
21

    
22
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
23
import eu.etaxonomy.cdm.model.common.OrderedTermBase;
24
import eu.etaxonomy.cdm.model.common.TermBase;
25
import eu.etaxonomy.taxeditor.editor.definedterm.TermTransfer;
26
import eu.etaxonomy.taxeditor.editor.definedterm.operation.MoveDefinedTermOperation;
27
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
28
import eu.etaxonomy.taxeditor.store.StoreUtil;
29
import eu.etaxonomy.taxeditor.ui.EditViewerDropAdapter;
30

    
31
/**
32
 *
33
 * @author pplitzner
34
 * @since Aug 22, 2017
35
 *
36
 */
37
public class DefinedTermDropAdapterE4 extends EditViewerDropAdapter {
38

    
39
	private final DefinedTermEditorE4 editor;
40

    
41
	@Inject
42
    private UISynchronize sync;
43

    
44
	@Inject
45
	protected DefinedTermDropAdapterE4(DefinedTermEditorE4 editor) {
46
		super(editor.getViewer());
47
		this.editor = editor;
48
	}
49

    
50
	@Override
51
	public boolean performDrop(Object data) {
52

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

    
58
		for (Object droppedTerm : droppedTerms) {
59
			DefinedTermBase term = (DefinedTermBase) droppedTerm;
60
			sourceTerms.add(term);
61
		}
62

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

    
74
		return true;
75
	}
76

    
77
	@Override
78
	public boolean validateDrop(Object target, int operation,
79
			TransferData transferType) {
80
		boolean transferDataIsSupported = TermTransfer.getInstance().isSupportedType(transferType);
81
		// maybe don't need this - they will be all TermBase anyway
82
		return target instanceof TermBase && transferDataIsSupported;
83
	}
84

    
85
	@Override
86
	public void dragOver(DropTargetEvent event) {
87
	    super.dragOver(event);
88
	    TermBase target = (TermBase) getCurrentTarget();
89
	    if(!(target instanceof OrderedTermBase)) {
90
	        // this is to only disable insert between items
91
	        event.feedback = DND.FEEDBACK_SELECT | DND.FEEDBACK_SCROLL;
92
	    }
93

    
94

    
95
	}
96

    
97
}
(2-2/4)