Revision fd61512c
Added by Patrick Plitzner over 5 years ago
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/e4/DefinedTermDropAdapterE4.java | ||
---|---|---|
14 | 14 |
import javax.inject.Inject; |
15 | 15 |
|
16 | 16 |
import org.eclipse.e4.ui.di.UISynchronize; |
17 |
import org.eclipse.jface.util.LocalSelectionTransfer; |
|
18 |
import org.eclipse.jface.viewers.IStructuredSelection; |
|
17 | 19 |
import org.eclipse.jface.viewers.StructuredSelection; |
18 |
import org.eclipse.swt.dnd.DND; |
|
19 | 20 |
import org.eclipse.swt.dnd.DropTargetEvent; |
20 | 21 |
import org.eclipse.swt.dnd.TransferData; |
21 | 22 |
|
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; |
|
23 |
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto; |
|
24 |
import eu.etaxonomy.cdm.persistence.dto.TermDto; |
|
26 | 25 |
import eu.etaxonomy.taxeditor.editor.definedterm.operation.MoveDefinedTermOperation; |
26 |
import eu.etaxonomy.taxeditor.model.AbstractUtility; |
|
27 | 27 |
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation; |
28 | 28 |
import eu.etaxonomy.taxeditor.store.StoreUtil; |
29 | 29 |
import eu.etaxonomy.taxeditor.ui.EditViewerDropAdapter; |
... | ... | |
50 | 50 |
@Override |
51 | 51 |
public boolean performDrop(Object data) { |
52 | 52 |
|
53 |
TermBase target = (TermBase) getCurrentTarget();//can be vocab
|
|
53 |
AbstractTermDto target = (AbstractTermDto) getCurrentTarget();//can be vocab
|
|
54 | 54 |
int currentLocation = getCurrentLocation(); |
55 |
Object[] droppedTerms = (Object[]) data;
|
|
56 |
Collection<DefinedTermBase> sourceTerms = new ArrayList<DefinedTermBase>(); //Arrays.asList(droppedElements)
|
|
55 |
IStructuredSelection droppedTerms = (IStructuredSelection) data;
|
|
56 |
Collection<TermDto> sourceTerms = new ArrayList<>(); //Arrays.asList(droppedElements)
|
|
57 | 57 |
|
58 |
for (Object droppedTerm : droppedTerms) { |
|
59 |
DefinedTermBase term = (DefinedTermBase) droppedTerm;
|
|
58 |
for (Object droppedTerm : droppedTerms.toList()) {
|
|
59 |
TermDto term = (TermDto) droppedTerm;
|
|
60 | 60 |
sourceTerms.add(term); |
61 | 61 |
} |
62 | 62 |
|
... | ... | |
66 | 66 |
sourceTerms, |
67 | 67 |
editor, |
68 | 68 |
currentLocation); |
69 |
//TODO: implement execute |
|
70 |
StoreUtil.executeOperation(operation, sync); |
|
69 |
AbstractUtility.executeOperation(operation, sync); |
|
71 | 70 |
// select the newly moved objects |
72 |
editor.getViewer().setSelection(new StructuredSelection(sourceTerms.toArray(new TermBase[sourceTerms.size()])));
|
|
71 |
editor.getViewer().setSelection(new StructuredSelection(sourceTerms)); |
|
73 | 72 |
|
74 | 73 |
return true; |
75 | 74 |
} |
... | ... | |
77 | 76 |
@Override |
78 | 77 |
public boolean validateDrop(Object target, int operation, |
79 | 78 |
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 |
|
|
79 |
return LocalSelectionTransfer.getTransfer().isSupportedType(transferType) && target instanceof AbstractTermDto; |
|
95 | 80 |
} |
96 | 81 |
|
97 | 82 |
} |
Also available in: Unified diff
ref #7887 Adapt moving terms based on DTOs