]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/actions/e4/ImportSVGPNG.java
Externalize strings
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / actions / e4 / ImportSVGPNG.java
index 931bfdf3d60d073c0b63c271dbda2c163f060c41..e21e67455639fd2ff3b0e23f2d602edae7f23074 100644 (file)
@@ -28,6 +28,7 @@ import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor;
 import org.eclipse.ui.part.MultiPageEditorPart;
+import org.simantics.Simantics;
 import org.simantics.db.ReadGraph;
 import org.simantics.db.Resource;
 import org.simantics.db.WriteGraph;
@@ -36,13 +37,17 @@ import org.simantics.db.common.request.IndexRoot;
 import org.simantics.db.common.request.WriteRequest;
 import org.simantics.db.exception.DatabaseException;
 import org.simantics.db.request.Read;
+import org.simantics.diagram.synchronization.IModifiableSynchronizationContext;
+import org.simantics.diagram.synchronization.SynchronizationHints;
+import org.simantics.diagram.synchronization.graph.GraphSynchronizationHints;
+import org.simantics.diagram.synchronization.graph.layer.GraphLayerManager;
 import org.simantics.g2d.canvas.ICanvasContext;
+import org.simantics.g2d.diagram.IDiagram;
 import org.simantics.g2d.participant.MouseUtil;
 import org.simantics.g2d.participant.MouseUtil.MouseInfo;
 import org.simantics.modeling.ModelingResources;
 import org.simantics.scl.commands.Commands;
 import org.simantics.structural.stubs.StructuralResource2;
-import org.simantics.ui.SimanticsUI;
 import org.simantics.ui.workbench.IResourceEditorInput;
 import org.simantics.ui.workbench.ResourceEditorInput;
 import org.simantics.utils.FileUtils;
@@ -73,7 +78,7 @@ public class ImportSVGPNG {
             final ResourceArray ra = in.getResourceArray();
             ResourceArray symbolEditorInput;
             try {
-                symbolEditorInput = SimanticsUI.getSession().syncRequest(new Read<ResourceArray>() {
+                symbolEditorInput = Simantics.getSession().syncRequest(new Read<ResourceArray>() {
                     @Override
                     public ResourceArray perform(ReadGraph graph) throws DatabaseException {
                         StructuralResource2 sr = StructuralResource2.getInstance(graph);
@@ -85,9 +90,9 @@ public class ImportSVGPNG {
                     }
                 });
 
-                IEditorPart[] eps = rfe.findEditors(new ResourceEditorInput("org.simantics.modeling.ui.symbolEditor", symbolEditorInput));
+                IEditorPart[] eps = rfe.findEditors(new ResourceEditorInput("org.simantics.modeling.ui.symbolEditor", symbolEditorInput)); //$NON-NLS-1$
                 if (eps.length == 0) {
-                    System.out.println("symbol editor part not found from multi page editor part: " + ap);
+                    System.out.println("symbol editor part not found from multi page editor part: " + ap); //$NON-NLS-1$
                     return;
                 }
                 viewer = eps[0];
@@ -100,28 +105,30 @@ public class ImportSVGPNG {
         }
         ICanvasContext ctx = (ICanvasContext) viewer.getAdapter(ICanvasContext.class);
         if (ctx == null) {
-            System.out.println("No canvas context");
+            System.out.println("No canvas context"); //$NON-NLS-1$
             return;
         }
         MouseInfo minfo = ctx.getSingleItem(MouseUtil.class).getMousePressedInfo(0);
         if(minfo == null) {
-            System.out.println("No mouse info");
+            System.out.println("No mouse info"); //$NON-NLS-1$
             return;
         }
         final Point2D mpos = minfo.canvasPosition;
         IResourceEditorInput input = (IResourceEditorInput)viewer.getEditorInput();
         Resource composite = input.getResource();
 
-        addSVG(mpos.getX(), mpos.getY(), composite);
+        IDiagram idiagram = viewer.getAdapter(IDiagram.class);
+
+        addSVG(mpos.getX(), mpos.getY(), composite, idiagram);
     }
 
-    public static void addSVG(final double mposX, final double mposY, final Resource composite) {
+    public static void addSVG(final double mposX, final double mposY, final Resource composite, IDiagram idiagram) {
 
         Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
 
         FileDialog dialog = new FileDialog(shell);
-        dialog.setText("Choose an image to be imported");
-        dialog.setFilterExtensions(new String[] {"*.svg", "*.png"});
+        dialog.setText(Messages.ImportSVGPNG_ChooseImportImage);
+        dialog.setFilterExtensions(new String[] {"*.svg", "*.png"}); //$NON-NLS-1$ //$NON-NLS-2$
 
         final String filename = dialog.open();
         if(filename == null)
@@ -131,13 +138,24 @@ public class ImportSVGPNG {
         try {
             final byte[] data = FileUtils.readFile(file);
 
-            SimanticsUI.getSession().asyncRequest(new WriteRequest() {
+            Simantics.getSession().asyncRequest(new WriteRequest() {
 
                 @Override
                 public void perform(WriteGraph g) throws DatabaseException {
-                    Commands.get(g, "Simantics/Diagram/createSVGElement")
+                    Object svg = Commands.get(g, "Simantics/Diagram/createSVGElementR") //$NON-NLS-1$
                             .execute(g, g.syncRequest(new IndexRoot(composite)),
                                      composite, suffix(filename), data, mposX, mposY);
+
+                    if (svg != null && svg instanceof Resource) {
+                        Resource resource = (Resource) svg;
+                        // 7. Put the element on all the currently active layers if possible.
+                        IModifiableSynchronizationContext context = idiagram.getHint(SynchronizationHints.CONTEXT);
+                        GraphLayerManager glm = context.get(GraphSynchronizationHints.GRAPH_LAYER_MANAGER);
+                        if (glm != null) {
+                            glm.removeFromAllLayers(g, resource);
+                            glm.putElementOnVisibleLayers(idiagram, g, resource);
+                        }
+                    }
                 }
 
             });