]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor2/OpenSCLDefinition.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.ui / src / org / simantics / scl / ui / editor2 / OpenSCLDefinition.java
diff --git a/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor2/OpenSCLDefinition.java b/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor2/OpenSCLDefinition.java
new file mode 100644 (file)
index 0000000..7731bf2
--- /dev/null
@@ -0,0 +1,48 @@
+package org.simantics.scl.ui.editor2;\r
+\r
+import org.eclipse.core.commands.AbstractHandler;\r
+import org.eclipse.core.commands.ExecutionEvent;\r
+import org.eclipse.core.commands.ExecutionException;\r
+import org.eclipse.ui.IWorkbenchPage;\r
+import org.eclipse.ui.PartInitException;\r
+import org.eclipse.ui.PlatformUI;\r
+import org.simantics.scl.compiler.elaboration.modules.SCLValue;\r
+import org.simantics.scl.compiler.errors.Locations;\r
+import org.simantics.scl.ui.browser.SCLDefinitionSelectionDialog;\r
+\r
+public class OpenSCLDefinition extends AbstractHandler {\r
+\r
+    @Override\r
+    public Object execute(ExecutionEvent event) throws ExecutionException {\r
+        SCLDefinitionSelectionDialog dialog = new SCLDefinitionSelectionDialog(\r
+                PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());\r
+        if(dialog.open() == SCLDefinitionSelectionDialog.OK) {\r
+            SCLValue value = (SCLValue)dialog.getFirstResult();\r
+            if(value != null)\r
+                openDefinition(value);\r
+        }\r
+        return null;\r
+    }\r
+    \r
+    public static void openDefinition(SCLValue value) {\r
+        openDefinition(value.getName().module, value.definitionLocation);\r
+    }\r
+    \r
+    public static void openDefinition(String moduleName, long location) {\r
+        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();\r
+        if(page == null)\r
+            return;\r
+        SCLModuleEditorInput input = new StandardSCLModuleEditorInput(moduleName);\r
+        try {\r
+            SCLModuleEditor2 editor = (SCLModuleEditor2)page.openEditor(input, "org.simantics.scl.ui.editor2");\r
+            if(location != Locations.NO_LOCATION) {\r
+                int begin = Locations.beginOf(location);\r
+                int end = Locations.endOf(location);\r
+                editor.selectAndReveal(begin, end-begin);\r
+            }\r
+        } catch (PartInitException e) {\r
+            e.printStackTrace();\r
+        }\r
+    }\r
+\r
+}\r