ref #6190 removing svn property place holder in first line of code - java files
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / editor / definedterm / DefinedTermDropAdapter.java
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 }