4f2bdf82a3e35d4f79a1392892a2a504d27e22df
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / workingSet / TaxonNodeDropAdapter.java
1 /**
2 * Copyright (C) 2017 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.workingSet;
10
11 import java.util.Set;
12
13 import org.eclipse.jface.util.LocalSelectionTransfer;
14 import org.eclipse.jface.viewers.ISelection;
15 import org.eclipse.jface.viewers.IStructuredSelection;
16 import org.eclipse.jface.viewers.ITreeSelection;
17 import org.eclipse.jface.viewers.ViewerDropAdapter;
18 import org.eclipse.swt.dnd.TransferData;
19
20 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
21 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
22 import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
23 import eu.etaxonomy.taxeditor.editor.l10n.Messages;
24 import eu.etaxonomy.taxeditor.model.MessagingUtils;
25 import eu.etaxonomy.taxeditor.store.CdmStore;
26
27 /**
28 * @author pplitzner
29 * @since Dec 19, 2017
30 *
31 */
32 public class TaxonNodeDropAdapter extends ViewerDropAdapter {
33
34 private WorkingSetEditor workingSetEditor;
35
36 public TaxonNodeDropAdapter(WorkingSetEditor workingSetEditor) {
37 super(workingSetEditor.getTaxonTreeViewer());
38 this.workingSetEditor = workingSetEditor;
39 }
40
41 /**
42 * {@inheritDoc}
43 */
44 @Override
45 public boolean performDrop(Object data) {
46 TaxonNodeDto taxonNodeDto = (TaxonNodeDto) ((ITreeSelection) data).getFirstElement();
47 TaxonNode taxonNode = CdmStore.getService(ITaxonNodeService.class).load(taxonNodeDto.getUuid());
48 //check if node belongs to same classification
49 Set<TaxonNode> taxonSubtreeFilter = workingSetEditor.getWorkingSet().getTaxonSubtreeFilter();
50 if(taxonSubtreeFilter!=null && !taxonSubtreeFilter.isEmpty()){
51 if(!taxonSubtreeFilter.iterator().next().getClassification().equals(taxonNode.getClassification())){
52 MessagingUtils.warningDialog(Messages.TaxonNodeDropAdapter_CLASSIFICATIONS_NO_MATCH, this.getClass(),
53 Messages.TaxonNodeDropAdapter_CLASSIFICATIONS_NO_MATCH_MESSAGE);
54 return false;
55 }
56
57 }
58 workingSetEditor.addTaxonNode(taxonNode);
59 return true;
60 }
61
62 /**
63 * {@inheritDoc}
64 */
65 @Override
66 public boolean validateDrop(Object target, int operation, TransferData transferType) {
67 ISelection selection = LocalSelectionTransfer.getTransfer().getSelection();
68 if(selection instanceof ITreeSelection
69 && ((IStructuredSelection) selection).size()==1
70 && ((IStructuredSelection) selection).getFirstElement() instanceof TaxonNodeDto){
71 return true;
72 }
73 return false;
74 }
75
76
77 }