SecReferenceHandlingEnum secHandling = PreferencesUtil.getSecReferenceHandlingPreference();
UUID newSecUuid = null;
- UUID newTaxonUuid = newAcceptedTaxonNode.getTaxon() != null && newAcceptedTaxonNode.getTaxon().getSec() != null ? newAcceptedTaxonNode.getTaxon().getSec().getUuid(): null;
+ UUID newTaxonSecUuid = newAcceptedTaxonNode.getTaxon() != null && newAcceptedTaxonNode.getTaxon().getSec() != null ? newAcceptedTaxonNode.getTaxon().getSec().getUuid(): null;
+ if (newTaxonSecUuid != null){
+ secUuids.add(newTaxonSecUuid);
+ }
//the moved taxa have different secundum references
- 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){
+ if (secUuids.size() > 1 && secHandling.equals(SecReferenceHandlingEnum.KeepOrWarn)){
+ MessagingUtils.warningDialog(Messages.SecundumReference,this, Messages.ChangeAcceptedTaxonToSynonymHandler_Different_Secundum_references);
+ }else if (secUuids.size() > 1 && !(secHandling.equals(SecReferenceHandlingEnum.AlwaysDelete) || secHandling.equals(SecReferenceHandlingEnum.UseNewParentSec))){
+ String message = null;
+ String[] options = null;
+ if (secHandling.equals(SecReferenceHandlingEnum.AlwaysSelect) && (newTaxonSecUuid != null && secUuids.contains(newTaxonSecUuid))){
+ message = Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Handling_message_always_select;
+ options = new String[]{Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Keep, Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Select};
+ }else {
+ message = Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Handling_message;
+ options = new String[]{Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Keep, Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Select, Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Parent, };
+ }
+ int result = MessagingUtils.confirmDialog(Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Handling_title, message, options);
+
+// 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 == 1){
//select new reference
Reference sec = ReferenceSelectionDialog.select(shell, null);
newSecUuid = sec != null? sec.getUuid(): null;
- }else if (result == 1){
+ }else if (result == 2){
//use parent sec
- newSecUuid = newTaxonUuid;
+ newSecUuid = newTaxonSecUuid;
}else if (result == 0){
//keep sec (also homotypic synonyms with different sec will keep the secundum)
- secHandling = SecReferenceHandlingEnum.KeepAlways;
+ secHandling = SecReferenceHandlingEnum.KeepOrWarn;
}else{
return null;
}
UUID oldSecUuid = secUuids.iterator().next();
//the nodes moved have all the same sec, but the accepted taxon has a different one
if ((secUuids.size() > 0 &&
- ((newTaxonUuid != null && oldSecUuid != null && !newTaxonUuid.equals(oldSecUuid))
- || (newTaxonUuid != null && oldSecUuid == null) ||(newTaxonUuid == null && oldSecUuid != null))
- && 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});
+ ((newTaxonSecUuid != null && oldSecUuid != null && !newTaxonSecUuid.equals(oldSecUuid))
+ || (newTaxonSecUuid != null && oldSecUuid == null) ||(newTaxonSecUuid == null && oldSecUuid != null))
+ && secHandling.equals(SecReferenceHandlingEnum.KeepOrSelect) )|| secHandling.equals(SecReferenceHandlingEnum.AlwaysSelect)){
+ String message = null;
+ String[] options = null;
+ // always select but all secundum references are the same
+ if (secHandling.equals(SecReferenceHandlingEnum.AlwaysSelect) && (newTaxonSecUuid != null && secUuids.contains(newTaxonSecUuid))){
+ message = Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Handling_message_always_select;
+ options = new String[]{Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Keep, Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Select};
+ }else {
+ message = Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Handling_message;
+ options = new String[]{Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Keep, Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Select, Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Parent, };
+ }
+ int result = MessagingUtils.confirmDialog(Messages.RemotingChangeAcceptedTaxonToSynonymHandler_Select_Sec_Reference_Handling_title, message, options);
if (result == 2){
+ newSecUuid = newTaxonSecUuid;
+ }else if (result == 1){
Reference sec = ReferenceSelectionDialog.select(shell, null);
newSecUuid = sec != null? sec.getUuid(): null;
- }else if (result == 1){
- newSecUuid = newTaxonUuid;
}else if (result == 0){
- secHandling = SecReferenceHandlingEnum.KeepAlways;
-
+ secHandling = SecReferenceHandlingEnum.KeepOrWarn;
}else{
return null;
}