+++ /dev/null
-package org.argeo.slc.ui.launch;\r
-\r
-import java.io.File;\r
-import java.io.IOException;\r
-import java.util.List;\r
-import java.util.Vector;\r
-\r
-public class DefaultSlcRuntime implements SlcRuntime {\r
- private File baseDir;\r
- private String relLibDir = "lib";\r
-\r
- public DefaultSlcRuntime(String baseDirPath) {\r
- try {\r
- this.baseDir = new File(baseDirPath).getCanonicalFile();\r
- } catch (IOException e) {\r
- throw new RuntimeException("Cannot get path for " + baseDirPath, e);\r
- }\r
- }\r
-\r
- public String[] getClasspath() {\r
- List<String> classpath = new Vector<String>();\r
- File libDir = new File(baseDir.getPath() + File.separator + relLibDir);\r
- File[] files = libDir.listFiles();\r
- for (File file : files) {\r
- try {\r
- classpath.add(file.getCanonicalPath());\r
- } catch (IOException e) {\r
- throw new RuntimeException("Cannot get path for " + file, e);\r
- }\r
- }\r
- return classpath.toArray(new String[classpath.size()]);\r
- }\r
-\r
- public String getAntHome() {\r
- return baseDir.getPath();\r
- }\r
-\r
- public String getJavaLibraryPath() {\r
- return baseDir.getPath() + File.separator + "bin";\r
- }\r
- \r
- \r
-}\r
--- /dev/null
+package org.argeo.slc.ui.launch;\r
+\r
+import java.io.File;\r
+import java.io.IOException;\r
+import java.util.List;\r
+import java.util.Vector;\r
+\r
+import org.eclipse.core.runtime.CoreException;\r
+import org.eclipse.jdt.launching.IVMInstall;\r
+import org.eclipse.jdt.launching.JavaRuntime;\r
+\r
+public class DeployedSlcRuntime implements SlcRuntime {\r
+ private File baseDir;\r
+ private String relLibDir = "lib";\r
+\r
+ public DeployedSlcRuntime(String baseDirPath) {\r
+ try {\r
+ this.baseDir = new File(baseDirPath).getCanonicalFile();\r
+ } catch (IOException e) {\r
+ throw new RuntimeException("Cannot get path for " + baseDirPath, e);\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public String[] getClasspath() throws CoreException {\r
+ List<String> classpath = new Vector<String>();\r
+ File libDir = new File(baseDir.getPath() + File.separator + relLibDir);\r
+ File[] files = libDir.listFiles();\r
+ for (File file : files) {\r
+ try {\r
+ classpath.add(file.getCanonicalPath());\r
+ } catch (IOException e) {\r
+ throw new RuntimeException("Cannot get path for " + file, e);\r
+ }\r
+ }\r
+ return classpath.toArray(new String[classpath.size()]);\r
+ }\r
+\r
+ @Override\r
+ public IVMInstall getVmInstall() throws CoreException {\r
+ return JavaRuntime.getDefaultVMInstall();\r
+ }\r
+\r
+ public String getAntHome() {\r
+ return baseDir.getPath();\r
+ }\r
+\r
+ @Override\r
+ public String getJavaLibraryPath() {\r
+ return baseDir.getPath() + File.separator + "bin";\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.ui.launch;
+
+import org.argeo.slc.ui.launch.preferences.SlcPreferencePage;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.launching.IVMInstall;
+import org.eclipse.jdt.launching.JavaRuntime;
+
+public class EmbeddedSlcRuntime implements SlcRuntime {
+ private final IJavaProject project;
+
+ public EmbeddedSlcRuntime(IJavaProject project) {
+ this.project = project;
+ }
+
+ @Override
+ public String[] getClasspath() throws CoreException {
+ return JavaRuntime.computeDefaultRuntimeClassPath(project);
+ }
+
+ @Override
+ public String getJavaLibraryPath() {
+ String javaLibPath = SlcUiLaunchPlugin.getDefault()
+ .getPreferenceStore().getString(
+ SlcPreferencePage.PREF_SLC_RUNTIME_LOCATION);
+ if (javaLibPath == null || javaLibPath.equals(""))
+ return null;
+ else
+ return javaLibPath;
+ }
+
+ @Override
+ public IVMInstall getVmInstall() throws CoreException {
+ return JavaRuntime.getVMInstall(project);
+ }
+
+}
import java.util.List;\r
import java.util.Vector;\r
\r
+import org.argeo.slc.ui.launch.DeployedSlcRuntime;\r
+import org.argeo.slc.ui.launch.EmbeddedSlcRuntime;\r
+import org.argeo.slc.ui.launch.SlcRuntime;\r
+import org.argeo.slc.ui.launch.SlcUiLaunchPlugin;\r
+import org.argeo.slc.ui.launch.preferences.SlcPreferencePage;\r
import org.eclipse.core.resources.IFile;\r
import org.eclipse.core.resources.IProject;\r
import org.eclipse.core.resources.IResource;\r
import org.eclipse.debug.core.ILaunchConfiguration;\r
import org.eclipse.debug.core.ILaunchManager;\r
import org.eclipse.jdt.core.IJavaProject;\r
+import org.eclipse.jdt.core.IType;\r
+import org.eclipse.jdt.core.JavaCore;\r
+import org.eclipse.jdt.core.JavaModelException;\r
import org.eclipse.jdt.launching.AbstractJavaLaunchConfigurationDelegate;\r
-import org.eclipse.jdt.launching.IVMInstall;\r
import org.eclipse.jdt.launching.IVMRunner;\r
-import org.eclipse.jdt.launching.JavaRuntime;\r
import org.eclipse.jdt.launching.VMRunnerConfiguration;\r
import org.eclipse.jface.dialogs.ErrorDialog;\r
import org.eclipse.swt.widgets.Shell;\r
\r
-import org.argeo.slc.ui.launch.DefaultSlcRuntime;\r
-import org.argeo.slc.ui.launch.SlcRuntime;\r
-import org.argeo.slc.ui.launch.SlcUiLaunchPlugin;\r
-import org.argeo.slc.ui.launch.preferences.SlcPreferencePage;\r
-\r
public class SlcScriptLaunchDelegate extends\r
AbstractJavaLaunchConfigurationDelegate {\r
public static final String ID = "org.argeo.slc.launch.slcScriptLaunchType";\r
System.out.println("Launched " + file.getLocation().toFile());\r
\r
// Retrieve SLC Runtime\r
- String slcRuntimePath = SlcUiLaunchPlugin.getDefault()\r
- .getPreferenceStore().getString(\r
- SlcPreferencePage.PREF_SLC_RUNTIME_LOCATION);\r
- if (slcRuntimePath == null || slcRuntimePath.equals("")) {\r
- showError("SLC Runtime path is not set. Set it in Windows > Preferences > SLC");\r
- return;\r
- }\r
- SlcRuntime deployedSlc = new DefaultSlcRuntime(slcRuntimePath);\r
+ SlcRuntime deployedSlc = null;\r
\r
IProject project = file.getProject();\r
-\r
- IVMInstall vmInstall = null;\r
- String[] classPath = null;\r
-\r
- if (project instanceof IJavaProject) {\r
- JavaRuntime.getVMInstall((IJavaProject) project);\r
- classPath = JavaRuntime\r
- .computeDefaultRuntimeClassPath((IJavaProject) project);\r
+ if (project.getNature("org.eclipse.jdt.core.javanature") != null) {\r
+ IJavaProject javaProject = JavaCore.create(project);\r
+ if (checkProjectForEmbedded(javaProject)) {\r
+ deployedSlc = new EmbeddedSlcRuntime(javaProject);\r
+ }\r
}\r
\r
- if (vmInstall == null)\r
- vmInstall = JavaRuntime.getDefaultVMInstall();\r
- if (vmInstall != null) {\r
- IVMRunner vmRunner = vmInstall.getVMRunner(mode);\r
- if (vmRunner != null) {\r
- if (classPath == null) {\r
- classPath = deployedSlc.getClasspath();\r
- }\r
-\r
- if (classPath != null) {\r
- VMRunnerConfiguration vmConfig = new VMRunnerConfiguration(\r
- ANT_MAIN, classPath);\r
- vmConfig.setVMArguments(getVmArguments(deployedSlc));\r
- vmConfig.setWorkingDirectory(file.getLocation().toFile()\r
- .getParent());\r
- vmConfig.setProgramArguments(getProgramArguments(\r
- deployedSlc, file, mode));\r
- vmRunner.run(vmConfig, launch, null);\r
- }\r
+ if (deployedSlc == null) {\r
+ String slcRuntimePath = SlcUiLaunchPlugin.getDefault()\r
+ .getPreferenceStore().getString(\r
+ SlcPreferencePage.PREF_SLC_RUNTIME_LOCATION);\r
+ if (slcRuntimePath == null || slcRuntimePath.equals("")) {\r
+ showError("SLC Runtime path is not set. Set it in Windows > Preferences > SLC");\r
+ return;\r
}\r
+\r
+ deployedSlc = new DeployedSlcRuntime(slcRuntimePath);\r
}\r
\r
+ IVMRunner vmRunner = deployedSlc.getVmInstall().getVMRunner(mode);\r
+ VMRunnerConfiguration vmConfig = new VMRunnerConfiguration(ANT_MAIN,\r
+ deployedSlc.getClasspath());\r
+ vmConfig.setVMArguments(getVmArguments(deployedSlc));\r
+ vmConfig.setWorkingDirectory(file.getLocation().toFile().getParent());\r
+ vmConfig.setProgramArguments(getProgramArguments(deployedSlc, file,\r
+ mode));\r
+ vmRunner.run(vmConfig, launch, null);\r
}\r
\r
private String[] getVmArguments(SlcRuntime deployedSlc) {\r
List<String> list = new Vector<String>();\r
- list.add("-Dant.home=" + deployedSlc.getAntHome());\r
- list.add("-Djava.library.path=" + deployedSlc.getJavaLibraryPath());\r
+ // list.add("-Dant.home=" + deployedSlc.getAntHome());\r
+ if (deployedSlc.getJavaLibraryPath() != null)\r
+ list.add("-Djava.library.path=" + deployedSlc.getJavaLibraryPath());\r
return list.toArray(new String[list.size()]);\r
}\r
\r
ErrorDialog.openError(shell, "Error", "Cannot launch SLC script",\r
status);\r
}\r
+\r
+ protected boolean checkProjectForEmbedded(IJavaProject project) {\r
+ try {\r
+ IType antmainType = project.findType(ANT_MAIN);\r
+ if (antmainType == null)\r
+ return false;\r
+ else\r
+ return true;\r
+ } catch (JavaModelException e) {\r
+ e.printStackTrace();\r
+ return false;\r
+ }\r
+ }\r
}\r