]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/CompilePGraphsAction.java
Externalize strings
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / actions / CompilePGraphsAction.java
index 783244a6176a1c4c3be4ee9fc0e6459c375c35b0..651f4f66b21128892a8bd0b8d595996db0f10bf1 100644 (file)
@@ -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;
@@ -14,8 +18,9 @@ import org.simantics.db.Resource;
 import org.simantics.db.exception.DatabaseException;
 import org.simantics.db.layer0.adapter.ActionFactory;
 import org.simantics.graph.compiler.CompilationResult;
-import org.simantics.ltk.Problem;
+import org.simantics.graph.compiler.internal.ltk.Problem;
 import org.simantics.modeling.CompilePGraphs;
+import org.simantics.modeling.ui.Activator;
 import org.simantics.utils.ui.ExceptionUtils;
 
 /**
@@ -28,43 +33,62 @@ 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(Messages.CompilePGraphsAction_CompilePGraphs) {
+                @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();
         };
     }
 
     public static class CompileUserAgent implements CompilePGraphs.UserAgent {
+       
         @Override
         public void reportProblems(CompilationResult result) {
-            class ErrorMessageDialog extends MessageDialog {
-                public ErrorMessageDialog(Shell shell) {
-                    super(shell, 
-                            "Unsatisfied dependencies", null, 
-                            "The following dependencies were missing. Please import the dependencies and try again.", 
-                            MessageDialog.ERROR, new String[] { "Continue" }, 0);
-                }
+               Runnable runnable = () -> {
+                       class ErrorMessageDialog extends MessageDialog {
+                               public ErrorMessageDialog(Shell shell) {
+                                       super(shell, 
+                                                       Messages.CompilePGraphsAction_ProblemsinOntologyDefinitionFile, null, 
+                                                       Messages.CompilePGraphsAction_FollowingIssuesFound, 
+                                                       MessageDialog.ERROR, new String[] { Messages.CompilePGraphsAction_Continue }, 0);
+                               }
 
-                @Override
-                protected Control createCustomArea(Composite composite) {
-                    GridLayoutFactory.fillDefaults().applyTo(composite);
+                               @Override
+                               protected Control createCustomArea(Composite composite) {
+                                       GridLayoutFactory.fillDefaults().applyTo(composite);
 
-                    org.eclipse.swt.widgets.List list = new org.eclipse.swt.widgets.List(composite, SWT.BORDER | SWT.READ_ONLY);
-                    GridDataFactory.fillDefaults().grab(true, true).applyTo(list);
-                    for (Problem problem : result.getErrors())
-                        list.add(problem.getLocation() + ": " + problem.getDescription() + "\n");
-                    for (Problem problem : result.getWarnings())
-                        list.add(problem.getLocation() + ": " + problem.getDescription() + "\n");
+                                       org.eclipse.swt.widgets.List list = new org.eclipse.swt.widgets.List(composite, SWT.BORDER | SWT.READ_ONLY);
+                                       GridDataFactory.fillDefaults().grab(true, true).applyTo(list);
+                                       for (Problem problem : result.getErrors())
+                                               list.add(problem.getLocation() + ": " + problem.getDescription() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
+                                       for (Problem problem : result.getWarnings())
+                                               list.add(problem.getLocation() + ": " + problem.getDescription() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$
 
-                    return composite;
-                }
-            }
+                                       return composite;
+                               }
+                       }
 
-            ErrorMessageDialog md = new ErrorMessageDialog(Display.getCurrent().getActiveShell());
-            md.open();
+                       ErrorMessageDialog md = new ErrorMessageDialog(Display.getCurrent().getActiveShell());
+                       md.open();
+               };              
+               
+               Display display = Display.getCurrent();
+               if (display == null)
+                       display = Display.getDefault();
+               display.asyncExec(runnable);
         }
+
     }
 
 }