From d12aec9da316db2bc5455157f56f36eac6ba32ce Mon Sep 17 00:00:00 2001 From: Patrick Plitzner Date: Wed, 10 Apr 2019 12:33:23 +0200 Subject: [PATCH] ref #8222 Delete type designations via operations --- .../section/name/TypeDesignationSection.java | 24 ++++++- .../DeleteTypeDesignationOperation.java | 69 +++++++++++++++++++ 2 files changed, 92 insertions(+), 1 deletion(-) create mode 100755 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/operation/DeleteTypeDesignationOperation.java diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/TypeDesignationSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/TypeDesignationSection.java index a930d287d..1e5d53b57 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/TypeDesignationSection.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/TypeDesignationSection.java @@ -12,7 +12,9 @@ package eu.etaxonomy.taxeditor.ui.section.name; import java.util.Collection; import java.util.Comparator; +import org.eclipse.core.commands.operations.IOperationHistory; import org.eclipse.core.runtime.IStatus; +import org.eclipse.e4.ui.workbench.modeling.EPartService; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.ToolBarManager; @@ -31,9 +33,12 @@ import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation; import eu.etaxonomy.cdm.model.name.TaxonName; import eu.etaxonomy.cdm.model.name.TypeDesignationBase; import eu.etaxonomy.cdm.model.taxon.TaxonBase; +import eu.etaxonomy.taxeditor.editor.ITaxonEditor; import eu.etaxonomy.taxeditor.l10n.Messages; +import eu.etaxonomy.taxeditor.model.AbstractUtility; import eu.etaxonomy.taxeditor.model.ImageResources; import eu.etaxonomy.taxeditor.model.MessagingUtils; +import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; import eu.etaxonomy.taxeditor.preference.IPreferenceKeys; import eu.etaxonomy.taxeditor.preference.PreferencesUtil; import eu.etaxonomy.taxeditor.store.CdmStore; @@ -42,7 +47,9 @@ import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement; import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection; import eu.etaxonomy.taxeditor.ui.section.ITaxonBaseDetailSection; +import eu.etaxonomy.taxeditor.ui.section.name.operation.DeleteTypeDesignationOperation; import eu.etaxonomy.taxeditor.ui.section.name.type.CloneTypeWizard; +import eu.etaxonomy.taxeditor.view.e4.details.DetailsPartE4; /** * @author n.hoffmann @@ -140,7 +147,22 @@ public class TypeDesignationSection extends AbstractEntityCollectionSection { + + private final TypeDesignationBase typeDesignation; + + public DeleteTypeDesignationOperation(String label, IUndoContext undoContext, TaxonName taxonName, + TypeDesignationBase typeDesignation, IPostOperationEnabled postOperationEnabled, + ICdmEntitySessionEnabled cdmEntitySessionEnabled) { + super(label, undoContext, taxonName, postOperationEnabled, cdmEntitySessionEnabled); + this.typeDesignation = typeDesignation; + + } + + @Override + public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { + monitor.worked(20); + if (typeDesignation != null && typeDesignation.isPersited()){ + if(element==null){ + CdmStore.getService(INameService.class).deleteTypeDesignation(null, typeDesignation); + } + else{ + CdmStore.getService(INameService.class).deleteTypeDesignation(element.getUuid(), typeDesignation.getUuid()); + } + return postExecute(element); + } + return null; + } + + @Override + public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { + return execute(monitor, info); + } + + @Override + public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { + element.removeTypeDesignation(typeDesignation); + return postExecute(element); + } + +} -- 2.34.1