-// $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.
*/
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.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.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import eu.etaxonomy.taxeditor.ui.element.LabelElement;
* @version 1.0
*/
public class NaturalLanguageDetailElement extends AbstractCdmDetailElement<TaxonDescription> {
-
+
private static final Logger logger = Logger
.getLogger(NaturalLanguageDetailElement.class);
ICdmFormElement formElement) {
super(formFactory, formElement);
}
-
+
/** {@inheritDoc} */
@Override
protected void createControls(ICdmFormElement formElement,
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();
label.setText("Taxon Description does not contain structured data.");
}
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java.lang.Object)
*/
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 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()) + " ";
}
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;
}
-
+
}
}