Project

General

Profile

Download (2.66 KB) Statistics
| Branch: | Tag: | Revision:
1

    
2
package eu.etaxonomy.taxeditor.termtree.e4.handler;
3

    
4
import javax.inject.Named;
5

    
6
import org.eclipse.e4.core.di.annotations.CanExecute;
7
import org.eclipse.e4.core.di.annotations.Execute;
8
import org.eclipse.e4.core.di.annotations.Optional;
9
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
10
import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
11
import org.eclipse.e4.ui.services.IServiceConstants;
12
import org.eclipse.jface.util.LocalSelectionTransfer;
13
import org.eclipse.jface.viewers.ISelection;
14
import org.eclipse.jface.viewers.IStructuredSelection;
15

    
16
import eu.etaxonomy.cdm.persistence.dto.TermDto;
17
import eu.etaxonomy.cdm.persistence.dto.TermNodeDto;
18
import eu.etaxonomy.cdm.persistence.dto.TermTreeDto;
19
import eu.etaxonomy.taxeditor.termtree.e4.TermTreeEditor;
20

    
21
public class PasteTermHandler {
22

    
23
    @Execute
24
    public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart part,
25
            @Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection){
26
        TermTreeEditor editor = (TermTreeEditor)part.getObject();
27
        editor.paste(selection);
28
    }
29

    
30
    @CanExecute
31
    public boolean canExecute(@Optional @Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection,
32
            @Named(IServiceConstants.ACTIVE_PART) MPart part,
33
            MHandledMenuItem menuItem){
34
        boolean canExecute = false;
35
        ISelection transferSelection = LocalSelectionTransfer.getTransfer().getSelection();
36
        TermDto term = null;
37
        TermTreeDto moveToTree = null;
38
        if (((IStructuredSelection)transferSelection).getFirstElement() instanceof TermNodeDto){
39
            term = ((TermNodeDto)((IStructuredSelection)transferSelection).getFirstElement()).getTerm();
40
        }
41
        TermNodeDto selectedNode = null;
42
        if (selection.getFirstElement() instanceof TermNodeDto){
43
            selectedNode = (TermNodeDto)selection.getFirstElement();
44
            moveToTree = selectedNode.getTree();
45
        }else if (selection.getFirstElement() instanceof TermTreeDto){
46
            moveToTree = (TermTreeDto)selection.getFirstElement();
47
        }
48
        canExecute = part.getObject() instanceof TermTreeEditor
49
                && selection!=null
50
                && selection.size()==1
51
                && transferSelection instanceof IStructuredSelection
52
                && ((IStructuredSelection)transferSelection).size()==1
53
                && ((IStructuredSelection)transferSelection).getFirstElement() instanceof TermNodeDto
54
                && !moveToTree.getTerms().contains(term) || moveToTree.isAllowDuplicate()
55
                && !moveToTree.isFlat() || selectedNode == null;
56
        menuItem.setVisible(canExecute);
57
        return canExecute;
58
    }
59

    
60
}
(7-7/11)