Project

General

Profile

« Previous | Next » 

Revision a4063890

Added by Patrick Plitzner over 5 years ago

ref #7923 Use character transfer instead of LocalSelectionTransfer

View differences:

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