Revision a4063890
Added by Patrick Plitzner over 5 years ago
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/character/CharacterDropAdapter.java | ||
---|---|---|
8 | 8 |
*/ |
9 | 9 |
package eu.etaxonomy.taxeditor.editor.descriptiveDataSet.character; |
10 | 10 |
|
11 |
import java.util.Iterator; |
|
12 |
|
|
13 | 11 |
import org.eclipse.e4.ui.di.UISynchronize; |
14 |
import org.eclipse.jface.util.LocalSelectionTransfer; |
|
15 |
import org.eclipse.jface.viewers.ISelection; |
|
16 |
import org.eclipse.jface.viewers.IStructuredSelection; |
|
17 | 12 |
import org.eclipse.jface.viewers.Viewer; |
18 | 13 |
import org.eclipse.swt.dnd.DropTargetEvent; |
19 | 14 |
import org.eclipse.swt.dnd.TransferData; |
... | ... | |
22 | 17 |
import eu.etaxonomy.cdm.model.description.Character; |
23 | 18 |
import eu.etaxonomy.cdm.model.description.FeatureNode; |
24 | 19 |
import eu.etaxonomy.cdm.model.description.FeatureTree; |
20 |
import eu.etaxonomy.taxeditor.featuretree.CharacterTransfer; |
|
25 | 21 |
import eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeDropAdapter; |
26 | 22 |
import eu.etaxonomy.taxeditor.featuretree.e4.IFeatureTreeEditor; |
27 | 23 |
import eu.etaxonomy.taxeditor.store.CdmStore; |
... | ... | |
46 | 42 |
|
47 | 43 |
@Override |
48 | 44 |
public boolean performDrop(Object data) { |
45 |
if(!CharacterTransfer.getInstance().isSupportedType(getCurrentEvent().currentDataType)){ |
|
46 |
return super.performDrop(data); |
|
47 |
} |
|
49 | 48 |
if(StoreUtil.checkDirty(editor)){ |
50 | 49 |
return false; |
51 | 50 |
} |
52 | 51 |
FeatureNode target = (FeatureNode) getCurrentTarget(); |
53 |
ISelection selection = LocalSelectionTransfer.getTransfer().getSelection(); |
|
54 |
if(selection!=null |
|
55 |
&&selection instanceof IStructuredSelection |
|
56 |
){ |
|
57 |
IStructuredSelection structuredSelection = (IStructuredSelection)selection; |
|
58 |
Iterator iterator = structuredSelection.iterator(); |
|
59 |
while(iterator.hasNext()){ |
|
60 |
Object next = iterator.next(); |
|
61 |
if(next instanceof Character){ |
|
62 |
Character character = (Character)next; |
|
52 |
if(data instanceof Object[]){ |
|
53 |
Object[] transferObjects = (Object[])data; |
|
54 |
for(int i=0;i<transferObjects.length;i++){ |
|
55 |
Object object = transferObjects[i]; |
|
56 |
if(object instanceof Character){ |
|
57 |
Character character = (Character)object; |
|
63 | 58 |
if(target==null){ |
64 |
//drop on feature tree
|
|
65 |
target = ((FeatureTree)getViewer().getInput()).getRoot();
|
|
66 |
}
|
|
67 |
CdmStore.getService(IFeatureNodeService.class).addChildFeatureNode(target.getUuid(), character.getUuid());
|
|
59 |
//drop on feature tree
|
|
60 |
target = ((FeatureTree)getViewer().getInput()).getRoot();
|
|
61 |
}
|
|
62 |
CdmStore.getService(IFeatureNodeService.class).createChildFeatureNode(target, character);
|
|
68 | 63 |
} |
69 | 64 |
} |
70 | 65 |
getViewer().refresh(); |
71 |
LocalSelectionTransfer.getTransfer().setSelection(null); |
|
72 | 66 |
return true; |
73 | 67 |
} |
74 |
return super.performDrop(data);
|
|
68 |
return false;
|
|
75 | 69 |
} |
76 | 70 |
|
77 | 71 |
@Override |
78 | 72 |
public boolean validateDrop(Object target, int operation, |
79 | 73 |
TransferData transferData) { |
80 |
LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer(); |
|
81 |
boolean valid = true; |
|
82 |
valid &= transfer.getSelection()!=null |
|
83 |
&& !transfer.getSelection().isEmpty(); |
|
84 |
if(!valid){ |
|
85 |
return super.validateDrop(target, operation, transferData); |
|
74 |
if(CharacterTransfer.getInstance().isSupportedType(transferData)){ |
|
75 |
return true; |
|
86 | 76 |
} |
87 |
return valid;
|
|
77 |
return super.validateDrop(target, operation, transferData);
|
|
88 | 78 |
} |
89 | 79 |
|
90 | 80 |
} |
Also available in: Unified diff
ref #7923 Use character transfer instead of LocalSelectionTransfer