[389222] Change Acceleo module serialization kind freeze UI.
diff --git a/plugins/org.eclipse.acceleo.ide.ui/src/org/eclipse/acceleo/internal/ide/ui/acceleouimessages.properties b/plugins/org.eclipse.acceleo.ide.ui/src/org/eclipse/acceleo/internal/ide/ui/acceleouimessages.properties
index 137dbbb..94524c1 100644
--- a/plugins/org.eclipse.acceleo.ide.ui/src/org/eclipse/acceleo/internal/ide/ui/acceleouimessages.properties
+++ b/plugins/org.eclipse.acceleo.ide.ui/src/org/eclipse/acceleo/internal/ide/ui/acceleouimessages.properties
@@ -52,6 +52,8 @@
AcceleoCompilerPage.CompilationPathHelp = "Absolute file system paths" will make the Acceleo builder compile the references to other modules (import/extends) with the \n\
absolute file system paths while "Workspace relative file paths" will make the Acceleo builder use paths relative to the workspace. \n\
Starting with Acceleo 3.3, "Workspace relative file paths" is the default behavior.
+AcceleoCompilerPage.BuildingProject = Building project {0}
+
# org.eclipse.acceleo.ide.ui.builders.runner
CreateRunnableAcceleoOperation.MissingExport = The template contains a main annotation (@main) but it isn''t accessible. the package {0} must be exported via the MANIFEST file.
diff --git a/plugins/org.eclipse.acceleo.ide.ui/src/org/eclipse/acceleo/internal/ide/ui/builders/prefs/AcceleoCompilerPage.java b/plugins/org.eclipse.acceleo.ide.ui/src/org/eclipse/acceleo/internal/ide/ui/builders/prefs/AcceleoCompilerPage.java
index fcf740b..fca7414 100644
--- a/plugins/org.eclipse.acceleo.ide.ui/src/org/eclipse/acceleo/internal/ide/ui/builders/prefs/AcceleoCompilerPage.java
+++ b/plugins/org.eclipse.acceleo.ide.ui/src/org/eclipse/acceleo/internal/ide/ui/builders/prefs/AcceleoCompilerPage.java
@@ -17,7 +17,10 @@
import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.NullProgressMonitor;
+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.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
@@ -103,7 +106,7 @@
@Override
public boolean performOk() {
if (element instanceof IProject) {
- IProject project = (IProject)element;
+ final IProject project = (IProject)element;
AcceleoBuilderSettings settings = new AcceleoBuilderSettings(project);
if (strictCompliance.getSelection()) {
settings.setCompliance(AcceleoBuilderSettings.BUILD_STRICT_MTL_COMPLIANCE);
@@ -127,11 +130,20 @@
AcceleoUIActivator.getDefault().getLog().log(e.getStatus());
}
- try {
- project.build(IncrementalProjectBuilder.FULL_BUILD, new NullProgressMonitor());
- } catch (CoreException e) {
- AcceleoUIActivator.getDefault().getLog().log(e.getStatus());
- }
+ Job job = new Job(AcceleoUIMessages.getString("AcceleoCompilerPage.BuildingProject", project //$NON-NLS-1$
+ .getName())) {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ project.build(IncrementalProjectBuilder.FULL_BUILD, monitor);
+ } catch (CoreException e) {
+ AcceleoUIActivator.log(e, true);
+ return new Status(IStatus.ERROR, AcceleoUIActivator.PLUGIN_ID, e.getMessage(), e);
+ }
+ return Status.OK_STATUS;
+ }
+ };
+ job.schedule();
}
return super.performOk();
}