Project

General

Profile

Download (3.18 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.taxeditor.editor.view.derivate.handler;
2

    
3
import javax.inject.Named;
4

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

    
16
import eu.etaxonomy.cdm.api.service.molecular.ISequenceService;
17
import eu.etaxonomy.cdm.model.molecular.Sequence;
18
import eu.etaxonomy.cdm.model.molecular.SingleRead;
19
import eu.etaxonomy.taxeditor.editor.EditorUtil;
20
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
21
import eu.etaxonomy.taxeditor.model.MessagingUtils;
22
import eu.etaxonomy.taxeditor.store.CdmStore;
23

    
24
public class SingleReadReuseHandler {
25

    
26
    @Execute
27
    public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart part,
28
            @Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection){
29
        ISelection clipBoardSelection = LocalSelectionTransfer.getTransfer().getSelection();
30
        TreeNode clipBoardTreeNode = EditorUtil.getTreeNodeOfSelection(clipBoardSelection);
31
        DerivateView derivateView = (DerivateView)part.getObject();
32
        if(derivateView.isDirty()){
33
            MessagingUtils.warningDialog(DerivateView.VIEW_HAS_UNSAVED_CHANGES, this, DerivateView.YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION);
34
            return;
35
        }
36
        if(clipBoardTreeNode!=null && clipBoardTreeNode.getValue() instanceof SingleRead){
37
            SingleRead singleRead = (SingleRead)clipBoardTreeNode.getValue();
38
            Sequence sequence = (Sequence)((TreeNode) selection.getFirstElement()).getValue();
39
            sequence.addSingleRead(singleRead);
40
            CdmStore.getService(ISequenceService.class).merge(sequence);
41

    
42
            derivateView.getConversationHolder().commit();
43
            derivateView.refreshTree();
44
            LocalSelectionTransfer.getTransfer().setSelection(null);
45
        }
46
        derivateView.updateLabelCache();
47
        derivateView.refreshTree();
48
    }
49

    
50
    @CanExecute
51
    public boolean canExecute(@Optional @Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection,
52
            MHandledMenuItem menuItem){
53
        boolean canExecute = false;
54
        canExecute = selection!=null
55
                && selection.size()==1
56
                && selection.getFirstElement() instanceof TreeNode
57
                && ((TreeNode) selection.getFirstElement()).getValue() instanceof Sequence;
58
        Sequence sequence = (Sequence) ((TreeNode) selection.getFirstElement()).getValue();
59
        TreeNode clipboardNode = EditorUtil.getTreeNodeOfSelection(LocalSelectionTransfer.getTransfer().getSelection());
60
        canExecute &= clipboardNode!=null
61
                && clipboardNode.getValue() instanceof SingleRead
62
                && !(sequence.getSingleReads().contains(clipboardNode.getValue()));
63
        menuItem.setVisible(canExecute);
64
        return canExecute;
65
    }
66

    
67
}
(17-17/18)