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
.featuretree
.e4
;
11 import org
.eclipse
.jface
.viewers
.IStructuredSelection
;
12 import org
.eclipse
.jface
.viewers
.TreeViewer
;
13 import org
.eclipse
.swt
.dnd
.DragSourceAdapter
;
14 import org
.eclipse
.swt
.dnd
.DragSourceEvent
;
16 import eu
.etaxonomy
.cdm
.model
.description
.Feature
;
17 import eu
.etaxonomy
.cdm
.model
.term
.TermNode
;
18 import eu
.etaxonomy
.taxeditor
.featuretree
.FeatureNodeTransfer
;
20 public class FeatureNodeDragListener
extends DragSourceAdapter
{
22 private final TreeViewer viewer
;
24 public FeatureNodeDragListener(TreeViewer viewer
) {
29 * Method declared on DragSourceListener
32 public void dragSetData(DragSourceEvent event
) {
33 IStructuredSelection selection
= (IStructuredSelection
) viewer
.getSelection();
34 if(selection
!=null && !selection
.isEmpty()){
35 TermNode
<Feature
>[] featureNodes
= (TermNode
<Feature
>[]) selection
.toList().toArray(new TermNode
[selection
.size()]);
36 if (FeatureNodeTransfer
.getInstance().isSupportedType(event
.dataType
)) {
37 event
.data
= featureNodes
;
43 * Method declared on DragSourceListener
46 public void dragStart(DragSourceEvent event
) {
47 event
.doit
= !viewer
.getSelection().isEmpty()
48 && ((IStructuredSelection
) viewer
.getSelection()).toList()
49 .stream().allMatch(element
-> element
instanceof TermNode
);