X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.modeling.ui%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fui%2Factions%2FCompilePGraphsAction.java;h=eda0228f9049d08ab1fba7e8ea0e5983d603de48;hp=783244a6176a1c4c3be4ee9fc0e6459c375c35b0;hb=97bda0b72e59e22e64d757b340b6bf8d10d11c66;hpb=27486a61ad5a2df27c62edaff098926363a025b1 diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/CompilePGraphsAction.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/CompilePGraphsAction.java index 783244a61..eda0228f9 100644 --- a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/CompilePGraphsAction.java +++ b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/CompilePGraphsAction.java @@ -2,6 +2,10 @@ package org.simantics.modeling.ui.actions; import java.io.IOException; +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.dialogs.MessageDialog; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.layout.GridLayoutFactory; @@ -16,6 +20,7 @@ import org.simantics.db.layer0.adapter.ActionFactory; import org.simantics.graph.compiler.CompilationResult; import org.simantics.ltk.Problem; import org.simantics.modeling.CompilePGraphs; +import org.simantics.modeling.ui.Activator; import org.simantics.utils.ui.ExceptionUtils; /** @@ -28,11 +33,21 @@ public class CompilePGraphsAction implements ActionFactory { if (!(target instanceof Resource)) return null; return () -> { - try { - CompilePGraphs.compilePGraphs((Resource) target, new CompileUserAgent()); - } catch (IOException | DatabaseException e) { - ExceptionUtils.logAndShowError(e); - } + Job job = new Job("Compile PGraphs") { + @Override + protected IStatus run(IProgressMonitor monitor) { + try { + CompilePGraphs.compilePGraphs((Resource) target, new CompileUserAgent(), monitor); + return Status.OK_STATUS; + } catch (IOException | DatabaseException e) { + ExceptionUtils.logAndShowError(e); + return new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage()); + } finally { + monitor.done(); + } + } + }; + job.schedule(); }; }