package eu.etaxonomy.taxeditor.ui.section.name;
+import java.util.Comparator;
+
import org.eclipse.swt.events.SelectionListener;
-import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
-import eu.etaxonomy.cdm.model.common.VocabularyEnum;
import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
-import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement;
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
/**
* @author n.hoffmann
* @created Nov 5, 2009
- * @version 1.0
*/
public class NomenclaturalStatusElement extends AbstractReferencedEntityElement<NomenclaturalStatus> implements IEntityElement<NomenclaturalStatus>, ISelectableElement{
/** {@inheritDoc} */
@Override
public void createControls(ICdmFormElement element, int style) {
- TermVocabulary vocabulary = CdmStore.getService(IVocabularyService.class).find(VocabularyEnum.NomenclaturalStatusType.getUuid());
- nomenclaturalStatusTypeCombo = formFactory.createDefinedTermComboElement(vocabulary, this, "Status", null,false, style, true);
+ //TermVocabulary vocabulary = CdmStore.getService(IVocabularyService.class).find(VocabularyEnum.NomenclaturalStatusType.getUuid());
+
+ Comparator<NomenclaturalStatusType> termComparator= new Comparator<NomenclaturalStatusType>() {
+
+ @Override
+ public int compare(NomenclaturalStatusType t1, NomenclaturalStatusType t2) {
+ if (t1 == t2){
+ return 0;
+ }
+ if (t1 == null){
+ return -1;
+ }
+ if (t2 == null){
+ return 1;
+ }
+ if (t1.getIdInVocabulary() == t2.getIdInVocabulary()){
+ return 0;
+ }
+ if (t1.getIdInVocabulary() == null ){
+ return t1.getLabel().compareTo(t2.getIdInVocabulary());
+ }
+ if (t2.getIdInVocabulary() == null){
+ return t1.getIdInVocabulary().compareTo(t2.getLabel());
+ }
+ return t1.getIdInVocabulary().compareTo(t2.getIdInVocabulary());
+
+ }
+ };
+
+ nomenclaturalStatusTypeCombo = formFactory.createDefinedTermComboElement(TermType.NomenclaturalStatusType, this, "Status", null,true, style, true);
+ nomenclaturalStatusTypeCombo.setTermComparator(termComparator);
ruleConsideredText = formFactory.createTextWithLabelElement(this, "Rule Considered", "", style);
super.createControls(element, style);
- if (vocabulary.getTerms().contains(NomenclaturalStatusType.ILLEGITIMATE()) && getEntity().getType() == null){
- nomenclaturalStatusTypeCombo.setSelection(NomenclaturalStatusType.ILLEGITIMATE());
- getEntity().setType(nomenclaturalStatusTypeCombo.getSelection());
- }
+
}
/** {@inheritDoc} */
super.setEntity(entity);
if (entity.getType() != null){
nomenclaturalStatusTypeCombo.setSelection(entity.getType());
+ nomenclaturalStatusTypeCombo.removeEmptyElement();
}
ruleConsideredText.setText(entity.getRuleConsidered());
}