Project

General

Profile

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

    
3
import java.util.ArrayList;
4
import java.util.List;
5
import java.util.UUID;
6

    
7
import javax.inject.Named;
8

    
9
import org.apache.log4j.Logger;
10
import org.eclipse.e4.core.di.annotations.CanExecute;
11
import org.eclipse.e4.core.di.annotations.Execute;
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
import org.eclipse.swt.widgets.Shell;
17
import org.eclipse.ui.IEditorInput;
18

    
19
import eu.etaxonomy.cdm.model.common.CdmBase;
20
import eu.etaxonomy.cdm.model.taxon.Synonym;
21
import eu.etaxonomy.cdm.model.taxon.Taxon;
22
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
23
import eu.etaxonomy.taxeditor.editor.EditorUtil;
24
import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
25
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
26
import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
27
import eu.etaxonomy.taxeditor.editor.name.handler.NameEditorMenuPropertyTester;
28
import eu.etaxonomy.taxeditor.editor.name.operation.MoveSynonymToAnotherAcceptedTaxonOperation;
29
import eu.etaxonomy.taxeditor.model.AbstractUtility;
30
import eu.etaxonomy.taxeditor.model.MessagingUtils;
31
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
32
import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog;
33

    
34
public class MoveSynonymToAnotherAcceptedTaxonHandlerE4 implements IPostOperationEnabled{
35
	private static final Logger logger = Logger
36
	.getLogger(MoveSynonymToAnotherAcceptedTaxonHandlerE4.class);
37

    
38
	@Execute
39
    public void execute(@Named(IServiceConstants.ACTIVE_PART)MPart activePart,
40
            @Named(IServiceConstants.ACTIVE_SELECTION)IStructuredSelection selection,
41
            @Named(IServiceConstants.ACTIVE_SHELL)Shell shell) {
42

    
43
        TaxonNameEditorE4 editor = (TaxonNameEditorE4) activePart.getObject();
44

    
45
		IEditorInput input = editor.getEditorInput();
46

    
47
		if (!EditorUtil.forceUserSaveE4Editor(editor, shell)) {
48
			return ;
49
		}
50

    
51
		if (!(input instanceof TaxonEditorInput)) {
52
			logger.error("Editor input is not TaxonEditorInput"); //$NON-NLS-1$
53
			return ;
54
		}
55

    
56
		if (selection==null || !(selection.getFirstElement() instanceof Synonym)) {
57
		    MessagingUtils.warningDialog(Messages.MoveSynonymToAnotherAcceptedTaxonHandler_NO_SELECTION, this, Messages.MoveSynonymToAnotherAcceptedTaxonHandler_NO_SELECTION_MESSAGE);
58
			logger.error("Selection does not contain a Synonym"); //$NON-NLS-1$
59
			return ;
60
		}
61

    
62
		Synonym synonym = (Synonym) selection.getFirstElement();
63
		Taxon oldParent = ((TaxonEditorInput)input).getTaxon();
64
		List<UUID> excludeTaxa = new ArrayList<UUID>();
65
		excludeTaxa.add(oldParent.getUuid());
66

    
67

    
68
		TaxonNode newParentNode = TaxonNodeSelectionDialog.select(shell, editor.getConversationHolder(), Messages.MoveSynonymToAnotherAcceptedTaxonHandler_SELECT_ACC_TAXON, excludeTaxa,  ((TaxonEditorInput)input).getTaxonNode(), ((TaxonEditorInput)input).getTaxonNode().getClassification());
69

    
70
		if(newParentNode!=null){
71
		   MoveSynonymToAnotherAcceptedTaxonOperation operation = new MoveSynonymToAnotherAcceptedTaxonOperation(Messages.MoveSynonymToAnotherAcceptedTaxonHandler_CHANGE_ACC_TAXON, EditorUtil.getUndoContext(),
72
		            oldParent.getUuid(), synonym.getUuid(), newParentNode.getTaxon(), editor);
73

    
74
		    AbstractUtility.executeOperation(operation);
75
		}
76
	}
77

    
78
    @CanExecute
79
    public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION)IStructuredSelection selection,
80
            MHandledMenuItem menuItem){
81
        boolean canExecute = false;
82
        Object selectedElement = selection.getFirstElement();
83
        canExecute =
84
                NameEditorMenuPropertyTester.isSynonym(selectedElement)
85
                        && NameEditorMenuPropertyTester.isNotHomotypicSynonymOfAcceptedTaxon(selectedElement);
86

    
87
        menuItem.setVisible(canExecute);
88
        return canExecute;
89
    }
90

    
91
	@Override
92
	public boolean postOperation(CdmBase objectAffectedByOperation) {
93
		return false;
94
	}
95

    
96
	@Override
97
	public boolean onComplete() {
98
		return false;
99
	}
100

    
101
}
(10-10/12)