From: n.hoffmann Date: Tue, 31 Jan 2012 16:56:43 +0000 (+0000) Subject: merged term combo fixes into trunk X-Git-Tag: 3.6.0~1099 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/0f1b38deca8fcbad4e84d08a4a3b22aa9a4406fa?hp=7de797a747e11f1fb2885fb58fe6bff494175070 merged term combo fixes into trunk --- diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/TermComboElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/TermComboElement.java index ac7e878a5..4dfee30e7 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/TermComboElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/TermComboElement.java @@ -63,6 +63,8 @@ public class TermComboElement private Class termClass; + private List customPreferredTerms; + /** *

@@ -140,23 +142,30 @@ public class TermComboElement for (Listener listener : listeners) { combo.removeListener(SWT.Selection, listener); } - int index; + int selectedIndex; if(selection == null){ - index = 0; + // set selection to the emptyElement + selectedIndex = 0; }else{ - index = terms.indexOf(selection); - if (index == -1) { + selectedIndex = terms.indexOf(selection); + if (selectedIndex == -1) { createTermNotInPreferredTerms(selection); - index = terms.indexOf(selection); + selectedIndex = terms.indexOf(selection); } } - combo.select(index); + combo.select(selectedIndex); for (Listener listener : listeners) { combo.addListener(SWT.Selection, listener); } } + /** + * Fills the combo with elements and sets up the convenience functions + * for selection index + * + * @param preferredTerms + */ private void populateTerms(List preferredTerms) { combo.removeAll(); @@ -227,6 +236,9 @@ public class TermComboElement * @return a {@link java.util.List} object. */ protected List getPreferredTerms(){ + if (customPreferredTerms != null){ + return customPreferredTerms; + } return getTermManager().getPreferredTerms(termClass); } @@ -242,6 +254,11 @@ public class TermComboElement return term.getLabel(CdmStore.getDefaultLanguage()); } + /** + * + * + * @param term + */ private void createTermNotInPreferredTerms(T term) { List preferredTerms = getPreferredTerms(); @@ -341,15 +358,34 @@ public class TermComboElement return CdmStore.getTermManager(); } + /** + * + * @return + */ public int getVisibleItemCount(){ return combo.getVisibleItemCount(); } + /** + * + * @param count + */ public void setVisibleItemCount(int count){ combo.setVisibleItemCount(count); } + /** + *

A {@link List} of term objects may be passed to this combo box. In this case, the default behaviour + * of displaying the preferred terms for the T type will be overridden and the combo will only display the + * given terms. Also, any previous selection will be reseted.

+ * + *

To return to the default of displaying the preferred terms, simply pass null.

+ * + * @param terms a {@link List} of T objects or null for default preferred terms + */ public void setTerms(List terms) { - populateTerms(terms); + setSelection(null); + customPreferredTerms = terms; + populateTerms(customPreferredTerms); } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameDetailElement.java index bab221f5b..d68e8fcae 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameDetailElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameDetailElement.java @@ -75,7 +75,7 @@ public class NameDetailElement extends AbstractIdentifiableEntityDetailElement