]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/DiagramViewerLoadJob.java
Fix stupid NPE from DiagramViewerLoadJob
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / diagramEditor / DiagramViewerLoadJob.java
index 85f0dbbe7b432f35548a38488fa30491407036a9..dc9d9d1bef72f88c590167b14acc666edf33d19b 100644 (file)
@@ -24,24 +24,28 @@ import org.simantics.g2d.diagram.IDiagram;
 import org.simantics.modeling.ui.Activator;
 import org.simantics.utils.DataContainer;
 import org.simantics.utils.threads.ThreadUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class DiagramViewerLoadJob extends DatabaseJob {
 
+    private static final Logger LOGGER = LoggerFactory.getLogger(DiagramViewerLoadJob.class);
+
     private static final boolean PROFILE = false;
     private DiagramViewer        viewer;
 
     public DiagramViewerLoadJob(DiagramViewer viewer) {
-        super("Load Diagram");
+        super(Messages.DiagramViewerLoadJob_LoadDiagram);
         setUser(true);
         this.viewer = viewer;
     }
 
     @Override
     protected IStatus run(final IProgressMonitor monitor) {
-        final SubMonitor mon = SubMonitor.convert(monitor, "Loading Diagram", 200);
+        final SubMonitor mon = SubMonitor.convert(monitor, Messages.DiagramViewerLoadJob_MonitorLoadingDiagram, 200);
 
         try {
-            Object task = BEGIN("DV.loadDiagram");
+            Object task = BEGIN("DV.loadDiagram"); //$NON-NLS-1$
             final IDiagram diagram = viewer.loadDiagram(mon.newChild(100), viewer.diagramResource);
             if (diagram == null)
                 return Status.CANCEL_STATUS;
@@ -49,7 +53,7 @@ public class DiagramViewerLoadJob extends DatabaseJob {
 
             // Start an activation for the input resource.
             // This will activate mapping if necessary.
-            task = BEGIN("DV.performActivation");
+            task = BEGIN("DV.performActivation"); //$NON-NLS-1$
             viewer.performActivation(mon.newChild(50));
             END(task);
 
@@ -58,16 +62,16 @@ public class DiagramViewerLoadJob extends DatabaseJob {
                 @Override
                 public void run() {
                     setThread(viewer.canvasContext.getThreadAccess().getThread());
-                    mon.setTaskName("Finalize Diagram Loading");
+                    mon.setTaskName(Messages.DiagramViewerLoadJob_MonitorFinalizeDiagramLoading);
 
                     try {
-                        Object task = BEGIN("DV.beforeSetDiagram");
+                        Object task = BEGIN("DV.beforeSetDiagram"); //$NON-NLS-1$
                         viewer.beforeSetDiagram(diagram);
                         mon.worked(10);
                         END(task);
 
-                        task = BEGIN("DV.setDiagramHint");
-                        mon.subTask("Set Diagram");
+                        task = BEGIN("DV.setDiagramHint"); //$NON-NLS-1$
+                        mon.subTask(Messages.DiagramViewerLoadJob_SetDiagram);
                         DataContainer<IDiagram> diagramContainer = viewer.sourceDiagramContainer;
                         if (diagramContainer != null)
                             diagramContainer.set( diagram );
@@ -79,24 +83,24 @@ public class DiagramViewerLoadJob extends DatabaseJob {
                        viewer.selectionProvider.fireSelection(Collections.emptyList());
                         
                         // Zoom to fit if no previous view transform is available
-                        task = BEGIN("DV.scheduleZoomToFit");
+                        task = BEGIN("DV.scheduleZoomToFit"); //$NON-NLS-1$
                         viewer.scheduleZoomToFit(diagram);
                         mon.worked(10);
                         END(task);
 
-                        task = BEGIN("DV.onCreated");
-                        mon.subTask("");
+                        task = BEGIN("DV.onCreated"); //$NON-NLS-1$
+                        mon.subTask(""); //$NON-NLS-1$
                         viewer.onCreated();
                         mon.worked(10);
                         END(task);
 
-                        task = BEGIN("DV.applyEditorState");
-                        mon.subTask("Apply editor state");
+                        task = BEGIN("DV.applyEditorState"); //$NON-NLS-1$
+                        mon.subTask(Messages.DiagramViewerLoadJob_ApplyEditorState);
                         viewer.applyEditorState(viewer.editorState, viewer.canvasContext);
                         mon.worked(10);
                         END(task);
 
-                        task = BEGIN("DV.activateUiContexts");
+                        task = BEGIN("DV.activateUiContexts"); //$NON-NLS-1$
                         viewer.contextUtil.inContextThread(new Runnable() {
                             @Override
                             public void run() {
@@ -107,6 +111,7 @@ public class DiagramViewerLoadJob extends DatabaseJob {
                         });
                         END(task);
                     } catch (Throwable t) {
+                        LOGGER.error("Failed to complete loading of diagram {} in the canvas thread", viewer.diagramResource, t);
                         viewer = null;
                     }
                 }
@@ -116,11 +121,11 @@ public class DiagramViewerLoadJob extends DatabaseJob {
         } catch (CancelTransactionException e) {
             monitor.done();
             viewer = null;
-            return new Status(IStatus.CANCEL, Activator.PLUGIN_ID, "Diagram loading was cancelled.", e);
+            return new Status(IStatus.CANCEL, Activator.PLUGIN_ID, Messages.DiagramViewerLoadJob_ActivatorDiagramLoadingCancelled, e);
         } catch (Throwable t) {
             monitor.done();
             viewer = null;
-            return new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Diagram loading failed, see exception for details.", t);
+            return new Status(IStatus.ERROR, Activator.PLUGIN_ID, Messages.DiagramViewerLoadJob_ActivatorDiagramLoadingFailed, t);
         }
     }