Project

General

Profile

Download (3.01 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.TreeNode;
14

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

    
23
public class SingleReadReuseHandler {
24

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

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

    
49
    @CanExecute
50
    public boolean canExecute(@Optional @Named(IServiceConstants.ACTIVE_SELECTION) TreeNode selectedTreeNode, MHandledMenuItem menuItem) {
51
        boolean canExecute = false;
52
        if(selectedTreeNode!=null){
53
            Object value = selectedTreeNode.getValue();
54
            TreeNode clipboardNode = EditorUtil.getTreeNodeOfSelection(LocalSelectionTransfer.getTransfer().getSelection());
55
            if(value instanceof Sequence && clipboardNode!=null && clipboardNode.getValue() instanceof SingleRead
56
                    && !((Sequence) value).getSingleReads().contains(clipboardNode.getValue())){
57
                canExecute = true;
58
            }
59
        }
60
        menuItem.setVisible(canExecute);
61
        return canExecute;
62
    }
63

    
64
}
(17-17/18)