import org.eclipse.swt.widgets.Listener;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
+import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.store.CdmStore;
private final TermType termType;
- public VocabularyComboElement(CdmFormFactory formFactory,
+ public VocabularyComboElement(CdmFormFactory formFactory,
ICdmFormElement parentElement, TermType termType, String labelString, VOC selection,
int style) {
super(formFactory, parentElement);
combo.addSelectionListener(this);
combo.addDisposeListener(this);
+ addContentProposalAdapter();
+
PreferencesUtil.getPreferenceStore().addPropertyChangeListener(this);
if (selection != null) {
}
}
- /**
+ public VocabularyComboElement(CdmFormFactory formFactory,
+ ICdmFormElement parentElement, TermType termType, String labelString, TermVocabularyDto selection,
+ int style) {
+ super(formFactory, parentElement);
+
+ this.termType = termType;
+
+ populateTerms(getVocabularies());
+
+ combo.addSelectionListener(this);
+ combo.addDisposeListener(this);
+ addContentProposalAdapter();
+
+ PreferencesUtil.getPreferenceStore().addPropertyChangeListener(this);
+
+ if (selection != null) {
+ setSelectionDto(selection);
+ }
+ }
+
+
+
+
+ /**
* <p>Sets the selection of the combo to the given T object.</p>
* <p>Passing <code>null</code> to this method will set the selection to
* the empty element and effectively clear the selection</p>
public void setSelection(VOC selection) {
this.selection = selection;
- this.selection = selection;
-
Listener[] listeners = combo.getListeners(SWT.Selection);
- for (Listener listener : listeners) {
- combo.removeListener(SWT.Selection, listener);
- }
+// for (Listener listener : listeners) {
+// combo.removeListener(SWT.Selection, listener);
+// }
int selectedIndex;
if(selection == null){
// set selection to the emptyElement
}
combo.select(selectedIndex);
- for (Listener listener : listeners) {
- combo.addListener(SWT.Selection, listener);
- }
+// for (Listener listener : listeners) {
+// combo.addListener(SWT.Selection, listener);
+// }
}
+
+ public void setSelectionDto(TermVocabularyDto selection) {
+ Listener[] listeners = combo.getListeners(SWT.Selection);
+
+// for (Listener listener : listeners) {
+// combo.removeListener(SWT.Selection, listener);
+// }
+ int selectedIndex = 0;
+ if(selection == null){
+ // set selection to the emptyElement
+ selectedIndex = 0;
+ }else{
+ for (VOC voc: terms){
+
+ if (voc != null && voc.getUuid().equals(selection.getUuid())){
+ selectedIndex = terms.indexOf(voc);
+ }
+ }
+
+// if (selectedIndex == -1) {
+// createTermNotInPreferredTerms(selection);
+// selectedIndex = terms.indexOf(selection);
+// }
+ }
+ if (selectedIndex > -1) {
+ 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
if (vocComparator != null) {
Collections.sort(preferredTerms, vocComparator);
+ }else{
+ Collections.sort(preferredTerms, new Comparator<VOC>() {
+
+ @Override
+ public int compare(VOC o1, VOC o2) {
+ if (o1.equals(o2)){
+ return 0;
+ }
+ int result = ((TermVocabulary) o1).getTitleCache().toLowerCase().compareTo(((TermVocabulary)o2).getTitleCache().toLowerCase());
+
+ return result;
+ }
+ });
}
for (VOC term : preferredTerms) {
String label = getLabel(term);
}
combo.add(label);
+ combo.setData(label, term);
terms.add(term);
i++;
}
protected List<VOC> getVocabularies(){
- List<TermVocabulary<TERM>> list = CdmStore.getService(IVocabularyService.class).<TERM>findByTermType(termType);
+ List<TermVocabulary<TERM>> list = CdmStore.getService(IVocabularyService.class).<TERM>findByTermType(termType, null);
return (List<VOC>) list;
}
/** {@inheritDoc} */
@Override
public void widgetSelected(SelectionEvent e) {
- selection = terms.get(combo.getSelectionIndex());
+ int i = combo.getSelectionIndex();
+ if (i > -1){
+ selection = terms.get(i);
+ }else{
+ selection = null;
+ }
firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
}