import java.util.Comparator;
import java.util.List;
-import org.apache.log4j.Logger;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent;
*/
public abstract class AbstractTermComboElement<T extends DefinedTermBase> extends AbstractCdmFormElement implements SelectionListener, DisposeListener, IEnableableFormElement{
- private static final Logger logger = Logger.getLogger(AbstractTermComboElement.class);
-
T selection;
private static String EMPTY_ELEMENT_LABEL = "";
combo.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY());
combo.setVisibleItemCount(visibleItems);
- populateTerms();
+ populateTerms(preferredTerms());
combo.addSelectionListener(this);
combo.addDisposeListener(this);
int index = terms.indexOf(selection);
if(index == -1){
createTermNotInPreferredTerms(selection);
- }else{
- combo.select(index);
+ index = terms.indexOf(selection);
}
-
+ combo.select(index);
+
for (Listener listener : listeners){
combo.addListener(SWT.Selection, listener);
}
}
- private void populateTerms(){
- List<T> preferredTerms = preferredTerms();
+ private void populateTerms(List<T> preferredTerms){
combo.removeAll();
combo.add(EMPTY_ELEMENT_LABEL);
terms.add(emptyElement);
- if(termComparator != null)
+ if(termComparator != null){
Collections.sort(preferredTerms, termComparator);
+ }
for (T term : preferredTerms) {
String label = getLabel(term);
if (label == null) {
if(term.getTitleCache() != null){
label = term.getTitleCache();
- logger.error("Term does not have a representation: " + term + ", " + term.getUuid());
+ EditorUtil.error(getClass(), "Term does not have a representation: " + term + ", " + term.getUuid(), null);
}else{
label = "Unknown";
- logger.error("Representation Label and TitleCache empty for term: " + term + ", " + term.getUuid());
+ EditorUtil.error(getClass(), "Representation Label and TitleCache empty for term: " + term + ", " + term.getUuid(), null);
}
}
if (selection.equals(term)) {
index = i;
}
- } else {
- // TODO isn't it better to put the last language at the top of the menu, not automatically select?
-// if (lastLanguage != null && lastLanguage.equals(language)) {
-// index = i;
-// }
}
}
- // Check whether language is in menu
- if (msgComposite != null) {
- msgComposite.dispose();
- msgComposite = null;
- }
if (selection != null && index == 0) {
createTermNotInPreferredTerms(selection);
}
}
private void createTermNotInPreferredTerms(T term) {
+ List<T> preferredTerms = preferredTerms();
-// PreferencesUtil.addTermToPreferredTerms(term);
-//
-// msgComposite = formFactory.createComposite(getLayoutComposite());
-// msgComposite.setLayout(LAYOUT());
-// msgComposite.setLayoutData(FILL_GRID_HORIZONTALLY(2, 1));
-//
-// String langText = term.getDescription() == null ? term.getLabel() : term.getDescription();
-// langText += " is used here, but was not in your list of preferred terms.";
-// Label label = formFactory.createLabel(msgComposite, langText, SWT.WRAP);
-//
-//
-// msgComposite.moveBelow(combo);
-//
-// getLayoutComposite().layout();
+ preferredTerms.add(term);
-// setSelection(term);
+ populateTerms(preferredTerms);
}
/**
public void propertyChange(PropertyChangeEvent event) {
super.propertyChange(event);
if (event != null && PreferencesUtil.PREFERRED_TERMS_CHANGE.equals(event.getProperty())) {
- populateTerms();
+ populateTerms(preferredTerms());
}
}
import java.util.Arrays;
import java.util.List;
-import org.apache.log4j.Logger;
import org.eclipse.ui.forms.widgets.Section;
import eu.etaxonomy.cdm.model.name.NonViralName;
import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
-import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
-import eu.etaxonomy.taxeditor.forms.ToggleableTextElement;
import eu.etaxonomy.taxeditor.forms.CdmFormFactory.DetailType;
import eu.etaxonomy.taxeditor.forms.CdmFormFactory.EnumComboType;
+import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
+import eu.etaxonomy.taxeditor.forms.ToggleableTextElement;
import eu.etaxonomy.taxeditor.forms.term.NomenclaturalCodeComboElement;
import eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement;
import eu.etaxonomy.taxeditor.section.AbstractCdmDetailSection;
*/
public class NonViralNameDetailElement extends AbstractCdmDetailElement<NonViralName> {
-
- private static final Logger logger = Logger
- .getLogger(NonViralNameDetailElement.class);
private NameDetailSection section_name;
private AuthorshipDetailSection section_author;
private ToggleableTextElement toggleable_cache;
public void contextStart(IMemento memento, IProgressMonitor monitor) {
// read preferred terms from memento into an in memory representation
IMemento terms = memento.getChild(TERMS);
+
+ if(terms == null){
+ return;
+ }
for(IMemento term : terms.getChildren(TERM)){
String typeName = term.getString(CLASS);
* @see eu.etaxonomy.taxeditor.model.ContextListenerAdapter#contextAboutToStop(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
*/
@Override
- public void contextAboutToStop(IMemento memento, IProgressMonitor monitor) {
+ public void contextStop(IMemento memento, IProgressMonitor monitor) {
+ saveTerms(memento, monitor);
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.model.ContextListenerAdapter#workbenchShutdown(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void workbenchShutdown(IMemento memento, IProgressMonitor monitor) {
+ saveTerms(memento, monitor);
+ }
+
+ private void saveTerms(IMemento memento, IProgressMonitor monitor){
IMemento terms = memento.createChild(TERMS);
for (String preferredTerm : hiddenTermsMap.keySet()){
IMemento term = terms.createChild(TERM);