Set<TaxonRelationship> taxonRelationships = taxon.getTaxonRelations(relatedTaxon);
- if(taxonRelationships.size() > 1){
+ if(taxonRelationships != null && taxonRelationships.size() > 1){
MessagingUtils.warningDialog(ChangeConceptToSynonymOperation.CHANGE_CONCEPT_TO_SYNONYM_OPERATION_MULTI_REPS, this, ChangeConceptToSynonymOperation.CHANGE_CONCEPT_TO_SYNONYM_OPERATION_MULTI_REPS_MESSAGE);
return;
}
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
import eu.etaxonomy.cdm.api.service.UpdateResult;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.model.taxon.TaxonNodeStatus;
import eu.etaxonomy.cdm.persistence.dto.MergeResult;
import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
import eu.etaxonomy.taxeditor.operation.RemotingCdmUpdateOperation;
for (TaxonNode node: nodes){
if (unplaced != null){
- node.setUnplaced(unplaced);
+ node.setStatus(TaxonNodeStatus.UNPLACED);
}
if (excluded != null){
- node.setExcluded(excluded);
+ node.setStatus(TaxonNodeStatus.EXCLUDED);
}
if (doubtful != null){
- node.setDoubtful(doubtful);
+ node.setStatus(TaxonNodeStatus.DOUBTFUL);
}
}
List<MergeResult<TaxonNode>> results = CdmApplicationState.getService(ITaxonNodeService.class).merge(nodes, true);
import eu.etaxonomy.cdm.model.common.LanguageString;
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.model.taxon.TaxonNodeStatus;
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
import eu.etaxonomy.taxeditor.l10n.Messages;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
Map<Language, LanguageString> nodes = ((TaxonNodeDetailElement)taxonNodePage.getDetailElement()).getMultiLanguageTextExcludedNotes();
UUID refUuid = parent.getReference() != null? parent.getReference().getUuid(): null;
- result = CdmStore.getService(ITaxonNodeService.class).createNewTaxonNode(parent.getUuid(), taxon, refUuid, parent.getMicroReference(), ((TaxonNodeDetailElement)taxonNodePage.getDetailElement()).isUnplaced(), ((TaxonNodeDetailElement)taxonNodePage.getDetailElement()).isPlacementDoubtful(), ((TaxonNodeDetailElement)taxonNodePage.getDetailElement()).isExcluded(), nodes);
+ TaxonNodeStatus status = null;
+ if( ((TaxonNodeDetailElement)taxonNodePage.getDetailElement()).isUnplaced()){
+ status = TaxonNodeStatus.UNPLACED;
+ }else if( ((TaxonNodeDetailElement)taxonNodePage.getDetailElement()).isPlacementDoubtful()){
+ status = TaxonNodeStatus.DOUBTFUL;
+ }else if (((TaxonNodeDetailElement)taxonNodePage.getDetailElement()).isExcluded()){
+ status = TaxonNodeStatus.EXCLUDED;
+ }
+ result = CdmStore.getService(ITaxonNodeService.class).createNewTaxonNode(parent.getUuid(), taxon, refUuid, parent.getMicroReference(),
+ status, nodes);
+
+
if (result.isOk()){
this.setEntity((TaxonNode)result.getCdmEntity());
CdmApplicationState.getCurrentDataChangeService()
protected Label label;
- protected final Combo combo;
+ protected Combo combo;
+ public boolean hasNullValue;
- public AbstractComboElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
+
+ public AbstractComboElement(CdmFormFactory formFactory, ICdmFormElement formElement, boolean hasNullValue) {
super(formFactory, formElement);
label = formFactory.createLabel(getLayoutComposite(), "");
combo.setVisibleItemCount(DEFAULT_VISIBLE_ITEMS);
//disable mouse-wheel selection
combo.addListener(SWT.MouseWheel, e->e.doit=false);
+ this.hasNullValue = hasNullValue;
+
+ }
+ public AbstractComboElement(CdmFormFactory formFactory, ICdmFormElement formElement){
+ this(formFactory, formElement, false);
}
import java.util.Map.Entry;
import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Combo;
import org.eclipse.ui.forms.widgets.TableWrapData;
import eu.etaxonomy.cdm.model.media.ExternalLinkType;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
import eu.etaxonomy.cdm.model.reference.ReferenceType;
+import eu.etaxonomy.cdm.model.taxon.TaxonNodeStatus;
import eu.etaxonomy.cdm.model.term.IEnumTerm;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
return NomenclaturalCodeEdition.class;
}
+ },
+ new CdmEnumDataHolder<TaxonNodeStatus>(){
+
+ @Override
+ public String getName() {
+ return "Taxon Node Status";
+ }
+
+ @Override
+ public Collection<TaxonNodeStatus> getElements() {
+ return Arrays.asList(TaxonNodeStatus.values());
+ }
+
+ @Override
+ public Class<TaxonNodeStatus> getClazz() {
+ return TaxonNodeStatus.class;
+ }
+
}
};
private final Class<T> enumType;
public EnumComboElement(CdmFormFactory formFactory,
- ICdmFormElement parentElement, Class<T> enumType, Comparator<T> comparator, int style) {
- super(formFactory, parentElement);
+ ICdmFormElement parentElement, Class<T> enumType, Comparator<T> comparator, int style, boolean hasNullValue) {
+ super(formFactory, parentElement, hasNullValue);
this.enumType = enumType;
label.setText(getDefaultLabelString());
populateTypes(comparator);
getLayoutComposite().layout();
}
+ public Combo getCombo(){
+ return combo;
+ }
+
private String getDefaultLabelString() {
if(enumType.equals(ReferenceType.class)){
return "Type";
} else if(enumType.equals(NomenclaturalCodeEdition.class)) {
return "Code Edition";
+ }else if(enumType.equals(TaxonNodeStatus.class)) {
+ return "Status";
}
return "No Label";
}
if(comparator!=null){
Collections.sort(elementsForClass, comparator);
}
+ int index = 0;
+ if (hasNullValue){
+ combo.add("", index);
+ index++;
+ }
// special hierarchical order for specimens
if(enumType.equals(SpecimenOrObservationType.class)){
LinkedHashMap<T, String> orderedTerms = AbstractUtility.orderTerms(elementsForClass);
for(Entry<T, String> keyLabelPair : orderedTerms.entrySet()){
elementTypeList.add(keyLabelPair.getKey());
- combo.add(keyLabelPair.getValue());
+ combo.add(keyLabelPair.getValue(), index);
+ index++;
}
}else if(enumType.equals(NomenclaturalCodeEdition.class)){
NomenclaturalCode code = null;
LinkedHashMap<NomenclaturalCodeEdition, String> orderedTerms = AbstractUtility.orderTerms(elements);
for (NomenclaturalCodeEdition codeEdition: elements){
elementTypeList.add((T)codeEdition);
- combo.add(codeEdition.getMessage());
+ combo.add(codeEdition.getMessage(), index);
+ index++;
}
}
// default order
for(T enumElement : elementsForClass){
elementTypeList.add(enumElement);
if (enumElement instanceof IEnumTerm) {
- combo.add(((IEnumTerm) enumElement).getMessage());
+ combo.add(((IEnumTerm) enumElement).getMessage(), index);
+ index++;
}else{
- combo.add(((Enum) enumElement).name());
+ combo.add(((Enum) enumElement).name(), index);
+ index++;
}
}
}
@Override
public void setSelection(T selection) {
this.selection = selection;
- combo.select(elementTypeList.indexOf(selection));
+ int index = elementTypeList.indexOf(selection);
+ if (hasNullValue && selection != null){
+ index++;
+ }
+ combo.select(index);
}
/** {@inheritDoc} */
@Override
public void widgetSelected(SelectionEvent e) {
- selection = elementTypeList.get(combo.getSelectionIndex());
+
+ int index = combo.getSelectionIndex();
+ if (hasNullValue ){
+ index--;
+ }
+ if (index<0){
+ selection = null;
+ }else{
+ selection = elementTypeList.get(index);
+ }
+
firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
}
import eu.etaxonomy.cdm.model.taxon.Classification;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.model.taxon.TaxonNodeStatus;
import eu.etaxonomy.taxeditor.preference.CdmPreferenceCache;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
private TaxonNodeAgentRelationCollectionSection selectionNodeAgentRelation;
- private CheckboxElement checkbox_unplaced;
- private CheckboxElement checkbox_excluded;
+ private EnumComboElement combo_status;
+// private CheckboxElement checkbox_excluded;
private CheckboxElement checkbox_publish;
- private CheckboxElement checkbox_placementDoubtful;
+// private CheckboxElement checkbox_placementDoubtful;
- private MultilanguageTextElement multiLanguageTextExcludedNotes;
+ private MultilanguageTextElement multiLanguageTextStatusNotes;
private boolean complete;
- private boolean excluded = false;
- private boolean unplaced = false;
- private boolean placementDoubtful = false;
-
-
+ private TaxonNodeStatus status = null;
public TaxonNodeDetailElement(CdmFormFactory formFactory,
ICdmFormElement formElement, boolean isCreateNew) {
public Map<Language, LanguageString> getMultiLanguageTextExcludedNotes() {
- return multiLanguageTextExcludedNotes.getMultilanguageText();
+ return multiLanguageTextStatusNotes.getMultilanguageText();
}
public boolean isExcluded() {
- return excluded;
+ return status.isKindOf(TaxonNodeStatus.EXCLUDED);
}
public boolean isUnplaced() {
- return unplaced;
+ return status.isKindOf(TaxonNodeStatus.UNPLACED);
}
public boolean isPlacementDoubtful() {
- return placementDoubtful;
+ return status.isKindOf(TaxonNodeStatus.DOUBTFUL);
}
public Reference getRef() {
checkbox_publish.setEnabled(isCreateNew());
- checkbox_placementDoubtful = formFactory.createCheckbox(formElement,
- "Placement is doubtful", tax!= null? entity.isDoubtful(): false, style);
-
-
+ combo_status = formFactory.createEnumComboElement(TaxonNodeStatus.class, formElement, style, true);
+ combo_status.setSelection(entity.getStatus());
- if(isCreateNew()){
+ if(isCreateNew()){
String defaultPublish = PreferencesUtil.getStringValue(PreferencePredicate.DefaultBehaviourForPublishFlag.getKey());
complete = true;
}
- checkbox_unplaced = formFactory.createCheckbox(formElement,
- "Taxon is unplaced", entity.isUnplaced(), style);
if (isCreateNew()){
preFillTaxonName();
}
- checkbox_excluded = formFactory.createCheckbox(formElement,
- "Taxon is excluded", entity.isExcluded(), style);
- multiLanguageTextExcludedNotes = formFactory.createMultiLanguageTextElement(formElement, "Excluded Notes", entity.getExcludedNote(), 50, style);
- multiLanguageTextExcludedNotes.setEnabled(entity.isExcluded());
+
+ multiLanguageTextStatusNotes = formFactory.createMultiLanguageTextElement(formElement, "Status Notes", entity.getStatusNote(), 50, style);
+ multiLanguageTextStatusNotes.setEnabled(entity.isExcluded());
if (!isCreateNew()){
selectionNodeAgentRelation = formFactory.createTaxonNodeAgentRelationCollectionSection(formElement, getConversationHolder(), StoreUtil.getSectionStyle(TaxonNodeAgentRelationCollectionSection.class, entity.getClass().getCanonicalName()));
}
}
- if (eventSource == checkbox_excluded) {
- excluded = checkbox_excluded.getSelection();
- if (!isCreateNew()){
- getEntity().setExcluded(excluded);
- }
-
- multiLanguageTextExcludedNotes.setEnabled(excluded);
- }
- if (eventSource == checkbox_unplaced) {
- unplaced = checkbox_unplaced.getSelection();
+ if (eventSource == combo_status) {
+ status = (TaxonNodeStatus) combo_status.getSelection();
if (!isCreateNew()){
- getEntity().setUnplaced(unplaced);
+ getEntity().setStatus(status);
}
+ multiLanguageTextStatusNotes.setEnabled(status != null);
+ complete = true;
}
- if (eventSource == checkbox_placementDoubtful) {
- placementDoubtful = checkbox_placementDoubtful.getSelection();
- if (!isCreateNew()){
- getEntity().setDoubtful(placementDoubtful);
- }
-
- }
if (eventSource == textNewTaxonName) {
boolean enabled = CdmUtils.isBlank(textNewTaxonName.getText());
if (selection_reuseExistingTaxon != null){
public void createControls(ICdmFormElement formElement, int style) {
combo_origsourcetype = formFactory
.createEnumComboElement(OriginalSourceType.class,
- formElement, new OriginalSourceTypeComparator(getEntity()), style);
+ formElement, new OriginalSourceTypeComparator(getEntity()), style, false);
super.createControls(formElement, style);
if (PreferencesUtil.getBooleanValue(PreferencePredicate.ShowIdInSource.getKey())){
text_idInSource = formFactory.createTextWithLabelElement(formElement, "ID in Source", null, style);