merged/implemented cdm3.3 model adaptations
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / combo / TermComboElement.java
index 46cfd9c76772bfdc393be75b9be8a37f8cf488c9..663792a260fc2669dcdd70d40c91f6186e46d1f5 100644 (file)
@@ -19,7 +19,9 @@ import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Listener;
 
+import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.preference.Resources;
 import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -65,6 +67,56 @@ public class TermComboElement<T extends DefinedTermBase>
 
        private List<T> customPreferredTerms;
 
+       /**
+        * <p>
+        * Constructor for AbstractTermComboElement.
+        * </p>
+        * 
+        * @param parentElement
+        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+        *            object.
+        * @param style
+        *            a int.
+        * @param formFactory
+        *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
+        *            object.
+        * @param labelString
+        *            a {@link java.lang.String} object.
+        * @param selection
+        *            a T object.
+        * @param visibleItems
+        *            a int.
+        * @param <T>
+        *            a T object.
+        */
+       public TermComboElement(CdmFormFactory formFactory,
+                       ICdmFormElement parentElement, TermType termType, String labelString, T selection,
+                       int style) {
+               super(formFactory, parentElement);
+               
+               this.termClass =  (Class<T>) DefinedTerm.class;
+               
+               if (labelString != null) {
+                       label = formFactory.createLabel(getLayoutComposite(), labelString);
+                       addControl(label);
+               }
+
+               // create combo
+               combo = new Combo(getLayoutComposite(), SWT.BORDER | SWT.READ_ONLY);
+               addControl(combo);
+               combo.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
+               combo.setVisibleItemCount(DEFAULT_VISIBLE_ITEMS);
+
+               populateTerms(filterDefinedTermByTermType(getPreferredTerms(), termType));
+
+               combo.addSelectionListener(this);
+               combo.addDisposeListener(this);
+               PreferencesUtil.getPreferenceStore().addPropertyChangeListener(this);
+
+               if (selection != null) {
+                       setSelection(selection);
+               }
+       }
 
        /**
         * <p>
@@ -392,4 +444,14 @@ public class TermComboElement<T extends DefinedTermBase>
                customPreferredTerms = terms;
                populateTerms(customPreferredTerms);
        }
+       
+       private List<T> filterDefinedTermByTermType(List<T> terms, TermType termType) {
+               List<T> definedTerms = new ArrayList<T>();
+               for(T term : terms){
+                       if(term.getTermType().equals(termType)) {
+                               definedTerms.add(term);
+                       }
+               }               
+               return definedTerms;
+       }
 }