public void setTermComparator(Comparator<T> termComparator) {
this.termComparator = termComparator;
- List<T> termsWithoutNull = terms.subList(1, terms.size());
+// List<T> termsWithoutNull = terms.subList(1, terms.size());
- populateTerms(termsWithoutNull);
+ populateTerms();
}
if(termType!=null){
//TODO try to remove generic T and avoid classes to be used
- populateTerms((List<T>) getTermManager().getPreferredTerms(termType));
+ addTerms((List<T>) getTermManager().getPreferredTerms(termType));
+
}
else if(termVocabulary!=null){
- populateTerms((List<T>) getTermManager().getPreferredTerms(termVocabulary));
+ addTerms((List<T>) getTermManager().getPreferredTerms(termVocabulary));
}
else if(this.termClass!=null){
- populateTerms(getPreferredTerms());
+ addTerms(getPreferredTerms());
}else if (terms != null){
- populateTerms(terms);
+ addTerms(terms);
}
combo.addDisposeListener(this);
if (comparator == null){
setTermComparator(new DefaultTermComparator<T>());
+ }else{
+ populateTerms();
}
+
PreferencesUtil.getPreferenceStore().addPropertyChangeListener(this);
if (selection != null) {
}
}
+ protected void addTerms(List<T> preferredTerms) {
+ terms = new ArrayList<T>();
+ if(addEmptyElement){
+ // Add an empty element for when nothing was selected yet
+ combo.add(EMPTY_ELEMENT_LABEL);
+ terms.add(emptyElement);
+ }
+ for (T term: preferredTerms){
+ terms.add(term);
+ }
+
+
+ }
+
private TermComboElement(CdmFormFactory formFactory,
ICdmFormElement parentElement, Class<T> termClass, TermType termType, TermVocabulary<?> termVocabulary, List<T> terms,String labelString, TermDto selection, boolean addEmptyElement,
int style, boolean useAbbrevLabel, Comparator<T> comparator) {
if(termType!=null){
//TODO try to remove generic T and avoid classes to be used
- populateTerms((List<T>) getTermManager().getPreferredTerms(termType));
+ addTerms((List<T>) getTermManager().getPreferredTerms(termType));
}
else if(termVocabulary!=null){
- populateTerms((List<T>) getTermManager().getPreferredTerms(termVocabulary));
+ addTerms((List<T>) getTermManager().getPreferredTerms(termVocabulary));
}
else if(this.termClass!=null){
- populateTerms(getPreferredTerms());
+ addTerms(getPreferredTerms());
}else if (terms != null){
- populateTerms(terms);
+ addTerms(terms);
}
combo.addDisposeListener(this);
if (comparator == null){
setTermComparator(new DefaultTermComparator<T>());
+ }else{
+ populateTerms();
}
PreferencesUtil.getPreferenceStore().addPropertyChangeListener(this);
if (this.terms != null && selection != null){
*
* @param preferredTerms
*/
- protected void populateTerms(List<T> preferredTerms) {
+ protected void populateTerms() {
combo.removeAll();
- terms = new ArrayList<T>();
+// terms = new ArrayList<T>();
int i = 1;
int index = 0;
if(addEmptyElement){
// Add an empty element for when nothing was selected yet
combo.add(EMPTY_ELEMENT_LABEL);
- terms.add(emptyElement);
+// terms.add(emptyElement);
}
-
+ List<T> withoutNull = new ArrayList<>(terms);
if (termComparator != null) {
- Collections.sort(preferredTerms, termComparator);
+ if (addEmptyElement){
+ withoutNull = terms.subList(1, terms.size());
+ }
+ Collections.sort(withoutNull, termComparator);
}
- for (T term : preferredTerms) {
+ for (T term : withoutNull) {
String label = getLabel(term);
if (label == null) {
if (term.getTitleCache() != null) {
combo.add(label);
combo.setData(label, term);
- terms.add(term);
+// terms.add(term);
i++;
if (selection != null) {
}
if (selection != null && index == 0) {
- createTermNotInPreferredTerms(selection, preferredTerms);
+ createTermNotInPreferredTerms(selection, terms);
}
combo.select(index);
private void createTermNotInPreferredTerms(T term, List<T> preferredTerms) {
//List<T> preferredTerms = getPreferredTerms();
- preferredTerms.add(term);
+ terms.add(term);
- populateTerms(preferredTerms);
+ populateTerms();
}
/** {@inheritDoc} */
if (event != null
&& PreferencesUtil.PREFERRED_TERMS_CHANGE.equals(event
.getProperty())) {
- populateTerms(getPreferredTerms());
+ addTerms(getPreferredTerms());
+ populateTerms();
}
this.setSelection(selection);
}
public void setTerms(List<T> terms) {
// setSelection(null);
customPreferredTerms = terms;
- populateTerms(customPreferredTerms);
+ addTerms(customPreferredTerms);
+ populateTerms();
}
public void removeEmptyElement(){