fixes #1504 and a few problems with persisting term selections
authorn.hoffmann <n.hoffmann@localhost>
Wed, 8 Dec 2010 13:39:09 +0000 (13:39 +0000)
committern.hoffmann <n.hoffmann@localhost>
Wed, 8 Dec 2010 13:39:09 +0000 (13:39 +0000)
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/term/AbstractTermComboElement.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/NameDetailElement.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/NonViralNameDetailElement.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/TermManager.java

index 36b14d58e01e5f435dfebc14f7a4b3a3cc2df7c5..29074f896a54fab623e3c8f00eb4c7580d1a6340 100644 (file)
@@ -9,7 +9,6 @@ import java.util.Collections;
 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;
@@ -44,8 +43,6 @@ import eu.etaxonomy.taxeditor.store.TermManager;
  */
 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 = "";
@@ -85,7 +82,7 @@ public abstract class AbstractTermComboElement<T extends DefinedTermBase> extend
         combo.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY());
         combo.setVisibleItemCount(visibleItems);
         
-        populateTerms();
+        populateTerms(preferredTerms());
         
         combo.addSelectionListener(this);
         combo.addDisposeListener(this);
@@ -120,17 +117,16 @@ public abstract class AbstractTermComboElement<T extends DefinedTermBase> extend
                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();
                
@@ -143,17 +139,18 @@ public abstract class AbstractTermComboElement<T extends DefinedTermBase> extend
                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);
                                }
                                
                        }
@@ -166,19 +163,9 @@ public abstract class AbstractTermComboElement<T extends DefinedTermBase> extend
                                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);
                }
@@ -214,23 +201,11 @@ public abstract class AbstractTermComboElement<T extends DefinedTermBase> extend
        }
 
        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);
        }
        
        /**
@@ -267,7 +242,7 @@ public abstract class AbstractTermComboElement<T extends DefinedTermBase> extend
        public void propertyChange(PropertyChangeEvent event) {
                super.propertyChange(event);
                if (event != null && PreferencesUtil.PREFERRED_TERMS_CHANGE.equals(event.getProperty())) {
-                       populateTerms();
+                       populateTerms(preferredTerms());
                }
        }
        
index 1ca26e4787dc3ff3fee02ab183c88792787d5553..6c04f27b8442b600cd64af461597068be9bafb7d 100644 (file)
@@ -12,7 +12,6 @@ package eu.etaxonomy.taxeditor.section.name;
 
 import java.util.Arrays;
 
-import org.apache.log4j.Logger;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.SWTException;
 
@@ -48,9 +47,6 @@ import eu.etaxonomy.taxeditor.section.AbstractCdmDetailSection;
  */
 public class NameDetailElement extends AbstractCdmDetailElement<NonViralName> implements ISelectableElement, IEnableableFormElement{
 
-       private static final Logger logger = Logger
-                       .getLogger(NameDetailElement.class);
-       
        private ToggleableTextElement toggleable_cache;
        private AbstractTermComboElement<Rank> combo_rank;
        private TextWithLabelElement text_appendedPhrase;
index c79260be0d706d9a7231d66c8bd516791ee8acd3..66bf5c8555eb50931e7884fbdbef9b0497012280 100644 (file)
@@ -13,15 +13,14 @@ package eu.etaxonomy.taxeditor.section.name;
 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;
@@ -35,9 +34,6 @@ 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;
index 5007b44b2daaa71215dd29ac585c50900a3bde51..e00552671f1bdf0ed53d71f15dce8cea92c3f5c3 100644 (file)
@@ -234,7 +234,7 @@ public class CdmStore{
        private static ExportHandler exportHandler;
        
        private static ContextManager contextManager;
-       private static TermManager termManager;
+       private static TermManager termManager = new TermManager();
        
        private Language language;
        
@@ -676,9 +676,6 @@ public class CdmStore{
        }
        
        public static TermManager getTermManager(){
-               if(termManager == null){
-                       termManager = new TermManager();
-               }
                return termManager;
        }
        
index aa0c9eda6dd469eaf7476f92078ae5ff98d7e7bb..fbe85c9e794dbafa44388522d0afc6f7e7b0c7dc 100644 (file)
@@ -73,6 +73,10 @@ public class TermManager extends ContextListenerAdapter{
        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);
@@ -90,7 +94,19 @@ public class TermManager extends ContextListenerAdapter{
         * @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);