merged term combo fixes into trunk
authorn.hoffmann <n.hoffmann@localhost>
Tue, 31 Jan 2012 16:56:43 +0000 (16:56 +0000)
committern.hoffmann <n.hoffmann@localhost>
Tue, 31 Jan 2012 16:56:43 +0000 (16:56 +0000)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/TermComboElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameDetailElement.java

index ac7e878a55c3ec55f31aca868aa6a235685d229c..4dfee30e729057a255764ca43577a4e0d8724372 100644 (file)
@@ -63,6 +63,8 @@ public class TermComboElement<T extends DefinedTermBase>
 
        private Class<T> termClass;
 
+       private List<T> customPreferredTerms;
+
 
        /**
         * <p>
@@ -140,23 +142,30 @@ public class TermComboElement<T extends DefinedTermBase>
                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<T> preferredTerms) {
 
                combo.removeAll();
@@ -227,6 +236,9 @@ public class TermComboElement<T extends DefinedTermBase>
         * @return a {@link java.util.List} object.
         */
        protected List<T> getPreferredTerms(){
+               if (customPreferredTerms != null){
+                       return customPreferredTerms;
+               }
                return getTermManager().getPreferredTerms(termClass);
        }
 
@@ -242,6 +254,11 @@ public class TermComboElement<T extends DefinedTermBase>
                return term.getLabel(CdmStore.getDefaultLanguage());
        }
 
+       /**
+        * 
+        * 
+        * @param term
+        */
        private void createTermNotInPreferredTerms(T term) {
                List<T> preferredTerms = getPreferredTerms();
 
@@ -341,15 +358,34 @@ public class TermComboElement<T extends DefinedTermBase>
                return CdmStore.getTermManager();
        }
        
+       /**
+        * 
+        * @return
+        */
        public int getVisibleItemCount(){
                return combo.getVisibleItemCount();
        }
        
+       /**
+        * 
+        * @param count
+        */
        public void setVisibleItemCount(int count){
                combo.setVisibleItemCount(count);
        }
 
+       /**
+        * <p>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.</p>
+        * 
+        * <p>To return to the default of displaying the preferred terms, simply pass <code>null</code>.</p>
+        * 
+        * @param terms a {@link List} of T objects or <code>null</code> for default preferred terms
+        */
        public void setTerms(List<T> terms) {
-               populateTerms(terms);
+               setSelection(null);
+               customPreferredTerms = terms;
+               populateTerms(customPreferredTerms);
        }
 }
index bab221f5b8015250854232597c9749780d891434..d68e8fcaec14c75bc3c020f34b8a853563b01581 100644 (file)
@@ -75,7 +75,7 @@ public class NameDetailElement extends AbstractIdentifiableEntityDetailElement<N
                toggleable_cache = formFactory.createToggleableTextField(this, "Name Cache", nonViralName.getNameCache(), nonViralName.isProtectedNameCache(), style);
                
                combo_rank = formFactory.createTermComboElement(Rank.class, this, "Rank", nonViralName.getRank(), style);
-
+               
                createGenusOrUninomialControls(this, nonViralName, style);
                createInfragenerericEpithetControls(this, nonViralName, style);
                createSpecificEpithetControls(this, nonViralName, style);