add default comparator to all term combos without own comparator
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / description / NaturalLanguageDetailElement.java
index 5747110ba8b77ae6a3fb51851326d7cc078fd2d6..289ef4ea92728930b852335597c4e3f771cdd976 100644 (file)
@@ -1,9 +1,8 @@
-// $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -17,17 +16,18 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
 import org.eclipse.swt.widgets.Display;
 
 import eu.etaxonomy.cdm.api.service.NaturalLanguageGenerator;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.description.TextData;
+import eu.etaxonomy.cdm.model.term.TermTree;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
-import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LabelElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
@@ -39,7 +39,7 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
  * @version 1.0
  */
 public class NaturalLanguageDetailElement extends AbstractCdmDetailElement<TaxonDescription> {
-       
+
 
        private static final Logger logger = Logger
                        .getLogger(NaturalLanguageDetailElement.class);
@@ -55,13 +55,13 @@ public class NaturalLanguageDetailElement extends AbstractCdmDetailElement<Taxon
                        ICdmFormElement formElement) {
                super(formFactory, formElement);
        }
-       
+
        /** {@inheritDoc} */
        @Override
        protected void createControls(ICdmFormElement formElement,
-                       TaxonDescription entity, int style) {
+               TaxonDescription entity, int style) {
                label = formFactory.createLabel(formElement, "Generating Natural Language Description ...");
-               
+
                if(entity.hasStructuredData()){
                        FetchNaturalLanguageDescriptionJob job = new FetchNaturalLanguageDescriptionJob("Retrieving Natural Language Description", entity);
                        job.schedule();
@@ -69,7 +69,7 @@ public class NaturalLanguageDetailElement extends AbstractCdmDetailElement<Taxon
                        label.setText("Taxon Description does not contain structured data.");
                }
        }
-       
+
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java.lang.Object)
         */
@@ -78,28 +78,28 @@ public class NaturalLanguageDetailElement extends AbstractCdmDetailElement<Taxon
        public void handleEvent(Object eventSource) {
                // nothing gets edited, nothing gets updated
        }
-       
+
        private class FetchNaturalLanguageDescriptionJob extends Job {
 
                private TaxonDescription entity;
                private NaturalLanguageGenerator generator = new NaturalLanguageGenerator();
-               private FeatureTree featureTree = PreferencesUtil.getDefaultFeatureTreeForStructuredDescription();
+               private TermTree featureTree = PreferencesUtil.getDefaultFeatureTreeForStructuredDescription();
                private Display display = Display.getCurrent();
-               
+
                public FetchNaturalLanguageDescriptionJob(String jobName, TaxonDescription entity){
                        super(jobName);
                        this.entity = entity;
                }
-               
+
                @Override
                protected IStatus run(IProgressMonitor monitor) {
                        String text = "";
-                       
+
                        if(featureTree != null){
                                CdmStore.createConversation();
                                try{
                                        List<TextData> naturalLanguageDescription = generator.generateNaturalLanguageDescription(featureTree, entity, CdmStore.getDefaultLanguage());
-                               
+
                                        for(TextData element : naturalLanguageDescription){
                                                text += element.getText(CdmStore.getDefaultLanguage()) + " ";
                                        }
@@ -110,21 +110,23 @@ public class NaturalLanguageDetailElement extends AbstractCdmDetailElement<Taxon
                        else{
                                text = "Could not generate natural language description, because no Feature Tree was set.";
                        }
-                       
+
                        final String aggregatedText = text;
-                       
+
                        display.asyncExec(new Runnable(){
 
                                @Override
                                public void run() {
-                                       label.setText(aggregatedText);
-                                       StoreUtil.reflowDetailsViewer();
+                                   if(!label.isDisposed()){
+                                       label.setText(aggregatedText);
+                                       AbstractUtility.reflowDetailsViewer(formFactory.getContext().get(EPartService.class));
+                                   }
                                }
-                               
+
                        });
-                       
+
                        return Status.OK_STATUS;
                }
-               
+
        }
 }