Project

General

Profile

Download (3.74 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
 * Copyright (C) 2009 EDIT
3
 * European Distributed Institute of Taxonomy
4
 * http://www.e-taxonomy.eu
5
 *
6
 * The contents of this file are subject to the Mozilla Public License Version 1.1
7
 * See LICENSE.TXT at the top of this package for the full license terms.
8
 */
9
package eu.etaxonomy.taxeditor.editor.definedterm.e4.handler;
10

    
11
import java.util.ArrayList;
12
import java.util.Collections;
13
import java.util.List;
14
import java.util.Set;
15

    
16
import javax.inject.Named;
17

    
18
import org.eclipse.core.commands.operations.IUndoContext;
19
import org.eclipse.core.runtime.IStatus;
20
import org.eclipse.e4.core.di.annotations.CanExecute;
21
import org.eclipse.e4.core.di.annotations.Execute;
22
import org.eclipse.e4.ui.di.UISynchronize;
23
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
24
import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
25
import org.eclipse.e4.ui.services.IServiceConstants;
26
import org.eclipse.jface.viewers.IStructuredSelection;
27
import org.eclipse.jface.wizard.WizardDialog;
28
import org.eclipse.swt.widgets.Shell;
29

    
30
import eu.etaxonomy.cdm.model.location.Country;
31
import eu.etaxonomy.cdm.persistence.dto.TermDto;
32
import eu.etaxonomy.taxeditor.editor.definedterm.e4.DefinedTermEditorE4;
33
import eu.etaxonomy.taxeditor.editor.definedterm.operation.MoveDefinedTermOperation;
34
import eu.etaxonomy.taxeditor.featuretree.TermChooseWizard;
35
import eu.etaxonomy.taxeditor.model.AbstractUtility;
36
import eu.etaxonomy.taxeditor.model.MessagingUtils;
37
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
38
import eu.etaxonomy.taxeditor.store.StoreUtil;
39

    
40
/**
41
 *
42
 * @author pplitzner
43
 * @date 06.03.2019
44
 *
45
 */
46
public class MoveDefinedTermHandler {
47

    
48
    @Execute
49
    public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart activePart,
50
            @Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection,
51
            @Named(IServiceConstants.ACTIVE_SHELL) Shell shell,
52
            MHandledMenuItem menuItem,
53
            UISynchronize sync) {
54
        DefinedTermEditorE4 termEditor = (DefinedTermEditorE4) activePart.getObject();
55
        if(StoreUtil.promptCheckIsDirty(termEditor)){
56
            return;
57
        }
58

    
59
        TermDto selectedTerm = (TermDto) selection.getFirstElement();
60

    
61
        TermChooseWizard wizard = new TermChooseWizard(selectedTerm.getTermType());
62
        WizardDialog dialog = new WizardDialog(shell, wizard);
63

    
64
        List<TermDto> selectedTerms = new ArrayList<>();
65
        if (dialog.open() == IStatus.OK) {
66
            selectedTerms = wizard.getSelectedTerms();
67
        }
68

    
69
        if(selectedTerms.size()!=1){
70
            MessagingUtils.warningDialog("Move not possible", this, "You have to select one single target term");
71
            return;
72
        }
73

    
74
        TermDto target = selectedTerms.get(0);
75
        String label = menuItem.getLocalizedLabel();
76
        IUndoContext undoContext = StoreUtil.getUndoContext();
77
        Set<TermDto> movedTerms = Collections.singleton(selectedTerm);
78
        AbstractPostOperation operation =
79
                new MoveDefinedTermOperation(label,
80
                        undoContext,
81
                        target,
82
                        movedTerms,
83
                        termEditor);
84
        AbstractUtility.executeOperation(operation, sync);
85

    
86
    }
87

    
88
    @CanExecute
89
    public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection,
90
            MHandledMenuItem menuItem){
91
        boolean canExecute = false;
92
        Object firstElement = selection.getFirstElement();
93
        canExecute = selection.size()==1
94
                && firstElement instanceof TermDto
95
                // TODO temporary fix for #7933
96
                && !((TermDto) firstElement).getVocabularyUuid().equals(Country.uuidCountryVocabulary);
97
        menuItem.setVisible(canExecute);
98
        return canExecute;
99
    }
100

    
101
}
(4-4/5)