Project

General

Profile

Download (2.25 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.taxeditor.editor.key.polytomous.e4.handler;
2

    
3
import javax.inject.Named;
4

    
5
import org.eclipse.core.commands.operations.IUndoContext;
6
import org.eclipse.e4.core.di.annotations.CanExecute;
7
import org.eclipse.e4.core.di.annotations.Execute;
8
import org.eclipse.e4.ui.di.UISynchronize;
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.viewers.IStructuredSelection;
13

    
14
import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
15
import eu.etaxonomy.taxeditor.editor.EditorUtil;
16
import eu.etaxonomy.taxeditor.editor.key.polytomous.e4.PolytomousKeyListEditorE4;
17
import eu.etaxonomy.taxeditor.editor.key.polytomous.operation.CreateNodeOperation;
18
import eu.etaxonomy.taxeditor.model.AbstractUtility;
19
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
20

    
21
/**
22
 * Handler responsible for creating sibling nodes of Polytomous Key Nodes
23
 *
24
 * @author c.mathew
25
 *
26
 */
27

    
28
public class CreateSiblingNodeHandlerE4 {
29

    
30
    @Execute
31
    public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart activePart,
32
            @Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection, MHandledMenuItem menuItem,
33
            UISynchronize sync) {
34

    
35
        PolytomousKeyListEditorE4 editor = (PolytomousKeyListEditorE4) activePart.getObject();
36

    
37
            String label = menuItem.getLocalizedLabel();
38
            IUndoContext undoContext = EditorUtil.getUndoContext();
39

    
40
            PolytomousKeyNode keyNode = (PolytomousKeyNode) selection.getFirstElement();
41
            editor.changed(null);
42
            AbstractPostOperation operation = new CreateNodeOperation(label, undoContext, keyNode.getParent(),
43
                    editor);
44
            AbstractUtility.executeOperation(operation, sync);
45
        }
46

    
47
    @CanExecute
48
    public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION)IStructuredSelection selection,
49
            MHandledMenuItem menuItem){
50
        boolean canExecute = false;
51
        canExecute = selection!=null
52
                && !selection.isEmpty()
53
                && selection.getFirstElement() instanceof PolytomousKeyNode;
54
        menuItem.setVisible(canExecute);
55
        return canExecute;
56
    }
57
}
(2-2/6)