import java.util.Map.Entry;
import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.ui.forms.widgets.TableWrapData;
-import eu.etaxonomy.cdm.model.term.IEnumTerm;
-import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
import eu.etaxonomy.cdm.model.media.ExternalLinkType;
+import eu.etaxonomy.cdm.model.name.NameRelationship;
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
+import eu.etaxonomy.cdm.model.name.NomenclaturalCodeEdition;
+import eu.etaxonomy.cdm.model.name.TaxonName;
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.term.IEnumTerm;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.section.name.NameRelationshipDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.name.NomenclaturalStatusElement;
+import eu.etaxonomy.taxeditor.ui.section.name.NomenclaturalStatusSection;
/**
* @author n.hoffmann
return OriginalSourceType.class;
}
- }
+ },
+ new CdmEnumDataHolder<NomenclaturalCodeEdition>(){
+
+ @Override
+ public String getName() {
+ return "Nomenclatural Code Edition";
+ }
+
+ @Override
+ public Collection<NomenclaturalCodeEdition> getElements() {
+ return Arrays.asList(NomenclaturalCodeEdition.values());
+ }
+
+ @Override
+ public Class<NomenclaturalCodeEdition> getClazz() {
+ return NomenclaturalCodeEdition.class;
+ }
+
+ }
};
super(formFactory, parentElement);
this.enumType = enumType;
label.setText(getDefaultLabelString());
-
populateTypes(comparator);
-
combo.addSelectionListener(this);
}
+ public void setIndent(int indent) {
+ TableWrapData layoutData = new TableWrapData();
+ layoutData.indent = indent;
+ label.setLayoutData(layoutData);
+
+ getLayoutComposite().layout();
+ }
private String getDefaultLabelString() {
return "Orig. Source Type";
} else if(enumType.equals(SpecimenOrObservationType.class)) {
return "Spec./Obs. Type";
- }
- else if(enumType.equals(ExternalLinkType.class)) {
+ } else if(enumType.equals(ExternalLinkType.class)) {
return "Type";
+ } else if(enumType.equals(NomenclaturalCodeEdition.class)) {
+ return "Code Edition";
}
return "No Label";
}
elementTypeList.add(keyLabelPair.getKey());
combo.add(keyLabelPair.getValue());
}
+ }else if(enumType.equals(NomenclaturalCodeEdition.class)){
+ NomenclaturalCode code = null;
+
+ ICdmFormElement parentElement = getParentElement();
+ if (parentElement instanceof NameRelationshipDetailElement){
+ NameRelationship rel = ((NameRelationshipDetailElement)parentElement).getEntity();
+ code = rel.getToName().getNomenclaturalCode();
+ }else if (parentElement instanceof NomenclaturalStatusElement){
+ ICdmFormElement parent = ((NomenclaturalStatusElement)parentElement).getParentElement();
+ TaxonName name = ((NomenclaturalStatusSection)parent).getEntity();
+ code = name.getNomenclaturalCode();
+ }
+ List<NomenclaturalCodeEdition> elements = NomenclaturalCodeEdition.forCode(code);
+ LinkedHashMap<NomenclaturalCodeEdition, String> orderedTerms = AbstractUtility.orderTerms(elements);
+ for (NomenclaturalCodeEdition codeEdition: elements){
+ elementTypeList.add((T)codeEdition);
+ combo.add(codeEdition.getMessage());
+ }
}
// default order
else{
for(T enumElement : elementsForClass){
elementTypeList.add(enumElement);
- combo.add(((Enum) enumElement).name());
+ if (enumElement instanceof IEnumTerm) {
+ combo.add(((IEnumTerm) enumElement).getMessage());
+ }else{
+ combo.add(((Enum) enumElement).name());
+ }
}
}
}