<handlers xmi:id="_b8sJAIdQEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.DeleteTermBaseHandlerE4" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.DeleteTermBaseHandlerE4" command="_Z_XgsIdQEeecZ4F2Y9Z0Og"/>
<handlers xmi:id="_B7cTkIfSEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.CreateDefinedTermHandlerE4.newDefinedTerm" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.CreateDefinedTermHandlerE4" command="_GTbAcIfSEeecZ4F2Y9Z0Og"/>
<handlers xmi:id="_NqtXEIfSEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.CreateDefinedTermHandlerE4.newKindOfTerm" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.CreateDefinedTermHandlerE4" command="_LMwG4IfSEeecZ4F2Y9Z0Og"/>
+ <handlers xmi:id="_yPjL8EAVEembfJNLZI9wiA" elementId="eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.MoveDefinedTermHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.MoveDefinedTermHandler" command="_d6YpoEAVEembfJNLZI9wiA"/>
<menus xsi:type="menu:PopupMenu" xmi:id="_CoJioIdQEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.popupmenu.termeditor">
<children xsi:type="menu:Menu" xmi:id="_DR1Y0IdQEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.menu.menulabel0" label="%menu.label.0">
<children xsi:type="menu:HandledMenuItem" xmi:id="_N22PsIdQEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.commandlabel12" label="%command.label.12" command="_5mFFMIdPEeecZ4F2Y9Z0Og"/>
</children>
</children>
<children xsi:type="menu:HandledMenuItem" xmi:id="_W94ssIdQEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.commandlabel14" label="%command.label.14" command="_Z_XgsIdQEeecZ4F2Y9Z0Og"/>
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_aHm7kEAVEembfJNLZI9wiA" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.moveto" label="Move term" command="_d6YpoEAVEembfJNLZI9wiA"/>
</menus>
</elements>
<elements xsi:type="basic:PartDescriptor" xmi:id="_HBpj0KkNEeejedk4mZQIGw" elementId="eu.etaxonomy.taxeditor.view.dataimport.e4.SpecimenImportViewE4" label="%view.name.7" allowMultiple="true" closeable="true" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.view.dataimport.e4.SpecimenImportViewE4">
<elements xsi:type="commands:Command" xmi:id="_xyZ4oPhmEei8uPv-H2wqnw" elementId="eu.etaxonomy.taxeditor.store.command.featureTree.exportTreeOntology" commandName="%command.commandname.14"/>
<elements xsi:type="commands:Command" xmi:id="_qYxw8D85EemTy7SLZkowuQ" elementId="eu.etaxonomy.taxeditor.store.command.OpenDatabaseRepairWizard" commandName="Open Cache Updater"/>
<elements xsi:type="commands:Command" xmi:id="_VUQY0D86EemTy7SLZkowuQ" elementId="eu.etaxonomy.taxeditor.store.command.openSortIndexUpdaterWizard" commandName="Open Sort Index Updater"/>
+ <elements xsi:type="commands:Command" xmi:id="_d6YpoEAVEembfJNLZI9wiA" elementId="eu.etaxonomy.taxeditor.editor.definedTerms.moveTerm" commandName="Move Term"/>
</fragments>
<fragments xsi:type="fragment:StringModelFragment" xmi:id="_swGH0GhvEee3K4uKJljEYg" featurename="handlers" parentElementId="xpath:/">
<elements xsi:type="commands:Handler" xmi:id="_rVEdIGcjEee0qLTtA2ZpVQ" elementId="eu.etaxonomy.taxeditor.featuretree.e4.handler.RemoveFeatureHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.featuretree.e4.handler.RemoveFeatureHandler" command="_fNBtQGcjEee0qLTtA2ZpVQ"/>
--- /dev/null
+/**
+ * Copyright (C) 2009 EDIT
+ * European Distributed Institute of Taxonomy
+ * http://www.e-taxonomy.eu
+ *
+ * The contents of this file are subject to the Mozilla Public License Version 1.1
+ * See LICENSE.TXT at the top of this package for the full license terms.
+ */
+package eu.etaxonomy.taxeditor.editor.definedterm.e4.handler;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+import javax.inject.Named;
+
+import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.di.UISynchronize;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Shell;
+
+import eu.etaxonomy.cdm.model.location.Country;
+import eu.etaxonomy.cdm.persistence.dto.TermDto;
+import eu.etaxonomy.taxeditor.editor.definedterm.e4.DefinedTermEditorE4;
+import eu.etaxonomy.taxeditor.editor.definedterm.operation.MoveDefinedTermOperation;
+import eu.etaxonomy.taxeditor.featuretree.TermChooseWizard;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+
+/**
+ *
+ * @author pplitzner
+ * @date 06.03.2019
+ *
+ */
+public class MoveDefinedTermHandler {
+
+ @Execute
+ public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart activePart,
+ @Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection,
+ @Named(IServiceConstants.ACTIVE_SHELL) Shell shell,
+ MHandledMenuItem menuItem,
+ UISynchronize sync) {
+ DefinedTermEditorE4 termEditor = (DefinedTermEditorE4) activePart.getObject();
+ if(StoreUtil.promptCheckIsDirty(termEditor)){
+ return;
+ }
+
+ TermDto selectedTerm = (TermDto) selection.getFirstElement();
+
+ TermChooseWizard wizard = new TermChooseWizard(selectedTerm.getTermType());
+ WizardDialog dialog = new WizardDialog(shell, wizard);
+
+ List<TermDto> selectedTerms = new ArrayList<>();
+ if (dialog.open() == IStatus.OK) {
+ selectedTerms = wizard.getSelectedTerms();
+ }
+
+ if(selectedTerms.size()!=1){
+ MessagingUtils.warningDialog("Move not possible", this, "You have to select one single target term");
+ return;
+ }
+
+ TermDto target = selectedTerms.get(0);
+ String label = menuItem.getLocalizedLabel();
+ IUndoContext undoContext = StoreUtil.getUndoContext();
+ Set<TermDto> movedTerms = Collections.singleton(selectedTerm);
+ AbstractPostOperation operation =
+ new MoveDefinedTermOperation(label,
+ undoContext,
+ target,
+ movedTerms,
+ termEditor);
+ AbstractUtility.executeOperation(operation, sync);
+
+ }
+
+ @CanExecute
+ public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection,
+ MHandledMenuItem menuItem){
+ boolean canExecute = false;
+ Object firstElement = selection.getFirstElement();
+ canExecute = selection.size()==1
+ && firstElement instanceof TermDto
+ // TODO temporary fix for #7933
+ && !((TermDto) firstElement).getVocabularyUuid().equals(Country.uuidCountryVocabulary);
+ menuItem.setVisible(canExecute);
+ return canExecute;
+ }
+
+}