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;
import eu.etaxonomy.taxeditor.store.StoreUtil;
import eu.etaxonomy.taxeditor.store.TermManager;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
import eu.etaxonomy.taxeditor.ui.element.ISelectable;
import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
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>
public void setSelection(T selection) {
this.selection = selection;
+ this.selection = selection;
+
Listener[] listeners = combo.getListeners(SWT.Selection);
for (Listener listener : listeners) {
if (label == null) {
if (term.getTitleCache() != null) {
label = term.getTitleCache();
- StoreUtil.error(getClass(),
- "Term does not have a representation: " + term
- + ", " + term.getUuid(), null);
+ StoreUtil.warn(getClass(),
+ "Term does not have a default language representation: " + label
+ + ", " + term.getUuid());
} else {
label = "Unknown";
- StoreUtil.error(getClass(),
+ StoreUtil.warn(getClass(),
"Representation Label and TitleCache empty for term: "
- + term + ", " + term.getUuid(), null);
+ + term + ", " + term.getUuid());
}
}
/*
* (non-Javadoc)
- *
- * @see
- * eu.etaxonomy.taxeditor.forms.IEnableableFormElement#setEnabled(boolean)
+ * @see eu.etaxonomy.taxeditor.forms.IEnableableFormElement#setEnabled(boolean)
*/
/** {@inheritDoc} */
public void setEnabled(boolean enabled) {
* @return a {@link java.lang.String} object.
*/
protected String getLabel(T term) {
- return term.getLabel(CdmStore.getDefaultLanguage());
+ if (term == null){
+ return "";
+ }else{
+ return term.getLabel(CdmStore.getDefaultLanguage());
+ }
}
/**
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;
+ }
}