2 * Copyright (C) 2017 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
9 package eu
.etaxonomy
.taxeditor
.editor
.workingSet
;
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
;
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
;
32 public class TaxonNodeDropAdapter
extends ViewerDropAdapter
{
34 private WorkingSetEditor workingSetEditor
;
36 public TaxonNodeDropAdapter(WorkingSetEditor workingSetEditor
) {
37 super(workingSetEditor
.getTaxonTreeViewer());
38 this.workingSetEditor
= workingSetEditor
;
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
);
58 workingSetEditor
.addTaxonNode(taxonNode
);
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
){