public static String DeleteDescriptiveDatasetHandler_Exception_Message;
public static String CharacterMatrix_ONLY_REMOVE;
public static String CharacterMatrix_DELETE_DESCRIPTION;
+ public static String ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Handling_message;
+ public static String ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Handling_title;
+ public static String ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Parent;
+ public static String ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Select;
+ public static String ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Keep;
static {
FactualDataView_Lable=Factual Data
NameFactsDataView_Lable=Name Facts
DeleteDescriptiveDatasetHandler_Exception_Message=Descriptive Dataset could not be deleted.
-DeleteDescriptiveDatasetHandler_Warning_Message=Deletion was successful but with warnings.
\ No newline at end of file
+DeleteDescriptiveDatasetHandler_Warning_Message=Deletion was successful but with warnings.
+ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Handling_message=Select secundum reference
+ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Handling_title=The secundum reference of the selected parent is different to the secundum of the synonym. Please select which secundum should be used for the accepted taxon.
+ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Parent=Parent secundum
+ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Select=Select new
+ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Keep=Keep secundum
\ No newline at end of file
FactualDataView_Lable=Faktendaten
NameFactsDataView_Lable=Namensfaktendaten
DeleteDescriptiveDatasetHandler_Exception_Message=Das Descriptive Dataset konnte nicht gelöscht werden.
-DeleteDescriptiveDatasetHandler_Warning_Message=Das Löschen war erfolgreich, es gibt aber Warnungen.
\ No newline at end of file
+DeleteDescriptiveDatasetHandler_Warning_Message=Das Löschen war erfolgreich, es gibt aber Warnungen.
+ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Handling_message=Auswahl der Sekundum Referenz
+ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Handling_title=Die Sekundum Referenzen des gewählten Eltern und des alten akzeptierten Taxons unterscheiden sich, bitte wählen Sie welche Sekundum Referenz für das neue Synonym verwendet werden soll
+ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Parent=Eltern Secundum
+ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Select=Neue auswählen
+ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Keep=Secundum beibehalten
\ No newline at end of file
package eu.etaxonomy.taxeditor.editor.name.e4.handler;
import java.util.Set;
+import java.util.UUID;
import javax.inject.Named;
import eu.etaxonomy.cdm.model.taxon.Synonym;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.editor.e4.TaxonEditorInputE4;
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
import eu.etaxonomy.taxeditor.editor.name.handler.NameEditorMenuPropertyTester;
import eu.etaxonomy.taxeditor.editor.name.operation.ChangeSynonymToAcceptedTaxonOperation;
+import eu.etaxonomy.taxeditor.event.EventUtility;
+import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
//compare parentSec and synSec and ask for handling.
SecReferenceHandlingEnum secHandling = PreferencesUtil.getSecReferenceHandlingPreference();
- Reference newSec = null;
+ UUID newSecUuid = null;
if ((synSecRef != parentSecRef && secHandling.equals(SecReferenceHandlingEnum.KeepWhenSame) )|| secHandling.equals(SecReferenceHandlingEnum.WarningSelect)){
- String message = null;
- if (secHandling.equals(SecReferenceHandlingEnum.KeepWhenSame)){
- message = "The secundum reference of the former synonym is not the same as the secundum of the new parent, therefore please select the secundum reference for the new accepted taxon.";
- }else{
- message = "Please select the secundum reference for the new accepted taxon.";
- }
-
- int result = MessagingUtils.confirmDialog("Select secundum reference for accepted taxon", message, new String[]{"OK", "Cancel"});
- if (result == 0){
- newSec = ReferenceSelectionDialog.select(shell, null);
- }else{
- return;
- }
+
+ if ((parentSecRef != synSecRef && secHandling.equals(SecReferenceHandlingEnum.KeepWhenSame) )|| secHandling.equals(SecReferenceHandlingEnum.WarningSelect)){
+ int result = MessagingUtils.confirmDialog(Messages.ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Handling_title, Messages.ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Handling_message,
+ new String[]{Messages.ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Keep, Messages.ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Parent, Messages.ChangeSynonymToAcceptedHandler_Select_Sec_Reference_Select});
+ if (result == 2){
+ Reference sec = ReferenceSelectionDialog.select(shell, null);
+ newSecUuid = sec != null? sec.getUuid(): null;
+ }else if (result == 1){
+ newSecUuid = parentSecRef != null? parentSecRef.getUuid(): null;
+ }else if (result == 0){
+ newSecUuid = synSecRef != null? synSecRef.getUuid(): null;
+ }else{
+ return ;
+ }
+
+ }
+ // String message = null;
+// if (secHandling.equals(SecReferenceHandlingEnum.KeepWhenSame)){
+// message = "The secundum reference of the former synonym is not the same as the secundum of the new parent, therefore please select the secundum reference for the new accepted taxon.";
+// }else{
+// message = "Please select the secundum reference for the new accepted taxon.";
+// }
+//
+// int result = MessagingUtils.confirmDialog("Select secundum reference for accepted taxon", message, new String[]{"OK", "Cancel"});
+// if (result == 0){
+// newSec = ReferenceSelectionDialog.select(shell, null);
+// }else{
+// return;
+// }
}
ChangeSynonymToAcceptedTaxonOperation operation = new ChangeSynonymToAcceptedTaxonOperation(Messages.ChangeSynonymToAcceptedTaxonHandler_CHANGE_SYN_TO_ACC_TAXON, EditorUtil.getUndoContext(),
taxon, newParentNode, synonym, namesInGroup,
- newSec, secHandling,
+ newSecUuid, secHandling,
this, editor, editor.getEditorInput()); //$NON-NLS-1$
AbstractUtility.executeOperation(operation, sync);
editor.save(AbstractUtility.getMonitor());
- if (objectAffectedByOperation instanceof TaxonNode) {
- // Open new unsaved editor with existing taxon's parent as temporary parent
+ if (objectAffectedByOperation instanceof TaxonNode) {
TaxonNode newNode = (TaxonNode) objectAffectedByOperation;
-
- EditorUtil.openTaxonNodeE4(newNode.getUuid(), modelService, partService, application);
+ EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAVIGATOR, new TaxonNodeDto(newNode));
+// EditorUtil.openTaxonNodeE4(newNode.getUuid(), modelService, partService, application);
}
return true;
}
package eu.etaxonomy.taxeditor.editor.name.operation;
import java.util.Set;
+import java.util.UUID;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.operations.IUndoContext;
import eu.etaxonomy.cdm.api.service.exception.HomotypicalGroupChangeException;
import eu.etaxonomy.cdm.model.metadata.SecReferenceHandlingEnum;
import eu.etaxonomy.cdm.model.name.TaxonName;
-import eu.etaxonomy.cdm.model.reference.Reference;
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
import eu.etaxonomy.cdm.model.taxon.Synonym;
import eu.etaxonomy.cdm.model.taxon.Taxon;
private final ITaxonTreeNode parentNode;
private TaxonNode newNode;
- private Reference newSecRef;
+ private UUID newSecRefUuid;
private SecReferenceHandlingEnum secHandling;
//private final Set<TaxonName> namesInHomotypicGroup;
ITaxonTreeNode parentNode,
Synonym synonym,
Set<TaxonName> namesInHomotypicalGroup,
- Reference newSec,
+ UUID newSecUuid,
SecReferenceHandlingEnum secHandling,
IPostOperationEnabled postOperationEnabled,
IConversationEnabled conversationEnabled,
this.element = taxon;
this.parentNode = parentNode;
this.synonym = synonym;
- this.newSecRef = newSec;
+ this.newSecRefUuid = newSecUuid;
this.secHandling = secHandling;
//this.namesInHomotypicGroup = namesInHomotypicalGroup;
}
result = CdmStore.getService(ITaxonService.class).changeSynonymToAcceptedTaxon(synonym.getUuid(),
element.getUuid(),
parentNode.getUuid(),
- newSecRef != null? newSecRef.getUuid(): null, null, secHandling,
+ newSecRefUuid, null, secHandling,
true);
if (result.isAbort()){
public static String RefreshPolytomousKeyNodesHandler_REFRESHING;
public static String RemotingChangeAcceptedTaxonToSynonymHandler_CHOOSE_TAXON;
public static String RemotingChangeAcceptedTaxonToSynonymOperation_CHANGE_OP;
+ public static String RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Handling_title;
+ public static String RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Handling_message;
+ public static String RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Keep;
+ public static String RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Parent;
+ public static String RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Select;
public static String RemotingDeletePolytomousKeyOperation_DELETE_OP;
public static String RemotingDeleteTaxonNodeHandler_NODE_DELETED;
public static String RemotingDeleteTaxonNodeHandler_NODE_DELETED_MESSAGE;
RefreshPolytomousKeyNodesHandler_REFRESHING=Refreshing Polytomous Key Nodes
RemotingChangeAcceptedTaxonToSynonymHandler_CHOOSE_TAXON=Choose the accepted taxon
RemotingChangeAcceptedTaxonToSynonymOperation_CHANGE_OP=Change Accepted Taxon to Synonym operation
+RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Handling_title=Select secundum reference
+RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Handling_message=The secundum reference of the new and the old accepted taxa are not the same. Please select which reference should be used for the new synonym
+RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Keep=Keep
+RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Parent=Take from accepted
+RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Select=Select new
RemotingDeletePolytomousKeyOperation_DELETE_OP=Delete Polytomous Key operation
RemotingDeleteTaxonNodeHandler_NODE_DELETED=Node already deleted
RemotingDeleteTaxonNodeHandler_NODE_DELETED_MESSAGE=The taxon node was already deleted. Please reopen the taxon navigator to refresh the view.
RefreshPolytomousKeyNodesHandler_REFRESHING=Polytome Schlüssel aktualisieren
RemotingChangeAcceptedTaxonToSynonymHandler_CHOOSE_TAXON=Wählen Sie das akzeptierte Taxon
RemotingChangeAcceptedTaxonToSynonymOperation_CHANGE_OP=Akzeptiertes Taxon in Synonym umwandeln
+RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Handling_title=Auswahl der Sekundum Referenz
+RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Handling_message=Die Sekundum Referenzen des neuen und des alten akzeptierten Taxons unterscheiden sich, bitte wählen Sie welche Sekundum Referenz für das neue Synonym verwendet werden soll
+RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Keep=Beibehalten
+RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Parent=Übernehme vom akzeptierten
+RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Select=Neue auswählen
RemotingDeletePolytomousKeyOperation_DELETE_OP=Polytomen Schlüssel löschen
RemotingDeleteTaxonNodeHandler_NODE_DELETED=Taxonknoten schon gelöscht
RemotingDeleteTaxonNodeHandler_NODE_DELETED_MESSAGE=Der Taxonknoten wurde schon gelöscht. Bitte Öffnen Sie den Taxonnavigator erneut um die Anzeige zu aktualisieren.
import org.eclipse.swt.widgets.Shell;
import eu.etaxonomy.cdm.api.service.IClassificationService;
+import eu.etaxonomy.cdm.model.metadata.SecReferenceHandlingEnum;
+import eu.etaxonomy.cdm.model.reference.Reference;
import eu.etaxonomy.cdm.model.taxon.Classification;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigatorLabels;
import eu.etaxonomy.taxeditor.navigation.navigator.operation.RemotingChangeAcceptedTaxonToSynonymOperation;
import eu.etaxonomy.taxeditor.operation.e4.RemotingCdmHandlerE4;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.ReferenceSelectionDialog;
import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog;
/**
private Set<TaxonNodeDto> oldTaxonNodes = new HashSet();
private Classification classification;
+ protected boolean isSetSource = false;
public RemotingChangeAcceptedTaxonToSynonymHandlerE4() {
super(TaxonNavigatorLabels.CHANGE_ACCEPTED_TAXON_TO_SYNONYM_LABEL);
MPart activePart,
MHandledMenuItem menuItem) {
Set<UUID> excludeTaxa = new HashSet<>();
+ Set<UUID> secUuids = new HashSet<>();
+ Set<UUID> nodeUuids = new HashSet();
+
for (TaxonNodeDto oldNode:oldTaxonNodes){
excludeTaxa.add(oldNode.getTaxonUuid());
+ secUuids.add(oldNode.getSecUuid());
+ nodeUuids.add(oldNode.getUuid());
}
TaxonNode newAcceptedTaxonNode = TaxonNodeSelectionDialog.select(shell,
// new ConversationHolderMock(),
if (newAcceptedTaxonNode == null) {
return null;
}
- Set<UUID> nodeUuids = new HashSet();
- for (TaxonNodeDto node: oldTaxonNodes){
- nodeUuids.add(node.getUuid());
+
+ SecReferenceHandlingEnum secHandling = PreferencesUtil.getSecReferenceHandlingPreference();
+ UUID newSecUuid = null;
+ UUID newTaxonUuid = newAcceptedTaxonNode.getTaxon() != null && newAcceptedTaxonNode.getTaxon().getSec() != null ? newAcceptedTaxonNode.getTaxon().getSec().getUuid(): null;
+ if (secUuids.size() > 1 && !(secHandling.equals(SecReferenceHandlingEnum.KeepAlways) || secHandling.equals(SecReferenceHandlingEnum.AlwaysDelete))){
+ int result = MessagingUtils.confirmDialog(Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Handling_title, Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Handling_message,
+ new String[]{Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Keep, Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Parent, Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Select});
+ if (result == 2){
+ Reference sec = ReferenceSelectionDialog.select(shell, null);
+ newSecUuid = sec != null? sec.getUuid(): null;
+ }else if (result == 1){
+ newSecUuid = newTaxonUuid;
+ }else if (result == 0){
+ secHandling = SecReferenceHandlingEnum.UseNewParentSec;
+ }else{
+ return null;
+ }
+
+ }else{
+
+
+ UUID oldSecUuid = secUuids.iterator().next();
+ if ((secUuids.size() > 0 && newTaxonUuid != oldSecUuid && secHandling.equals(SecReferenceHandlingEnum.KeepWhenSame) )|| secHandling.equals(SecReferenceHandlingEnum.WarningSelect)){
+ int result = MessagingUtils.confirmDialog(Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Handling_title, Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Handling_message,
+ new String[]{Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Keep, Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Parent, Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Select});
+ if (result == 2){
+ Reference sec = ReferenceSelectionDialog.select(shell, null);
+ newSecUuid = sec != null? sec.getUuid(): null;
+ }else if (result == 1){
+ newSecUuid = newTaxonUuid;
+ }else if (result == 0){
+ newSecUuid = oldSecUuid;
+ }else{
+ return null;
+ }
+
+ }
}
+
+
RemotingChangeAcceptedTaxonToSynonymOperation rcattso =
new RemotingChangeAcceptedTaxonToSynonymOperation(getTrigger(),
false,
nodeUuids,
- newAcceptedTaxonNode.getUuid(), partService, activePart, application, false);
+ newAcceptedTaxonNode.getUuid(), newSecUuid, secHandling, partService, activePart, application, isSetSource);
return rcattso;
}
*/
package eu.etaxonomy.taxeditor.navigation.navigator.e4.handler;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.UUID;
-
-import javax.inject.Named;
-
-import org.eclipse.core.commands.operations.AbstractOperation;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.e4.core.di.annotations.CanExecute;
-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.viewers.TreeSelection;
-import org.eclipse.swt.widgets.Shell;
-
-import eu.etaxonomy.cdm.api.service.IClassificationService;
-import eu.etaxonomy.cdm.model.taxon.Classification;
-import eu.etaxonomy.cdm.model.taxon.TaxonNode;
-import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
-import eu.etaxonomy.taxeditor.editor.EditorUtil;
-import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
-import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigatorLabels;
-import eu.etaxonomy.taxeditor.navigation.navigator.operation.RemotingChangeAcceptedTaxonToSynonymOperation;
-import eu.etaxonomy.taxeditor.operation.e4.RemotingCdmHandlerE4;
-import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog;
-
/**
*
* @author pplitzner
* @since Sep 6, 2017
*
*/
-public class RemotingChangeAcceptedTaxonToSynonymSetNameInSourceHandlerE5 extends RemotingCdmHandlerE4 {
-
+public class RemotingChangeAcceptedTaxonToSynonymSetNameInSourceHandlerE5 extends RemotingChangeAcceptedTaxonToSynonymHandlerE4 {
- private Set<TaxonNodeDto> oldTaxonNodes = new HashSet();
- private Classification classification;
public RemotingChangeAcceptedTaxonToSynonymSetNameInSourceHandlerE5() {
- super(TaxonNavigatorLabels.CHANGE_ACCEPTED_TAXON_TO_SYNONYM_LABEL);
+ super();
+ isSetSource = true;
}
- @Override
- public IStatus allowOperations(IStructuredSelection selection,
- Shell shell,
- MPart activePart,
- MHandledMenuItem menuItem) {
- // check that only a single taxon tree node has been selected
-// if(selection.size() > 1) {
-// return new Status(IStatus.ERROR,
-// "unknown", //$NON-NLS-1$
-// TaxonNavigatorLabels.SINGLE_TAXON_SELECTION_MESSAGE);
-// }
-
- // check for no taxon tree node selected
- if(selection.size() == 0) {
- return new Status(IStatus.ERROR,
- "unknown", //$NON-NLS-1$
- TaxonNavigatorLabels.NO_TAXON_SELECTION_MESSAGE);
- }
-
- // check that selected object is a taxon node
- Iterator it = selection.iterator();
- Classification nextClassification;
- oldTaxonNodes = new HashSet<>();
- while(it.hasNext()){
- Object obj = it.next();
- if(obj instanceof TaxonNodeDto) {
- oldTaxonNodes.add((TaxonNodeDto)obj);
- nextClassification = CdmStore.getService(IClassificationService.class).find(((TaxonNodeDto)obj).getClassificationUUID());
- if (classification == null){
- classification = nextClassification;
- }else if (!classification.equals(nextClassification)){
- return new Status(IStatus.ERROR,
- "unknown", //$NON-NLS-1$
- TaxonNavigatorLabels.ACCEPTED_TAXA_NEED_TO_BE_FROM_SAME_CLASSIFICATION);
- }
- } else {
- if (obj instanceof TaxonNode && !((TaxonNode)obj).hasTaxon()){
- return new Status(IStatus.ERROR,
- "Operation not available for Classifications", //$NON-NLS-1$
- TaxonNavigatorLabels.SELECTED_OBJECT_NOT_TREE_NODE_MESSAGE);
- }
- return new Status(IStatus.ERROR,
- "unknown", //$NON-NLS-1$
- TaxonNavigatorLabels.SELECTED_OBJECT_NOT_TREE_NODE_MESSAGE);
- }
- // check that the source taxon node does not have children
- if(((TaxonNodeDto)obj).getTaxonomicChildrenCount() > 0) {
- return new Status(IStatus.ERROR,
- "unknown", //$NON-NLS-1$
- TaxonNavigatorLabels.SOURCE_TAXON_HAS_CHILDREN_MESSAGE);
-
- }
-
- // check if corresponding name editor is closed
- EditorUtil.closeObsoleteEditor((TaxonNodeDto)obj, partService);
- }
- return Status.OK_STATUS;
- }
- @Override
- public AbstractOperation prepareOperation(IStructuredSelection selection,
- Shell shell,
- MPart activePart,
- MHandledMenuItem menuItem) {
- Set<UUID> excludeTaxa = new HashSet<>();
- for (TaxonNodeDto oldNode:oldTaxonNodes){
- excludeTaxa.add(oldNode.getTaxonUuid());
- }
- TaxonNode newAcceptedTaxonNode = TaxonNodeSelectionDialog.select(shell,
-// new ConversationHolderMock(),
- Messages.RemotingChangeAcceptedTaxonToSynonymHandler_CHOOSE_TAXON,
- excludeTaxa,
- null,
- classification.getUuid());
-
- if (newAcceptedTaxonNode == null) {
- return null;
- }
- Set<UUID> nodeUuids = new HashSet();
- for (TaxonNodeDto node: oldTaxonNodes){
- nodeUuids.add(node.getUuid());
- }
- RemotingChangeAcceptedTaxonToSynonymOperation rcattso =
- new RemotingChangeAcceptedTaxonToSynonymOperation(getTrigger(),
- false,
- nodeUuids,
- newAcceptedTaxonNode.getUuid(), partService, activePart, application, true);
-
- return rcattso;
- }
-
- @CanExecute
- private boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION)TreeSelection selection, MHandledMenuItem menuItem){
- boolean canExecute = !selection.isEmpty();
- Object[] array = selection.toArray();
- for (Object object : array) {
- canExecute &= (object instanceof TaxonNodeDto) && ((TaxonNodeDto)selection.getFirstElement()).getTaxonUuid() != null;
- }
- menuItem.setVisible(canExecute);
- return canExecute;
- }
-
- @Override
- public void onComplete() {
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected Object getTrigger() {
- return this;
- }
}
import eu.etaxonomy.cdm.api.application.CdmChangeEvent.Action;
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
import eu.etaxonomy.cdm.api.service.UpdateResult;
+import eu.etaxonomy.cdm.model.metadata.SecReferenceHandlingEnum;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
private Set<UUID> oldTaxonNodeUuids = new HashSet();
private final UUID newAcceptedTaxonNodeUuid;
+ private UUID secundumUuid;
private boolean setNameInSource ;
+ private SecReferenceHandlingEnum secHandling;
private final static String LABEL = Messages.RemotingChangeAcceptedTaxonToSynonymOperation_CHANGE_OP;
boolean async,
Set<UUID> oldTaxonNodeUuids,
UUID newAcceptedTaxonNodeUuid,
+ UUID newSecUuid,
+ SecReferenceHandlingEnum secHandling,
EPartService partService,
MPart activePart,
MApplication application,
this.oldTaxonNodeUuids.addAll(oldTaxonNodeUuids);
this.newAcceptedTaxonNodeUuid = newAcceptedTaxonNodeUuid;
this.setNameInSource = setNameInSource;
+ this.secundumUuid = newSecUuid;
+ this.secHandling = secHandling;
}
boolean async,
UUID oldTaxonNodeUuid,
UUID newAcceptedTaxonNodeUuid,
+ UUID newSecUuid,
+ SecReferenceHandlingEnum secHandling,
EPartService partService,
MPart activePart,
MApplication application,
this.oldTaxonNodeUuids.add(oldTaxonNodeUuid);
this.newAcceptedTaxonNodeUuid = newAcceptedTaxonNodeUuid;
this.setNameInSource = setNameInSource;
+ this.secundumUuid = newSecUuid;
+ this.secHandling = secHandling;
}
/**
boolean async,
UUID oldTaxonNodeUuid,
UUID newAcceptedTaxonNodeUuid,
+ UUID newSecUuid,
+ SecReferenceHandlingEnum secHandling,
boolean setNameInSource) {
super(LABEL, Action.Update, source, async);
this.oldTaxonNodeUuids.add(oldTaxonNodeUuid);
this.newAcceptedTaxonNodeUuid = newAcceptedTaxonNodeUuid;
this.setNameInSource = setNameInSource;
+ this.secundumUuid = newSecUuid;
+ this.secHandling = secHandling;
}
/* (non-Javadoc)
updateResult = CdmApplicationState.getService(ITaxonNodeService.class).makeTaxonNodeASynonymOfAnotherTaxonNode(oldTaxonNodeUuids.iterator().next(),
newAcceptedTaxonNodeUuid,
null,
+ secundumUuid,
null,
- null,
+ secHandling,
setNameInSource);//TODO
}else{
updateResult = CdmApplicationState.getService(ITaxonNodeService.class).makeTaxonNodeSynonymsOfAnotherTaxonNode(oldTaxonNodeUuids,
newAcceptedTaxonNodeUuid,
null,
+ secundumUuid,
null,
- null,
+ secHandling,
setNameInSource);//TODO
}
updateNameEditor();
if (part == activePart){
setFocus = true;
}
- if (object instanceof TaxonNameEditorE4){
+ if (part.getContributionURI().endsWith("TaxonNameEditorE4")){
+
+ }
+ if (object instanceof TaxonNameEditorE4 ){
Set<TaxonNode> nodes = ((TaxonNameEditorE4)object).getTaxon().getTaxonNodes();
for (TaxonNode node: nodes){
- if (node.getTaxon().getUuid().equals(newAcceptedTaxonNodeUuid)){
+ if (node.getUuid().equals(newAcceptedTaxonNodeUuid)){
EditorUtil.updateEditor(node, (TaxonNameEditorE4)object);
}
type="org.eclipse.jface.viewers.IStructuredSelection">
</propertyTester>
<propertyTester
- class="eu.etaxonomy.taxeditor.featuretree.FeatureTreePropertyTester"
- id="eu.etaxonomy.taxeditor.featuretree.FeatureTreePropertyTester"
- namespace="eu.etaxonomy.taxeditor.featuretree.FeatureTreePropertyTester"
- properties="isFeatureTree"
+ class="eu.etaxonomy.taxeditor.featuretree.TermTreePropertyTester"
+ id="eu.etaxonomy.taxeditor.featuretree.TermTreePropertyTester"
+ namespace="eu.etaxonomy.taxeditor.featuretree.TermTreePropertyTester"
+ properties="isTermTree"
type="org.eclipse.jface.viewers.IStructuredSelection">
</propertyTester>
</extension>
selection="eu.etaxonomy.cdm.model.taxon.TaxonNode"
viewerName="%viewCommandMapping.viewerName.TAXON_NODE_WIZARD">
</viewCommandMapping>
+ <viewCommandMapping
+ commandId="eu.etaxonomy.taxeditor.store.openDefinedTermEditor"
+ selection="eu.etaxonomy.cdm.persistence.dto.TermNodeDto"
+ viewerName="Vocabulary">
+ </viewCommandMapping>
</extension>
<extension
id="eu.etaxonomy.taxeditor.store.workbench.model"
id="eu.etaxonomy.taxeditor.preferences.taxonPreferences"
name="%page.name.52">
</page>
- <page
+ <page
category="eu.etaxonomy.taxeditor.preferences.taxonPreferences"
class="eu.etaxonomy.taxeditor.preference.PublishFlagLocalPreference"
id="eu.etaxonomy.taxeditor.preferences.publishFlagPreference"
name="%page.name.46">
</page>
+ <page
+ category="eu.etaxonomy.taxeditor.preferences.taxonPreferences"
+ class="eu.etaxonomy.taxeditor.preference.SecundumReferenceHandling"
+ id="eu.etaxonomy.taxeditor.preferences.secundumPreference"
+ name="Secundum Reference">
+ </page>
<page
category="eu.etaxonomy.taxeditor.preferences.general"
class="eu.etaxonomy.taxeditor.preference.UIPreferences"
name="%page.name.42">
</page>
<page
- category="eu.etaxonomy.taxeditor.preferences.general"
+ category="eu.etaxonomy.taxeditor.preferences.general"
+ class="eu.etaxonomy.taxeditor.preference.TaxonPreferences"
+ id="eu.etaxonomy.taxeditor.preferences.taxonPreferences"
+ name="%page.name.52">
+ </page>
+ <page
+ category="eu.etaxonomy.taxeditor.preferences.taxonPreferences"
class="eu.etaxonomy.taxeditor.databaseAdmin.preferencePage.PublishFlagPreference"
id="eu.etaxonomy.taxeditor.preferences.publishFlagPreference"
name="%page.name.46">
+ </page>
+ <page
+ category="eu.etaxonomy.taxeditor.preferences.taxonPreferences"
+ class="eu.etaxonomy.taxeditor.databaseAdmin.preferencePage.SecundumReferenceHandlingAdmin"
+ id="eu.etaxonomy.taxeditor.preferences.secRefHandling"
+ name="Secundum Reference">
</page>
<page
category="eu.etaxonomy.taxeditor.preferences.namePreferences"
--- /dev/null
+/**
+* Copyright (C) 2020 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.databaseAdmin.preferencePage;
+
+import eu.etaxonomy.cdm.api.application.ICdmRepository;
+import eu.etaxonomy.cdm.api.service.IPreferenceService;
+import eu.etaxonomy.cdm.model.metadata.CdmPreference;
+import eu.etaxonomy.cdm.model.metadata.SecReferenceHandlingEnum;
+import eu.etaxonomy.taxeditor.l10n.Messages;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.preference.SecundumReferenceHandling;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author k.luther
+ * @since Dec 1, 2020
+ */
+public class SecundumReferenceHandlingAdmin extends SecundumReferenceHandling {
+
+ @Override
+ public void init() {
+ super.init();
+
+
+ }
+
+
+
+ @Override
+ public boolean performOk() {
+ if (!isApply()){
+ return true;
+ }
+ ICdmRepository controller = CdmStore.getCurrentApplicationConfiguration();
+ if (controller == null){
+ return false;
+ }
+ IPreferenceService service = controller.getPreferenceService();
+ String textCombo = synonymSecundumBehaviour.getText();
+ String text = null;
+ // default -> delete preference
+ if(textCombo.startsWith(Messages.Preference_Use_Default) && allowOverride){
+ service.remove(pref.getKey());
+ PreferencesUtil.updateDBPreferences();
+ return true;
+ }else if (textCombo.startsWith(Messages.Preference_Use_Default)){
+ text = null;
+ }else{
+ for (SecReferenceHandlingEnum display: SecReferenceHandlingEnum.values()){
+ if (display.getLabel().equals(textCombo)){
+ text = display.getKey();
+ break;
+ }
+ }
+ }
+ CdmPreference preference = CdmPreference.NewInstance(pref.getKey(), text);
+ preference.setAllowOverride(allowOverride);
+
+ service.set(preference);
+ PreferencesUtil.updateDBPreferences();
+
+ return true;
+ }
+
+
+
+ @Override
+ public void getValues() {
+ super.getValues();
+ isAdminPreference = true;
+
+
+ }
+}
CdmLightPreference_distributionString=Export of condensed distribution string
CdmLightPreference_distributionString_tooltip=Distributions of a taxon are exported as condensed string, created by the selected algorithm.
-SecundumPreference_description=Default settings of secundum reference handling for move synonym to accepted taxon.
+SecundumPreference_description=Default settings of secundum reference handling for change synonym to accepted taxon and changing an accepted taxon to synonym.
Tree= Tree
\ No newline at end of file
CdmLightPreference_distributionString=Export eines Condensed Distribution Strings
CdmLightPreference_distributionString_tooltip=Für jedes Taxon wird aus den Verbreitungsdaten ein kompakter String exportiert, der entsprechend dem ausgewählten Algorithmus erzeugt wird.
-SecundumPreference_description=Default Einstellungen für das Setzen der Secundum Referenz beim Verschieben eines Synonyms zu einem akzeptierten Taxon.
+SecundumPreference_description=Default Einstellungen für das Setzen der Secundum Referenz beim Ändern eines Synonyms in ein akzeptierten Taxon und anders herum.
Tree=-Baum
\ No newline at end of file
--- /dev/null
+/**
+* Copyright (C) 2020 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.preference;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+
+import eu.etaxonomy.cdm.model.metadata.CdmPreference;
+import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
+import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
+import eu.etaxonomy.cdm.model.metadata.SecReferenceHandlingEnum;
+import eu.etaxonomy.taxeditor.l10n.Messages;
+import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
+
+/**
+ * @author k.luther
+ * @since Dec 1, 2020
+ */
+public class SecundumReferenceHandling extends CdmPreferencePage {
+
+ protected SecReferenceHandlingEnum secundumBehaviour;
+
+ protected Combo synonymSecundumBehaviour;
+ protected CdmPreference pref = null;
+ Button allowOverrideButton;
+
+ protected boolean allowOverride;
+ private boolean override = true;
+
+
+ @Override
+ public void init() {
+ super.init();
+
+
+ }
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected Control createContents(Composite parent) {
+ getValues();
+
+ Composite composite = createComposite(parent);
+
+ if (!allowOverride && !isAdminPreference){
+ final CLabel description = new CLabel(composite, SWT.NULL);
+ description.setText(Messages.PublishFlagPreference_description_not_allowed);
+ description.setLayoutData(createTextGridData());
+ return composite;
+ }
+
+ synonymSecundumBehaviour = createCombo(composite, SecReferenceHandlingEnum.values(), PreferencePredicate.DefaultBehaviourForSecundum, Messages.SecundumPreference_description, isAdminPreference);
+ synonymSecundumBehaviour.addSelectionListener(new SelectionListener() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ setApply(true);
+ if (!synonymSecundumBehaviour.getText().startsWith(Messages.Preference_Use_Default)){
+ secundumBehaviour = (SecReferenceHandlingEnum)synonymSecundumBehaviour.getData(synonymSecundumBehaviour.getText());
+ }else{
+ secundumBehaviour = null;
+ }
+
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+ });
+ if (this.isAdminPreference){
+ allowOverrideButton = createAllowOverrideButton(composite);
+ allowOverrideButton.setSelection(allowOverride);
+ allowOverrideButton.addSelectionListener(new SelectionAdapter(){
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ allowOverride = !allowOverride;
+ setApply(true);
+ }
+ });
+ }
+ int index = 0;
+
+ if(secundumBehaviour==null){
+ synonymSecundumBehaviour.select(0);
+ }
+ else{
+ for (String itemLabel : synonymSecundumBehaviour.getItems()){
+ if (itemLabel.startsWith(secundumBehaviour.getLabel())){
+ synonymSecundumBehaviour.select(index);
+ break;
+ }
+ index++;
+ }
+ }
+
+ return composite;
+
+ }
+
+
+ @Override
+ public boolean performOk() {
+ if (isApply()){
+ if (secundumBehaviour != null){
+ String text = synonymSecundumBehaviour.getText();
+ for (SecReferenceHandlingEnum display: SecReferenceHandlingEnum.values()){
+ if (text.startsWith(display.getLabel())){
+ text = display.getKey();
+ break;
+ }
+ }
+ PreferencesUtil.setStringValue(PreferencePredicate.DefaultBehaviourForSecundum.getKey(), text);
+ if (pref == null || !pref.getValue().equals(text)){
+ PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForSecundum.getKey()), true);
+ }
+ }else{
+ PreferencesUtil.setBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForSecundum.getKey()), false);
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public void getValues(){
+ secundumBehaviour = null;
+ PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewInstance("/MoveSynToAccepted/"), PreferencePredicate.DefaultBehaviourForSecundum);
+ pref = PreferencesUtil.getPreferenceFromDB(key);
+ if (pref == null){
+ pref = CdmPreference.NewInstance(key, PreferencePredicate.DefaultBehaviourForSecundum.getDefaultValue().toString());
+ }
+ allowOverride = pref.isAllowOverride();
+ try{
+ String secundumString = PreferencesUtil.getStringValue(PreferencePredicate.DefaultBehaviourForSecundum.getKey(), true);
+
+ if (secundumString != null){
+ secundumBehaviour = SecReferenceHandlingEnum.valueOf(secundumString);
+ }
+ }catch (IllegalArgumentException e){
+ secundumBehaviour = SecReferenceHandlingEnum.KeepWhenSame;
+ }
+ String prefString = PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForSecundum.getKey());
+ override = PreferencesUtil.getBooleanValue(PreferencesUtil.prefOverrideKey(PreferencePredicate.DefaultBehaviourForSecundum.getKey()), true);
+ if (!override){
+ secundumBehaviour = null;
+ }
+ }
+
+ @Override
+ protected void performDefaults() {
+ secundumBehaviour = null;
+ allowOverride = true;
+ int index = 0;
+
+ for (String itemLabel : synonymSecundumBehaviour.getItems()){
+ if (itemLabel.startsWith(Messages.Preference_Use_Default)){
+ synonymSecundumBehaviour.select(index);
+ break;
+ }
+ index++;
+ }
+ if (isAdminPreference){
+ allowOverrideButton.setSelection(allowOverride);
+ }
+ setApply(true);
+ super.performDefaults();
+ }
+
+
+
+
+
+}
operation = new RemotingChangeAcceptedTaxonToSynonymOperation(sessionOwner,
false,
oldTaxonNode.getUuid(),
- newAcceptedTaxonNode.getUuid(), true);
+ newAcceptedTaxonNode.getUuid(), null, null, true);
operation.execute(monitor, info);
newAcceptedTaxonNode = taxonNodeService.load(newAcceptedTaxonNodeUuid);
oldTaxonNode = taxonNodeService.load(oldTaxonNodeNodeUuid);