Project

General

Profile

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

    
3
import org.eclipse.core.commands.AbstractHandler;
4
import org.eclipse.core.commands.ExecutionEvent;
5
import org.eclipse.core.commands.ExecutionException;
6
import org.eclipse.jface.util.LocalSelectionTransfer;
7
import org.eclipse.jface.viewers.ISelection;
8
import org.eclipse.jface.viewers.TreeNode;
9
import org.eclipse.ui.IEditorPart;
10
import org.eclipse.ui.PlatformUI;
11

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

    
20
public class SingleReadHandler extends AbstractHandler {
21

    
22
    @Override
23
    public Object execute(ExecutionEvent event) throws ExecutionException {
24
        IEditorPart activeEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
25
        ISelection clipBoardSelection = LocalSelectionTransfer.getTransfer().getSelection();
26
        final ISelection selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getSelection();
27
        TreeNode clipBoardTreeNode = EditorUtil.getTreeNodeOfSelection(clipBoardSelection);
28
        TreeNode selectedTreeNode = EditorUtil.getTreeNodeOfSelection(selection);
29
        if(activeEditor instanceof DerivateView) {
30
            DerivateView derivateView = (DerivateView)activeEditor;
31
            if(event.getCommand().getId().equals("eu.etaxonomy.taxeditor.editor.derivative.copySingleReadToClipBoard")){ //$NON-NLS-1$
32
                LocalSelectionTransfer.getTransfer().setSelection(selection);
33
            }
34
            else if(event.getCommand().getId().equals("eu.etaxonomy.taxeditor.editor.derivative.reuseSingleRead")){ //$NON-NLS-1$
35
                if(activeEditor.isDirty()){
36
                    MessagingUtils.warningDialog(DerivateView.VIEW_HAS_UNSAVED_CHANGES, this, DerivateView.YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION);
37
                    return null;
38
                }
39
                if(clipBoardTreeNode!=null && clipBoardTreeNode.getValue() instanceof SingleRead
40
                        && selectedTreeNode!=null && selectedTreeNode.getValue() instanceof Sequence){
41
                    SingleRead singleRead = (SingleRead)clipBoardTreeNode.getValue();
42
                    Sequence sequence = (Sequence)selectedTreeNode.getValue();
43
                    sequence.addSingleRead(singleRead);
44
                    CdmStore.getService(ISequenceService.class).merge(sequence);
45
                   
46
                    if(activeEditor instanceof DerivateView) {
47
                        derivateView.getConversationHolder().commit();
48
                        derivateView.refreshTree();
49
                        LocalSelectionTransfer.getTransfer().setSelection(null);
50
                    }
51
                }
52
            }
53
            else if(event.getCommand().getId().equals("eu.etaxonomy.taxeditor.editor.derivative.removeSingleReadFromSequence")){ //$NON-NLS-1$
54
                if(activeEditor.isDirty()){
55
                    MessagingUtils.warningDialog(DerivateView.VIEW_HAS_UNSAVED_CHANGES, this, DerivateView.YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION);
56
                    return null;
57
                }
58
                if(selectedTreeNode!=null && selectedTreeNode.getParent()!=null &&
59
                        selectedTreeNode.getValue() instanceof SingleRead && selectedTreeNode.getParent().getValue() instanceof Sequence) {
60
                    Sequence sequence = (Sequence) selectedTreeNode.getParent().getValue();
61
                    sequence.removeSingleRead((SingleRead) selectedTreeNode.getValue());
62
                    CdmStore.getService(ISequenceService.class).merge(sequence);
63
                    
64
                    if(activeEditor instanceof DerivateView) {
65
                        derivateView.getConversationHolder().commit();
66
                        derivateView.refreshTree();
67
                    }
68
                }
69
            }
70
            derivateView.updateLabelCache();
71
            derivateView.refreshTree();
72
        }
73
        return null;
74
    }
75

    
76
}
(5-5/6)