Committing changes to definedtermeditor after merge from branch
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / combo / TermComboElement.java
similarity index 88%
rename from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/term/AbstractTermComboElement.java
rename to eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/TermComboElement.java
index 76c418b23e1480066dce265e4c2f22cd226eec5f..d82e6a745a735e5108eb65a289b0a4f350415dc7 100644 (file)
@@ -1,7 +1,7 @@
 /**
  * 
  */
-package eu.etaxonomy.taxeditor.ui.term;
+package eu.etaxonomy.taxeditor.ui.combo;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -16,7 +16,6 @@ import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Listener;
 
@@ -43,14 +42,16 @@ import eu.etaxonomy.taxeditor.ui.forms.ISelectable;
  * @version 1.0
  * @param <T>
  */
-public abstract class AbstractTermComboElement<T extends DefinedTermBase>
+public class TermComboElement<T extends DefinedTermBase>
                extends AbstractCdmFormElement implements SelectionListener,
                DisposeListener, IEnableableFormElement, ISelectable {
 
-       T selection;
+       private static final int DEFAULT_VISIBLE_ITEMS = 10;
+       
+       private T selection;
 
+       private T emptyElement;
        private static String EMPTY_ELEMENT_LABEL = "";
-       T emptyElement;
 
        protected Label label;
        private Combo combo;
@@ -59,7 +60,8 @@ public abstract class AbstractTermComboElement<T extends DefinedTermBase>
 
        private Comparator<T> termComparator;
 
-       private Composite msgComposite;
+       private Class<T> termClass;
+
 
        /**
         * <p>
@@ -83,11 +85,13 @@ public abstract class AbstractTermComboElement<T extends DefinedTermBase>
         * @param <T>
         *            a T object.
         */
-       public AbstractTermComboElement(CdmFormFactory formFactory,
-                       ICdmFormElement parentElement, String labelString, T selection,
-                       int visibleItems, int style) {
+       public TermComboElement(CdmFormFactory formFactory,
+                       ICdmFormElement parentElement, Class<T> termClass, String labelString, T selection,
+                       int style) {
                super(formFactory, parentElement);
-
+               
+               this.termClass = termClass;
+               
                if (labelString != null) {
                        label = formFactory.createLabel(getLayoutComposite(), labelString);
                        addControl(label);
@@ -97,9 +101,9 @@ public abstract class AbstractTermComboElement<T extends DefinedTermBase>
                combo = new Combo(getLayoutComposite(), SWT.BORDER | SWT.READ_ONLY);
                addControl(combo);
                combo.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY());
-               combo.setVisibleItemCount(visibleItems);
+               combo.setVisibleItemCount(DEFAULT_VISIBLE_ITEMS);
 
-               populateTerms(preferredTerms());
+               populateTerms(getPreferredTerms());
 
                combo.addSelectionListener(this);
                combo.addDisposeListener(this);
@@ -217,7 +221,9 @@ public abstract class AbstractTermComboElement<T extends DefinedTermBase>
         * 
         * @return a {@link java.util.List} object.
         */
-       protected abstract List<T> preferredTerms();
+       protected List<T> getPreferredTerms(){
+               return getTermManager().getPreferredTerms(termClass);
+       }
 
        /**
         * May be overridden by derived classes if the desired label string does not
@@ -232,7 +238,7 @@ public abstract class AbstractTermComboElement<T extends DefinedTermBase>
        }
 
        private void createTermNotInPreferredTerms(T term) {
-               List<T> preferredTerms = preferredTerms();
+               List<T> preferredTerms = getPreferredTerms();
 
                preferredTerms.add(term);
 
@@ -288,7 +294,7 @@ public abstract class AbstractTermComboElement<T extends DefinedTermBase>
                if (event != null
                                && PreferencesUtil.PREFERRED_TERMS_CHANGE.equals(event
                                                .getProperty())) {
-                       populateTerms(preferredTerms());
+                       populateTerms(getPreferredTerms());
                }
        }
 
@@ -329,4 +335,16 @@ public abstract class AbstractTermComboElement<T extends DefinedTermBase>
        protected TermManager getTermManager() {
                return CdmStore.getTermManager();
        }
+       
+       public int getVisibleItemCount(){
+               return combo.getVisibleItemCount();
+       }
+       
+       public void setVisibleItemCount(int count){
+               combo.setVisibleItemCount(count);
+       }
+
+       public void setTerms(List<T> terms) {
+               populateTerms(terms);
+       }
 }