public void setTermComparator(Comparator<TermDto> termComparator) {
this.termComparator = termComparator;
+ Collections.sort(this.getTerms(), termComparator);
populateTerms();
}
int style) {
this(formFactory, parentElement, null, termType, null, null,labelString, selection, addEmptyElement, style, false, new DefaultTermDtoComparator());
}
+ public TermDtoComboElement(CdmFormFactory formFactory,
+ ICdmFormElement parentElement, TermType termType, String labelString, TermDto selection, boolean addEmptyElement,
+ int style, Comparator<TermDto> comparator) {
+ this(formFactory, parentElement, null, termType, null, null,labelString, selection, addEmptyElement, style, false, comparator);
+ }
public TermDtoComboElement(CdmFormFactory formFactory,
ICdmFormElement parentElement, Class<DefinedTermBase> termClass, String labelString, TermDto selection, boolean addEmptyElement,
*/
protected void populateTerms() {
combo.removeAll();
- int i = 1;
+ int i = 0;
int index = 0;
if(addEmptyElement){
// Add an empty element for when nothing was selected yet
combo.add(EMPTY_ELEMENT_LABEL);
+ i= 1;
}
List<TermDto> withoutNull = new ArrayList<>(terms);
}
combo.add(label);
combo.setData(label, term);
- i++;
+
+
+
if (selection != null) {
if (selection.equals(term)) {
index = i;
}
}
+ i++;
+
+
}
if (selection != null && index == 0) {
createTermNotInPreferredTerms(selection, terms);
int style) {
return this.createDefinedTermComboElement(termType, null, null, parentElement, labelString, selection, true, style, false, null);
}
+ public TermDtoComboElement createDefinedTermComboElementDto(
+ TermType termType,
+ List<TermDto> terms,
+ ICdmFormElement parentElement,
+ String labelString,
+ TermDto selection,
+ boolean addEmptyElement,
+ Comparator<TermDto> comparator,
+ int style) {
+ if(termType!=null){
+ //TermDtoComboElement element = new TermDtoComboElement(this,
+ // parentElement, termType, labelString, selection, addEmptyElement,
+ // style);
+ TermDtoComboElement element = new TermDtoComboElement(this, parentElement, termType, labelString, selection, addEmptyElement, style, comparator);
+
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+// }
+// else if(termVocabulary != null){
+// TermDtoComboElement<T> element = new TermDtoComboElement<>(this, parentElement, termVocabulary, labelString, selection, addEmptyElement, style, useAbbrevLabel, comparator);
+//// if (comparator!= null){
+//// element.setTermComparator(comparator);
+//// }
+// adapt(element);
+// parentElement.addElement(element);
+// return element;
+ }else if (terms != null){
+
+ TermDtoComboElement element = new TermDtoComboElement(this, parentElement, terms, labelString, selection, addEmptyElement, style, false, comparator);
+
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+ else {
+ //this should never happen
+ return null;
+ }
+
+ }
public TermDtoComboElement createDefinedTermComboElementDto(
TermType termType,
@Override
protected void createControls(ICdmFormElement formElement, INonViralName nonViralName, int style) {
- Comparator<Rank> comparator = null;
+ Comparator<TermDto> comparator = null;
config = PreferencesUtil.getPreferredNameDetailsConfiguration();
- if(PreferencesUtil.getSortRanksHierarchichally()){
- comparator = new Comparator<Rank>(){
+ //if(PreferencesUtil.getSortRanksHierarchichally()){
+ comparator = new Comparator<TermDto>(){
@Override
- public int compare(Rank o1, Rank o2) {
+ public int compare(TermDto o1, TermDto o2) {
if (o2 == null){
return -1;
}
- return -1*o1.compareTo(o2);
+ return o1.getOrderIndex().compareTo(o2.getOrderIndex());
}
};
- }
+ //}
if (nonViralName.getRank() != null && !(nonViralName.getRank().isCultivar() == nonViralName.getNameType().equals(NomenclaturalCode.ICNCP))){
nonViralName.setRank(null);
}
toggleable_cache = formFactory.createToggleableTextField(this, "Name Cache", nonViralName.getNameCache(), nonViralName.isProtectedNameCache(), style);
List<TermDto> ranks = getRanks(nonViralName, nonViralName.getNameType());
- combo_rank = formFactory.createDefinedTermComboElementDto(null, ranks, this, "Rank", TermDto.fromTerm(nonViralName.getRank()),true, style);
+ combo_rank = formFactory.createDefinedTermComboElementDto(null, ranks, this, "Rank", TermDto.fromTerm(nonViralName.getRank()),true, comparator, style);
+ //combo_rank.setTermComparator(comparator);
createGenusOrUninomialControls(this, nonViralName, style);
createInfragenerericEpithetControls(this, nonViralName, style);
createSpecificEpithetControls(this, nonViralName, style);
if (config.isRankActivated()){
List<TermDto> ranks = getRanks(nonViralName, nonViralName.getNameType());
- combo_rank = formFactory.createDefinedTermComboElementDto(null, ranks, this, "Rank", TermDto.fromTerm(nonViralName.getRank()),true, style);
+ combo_rank = formFactory.createDefinedTermComboElementDto(null, ranks, this, "Rank", TermDto.fromTerm(nonViralName.getRank()),true, comparator, style);
+ //combo_rank.setTermComparator(comparator);
}
if (config.isAtomisedEpithetsActivated()){
ranks.add(term);
}
}
+ ranks.sort( (a, b) -> { return a.getOrderIndex().compareTo(b.getOrderIndex()); } );
+
return ranks;
}