Project

General

Profile

Download (2.76 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
 *
3
 */
4
package eu.etaxonomy.taxeditor.editor.key.polytomous.e4.handler;
5

    
6
import javax.inject.Named;
7

    
8
import org.eclipse.core.commands.operations.IUndoContext;
9
import org.eclipse.e4.core.di.annotations.CanExecute;
10
import org.eclipse.e4.core.di.annotations.Execute;
11
import org.eclipse.e4.ui.di.UISynchronize;
12
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
13
import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
14
import org.eclipse.e4.ui.services.IServiceConstants;
15
import org.eclipse.jface.viewers.IStructuredSelection;
16

    
17
import eu.etaxonomy.cdm.model.description.PolytomousKey;
18
import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
19
import eu.etaxonomy.taxeditor.editor.EditorUtil;
20
import eu.etaxonomy.taxeditor.editor.key.polytomous.e4.PolytomousKeyListEditorE4;
21
import eu.etaxonomy.taxeditor.editor.key.polytomous.operation.CreateNodeOperation;
22
import eu.etaxonomy.taxeditor.model.AbstractUtility;
23
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
24

    
25
/**
26
 *
27
 * @author pplitzner
28
 * @since Sep 28, 2017
29
 *
30
 */
31
public class CreateChildNodeHandlerE4 {
32

    
33

    
34
    @Execute
35
    public void execute(@Named(IServiceConstants.ACTIVE_PART)MPart activePart,
36
            @Named(IServiceConstants.ACTIVE_SELECTION)IStructuredSelection selection,
37
            MHandledMenuItem menuItem,
38
            UISynchronize sync) {
39

    
40
        PolytomousKeyListEditorE4 editor = (PolytomousKeyListEditorE4) activePart.getObject();
41

    
42
        if(editor.getTableItemCount() == 0) {
43
            PolytomousKey pk = editor.getViewerInputKey();
44
            String label = menuItem.getLocalizedLabel();
45
            IUndoContext undoContext = EditorUtil.getUndoContext();
46
            editor.changed(null);
47

    
48
            AbstractPostOperation operation = new CreateNodeOperation(
49
                    label, undoContext, pk.getRoot(), editor);
50
            AbstractUtility.executeOperation(operation, sync);
51
        } else {
52

    
53
            String label = menuItem.getLocalizedLabel();
54
            IUndoContext undoContext = EditorUtil.getUndoContext();
55

    
56
            PolytomousKeyNode keyNode = (PolytomousKeyNode) selection
57
                    .getFirstElement();
58
            editor.changed(null);
59
            AbstractPostOperation operation = new CreateNodeOperation(
60
                    label, undoContext, keyNode, editor);
61
            AbstractUtility.executeOperation(operation, sync);
62
        }
63
    }
64

    
65
    @CanExecute
66
    public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION)IStructuredSelection selection,
67
            MHandledMenuItem menuItem){
68
        boolean canExecute = false;
69
        canExecute = selection!=null
70
                && !selection.isEmpty()
71
                && selection.getFirstElement() instanceof PolytomousKeyNode;
72
        menuItem.setVisible(canExecute);
73
        return canExecute;
74
    }
75

    
76
}
(1-1/6)