X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=eclipse%2Fplugins%2Forg.argeo.slc.ui.launch%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fui%2Flaunch%2Fosgi%2FSlcLaunchShortcut.java;h=a2e1cff3a58f4df4449fff23ffe54fb2d984ca13;hb=152502b083a8fba2a8d78046d0b0d2c6947c29e1;hp=4b596300637e36a9245d6bb01caaa7f3ffc5a624;hpb=f55807e0f3035d53ac2bcfe404a549a88bc199dc;p=gpl%2Fargeo-slc.git diff --git a/eclipse/plugins/org.argeo.slc.ui.launch/src/main/java/org/argeo/slc/ui/launch/osgi/SlcLaunchShortcut.java b/eclipse/plugins/org.argeo.slc.ui.launch/src/main/java/org/argeo/slc/ui/launch/osgi/SlcLaunchShortcut.java index 4b5963006..a2e1cff3a 100644 --- a/eclipse/plugins/org.argeo.slc.ui.launch/src/main/java/org/argeo/slc/ui/launch/osgi/SlcLaunchShortcut.java +++ b/eclipse/plugins/org.argeo.slc.ui.launch/src/main/java/org/argeo/slc/ui/launch/osgi/SlcLaunchShortcut.java @@ -7,12 +7,16 @@ import java.util.List; import java.util.Map; import java.util.StringTokenizer; -import org.argeo.slc.ui.launch.SlcUiLaunchPlugin; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.ILaunchConfigurationType; import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; +import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants; +import org.eclipse.jdt.launching.IVMInstall; +import org.eclipse.jdt.launching.IVMInstall2; +import org.eclipse.jdt.launching.IVMInstallType; +import org.eclipse.jdt.launching.JavaRuntime; import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; @@ -21,9 +25,13 @@ import org.eclipse.pde.core.plugin.IPluginModelBase; import org.eclipse.pde.core.plugin.PluginRegistry; import org.eclipse.pde.ui.launcher.IPDELauncherConstants; import org.eclipse.pde.ui.launcher.OSGiLaunchShortcut; +import org.eclipse.swt.widgets.DirectoryDialog; +import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class SlcLaunchShortcut extends OSGiLaunchShortcut { + public final static String VMS_PROPERTY_PREFIX = "slc.launch.vm"; + private Boolean debug = false; private String springOsgiExtenderId = "org.springframework.osgi.extender"; @@ -82,16 +90,102 @@ public class SlcLaunchShortcut extends OSGiLaunchShortcut { // Update other default information configuration.setAttribute( IPDELauncherConstants.DEFAULT_AUTO_START, false); + configuration.setAttribute(IPDELauncherConstants.CONFIG_CLEAR_AREA, + true); + String defaultVmArgs = configuration.getAttribute( + IJavaLaunchConfigurationConstants.ATTR_VM_ARGUMENTS, ""); + StringBuffer vmArgs = new StringBuffer(defaultVmArgs); + vmArgs.append(" -Xmx256m"); + + // Add locations of JVMs + addVmSysProperty(vmArgs, "default", JavaRuntime + .getDefaultVMInstall()); + IVMInstallType[] vmTypes = JavaRuntime.getVMInstallTypes(); + for (IVMInstallType vmType : vmTypes) { + // System.out.println("vmType: id=" + vmType.getId() + ", name=" + // + vmType.getName() + ", toString=" + vmType); + for (IVMInstall vmInstall : vmType.getVMInstalls()) { + // printVm("", vmInstall); + // properties based on name + addVmSysProperty(vmArgs, vmInstall.getName(), vmInstall); + if (vmInstall instanceof IVMInstall2) { + // properties based on version + IVMInstall2 vmInstall2 = (IVMInstall2) vmInstall; + String version = vmInstall2.getJavaVersion(); + addVmSysProperty(vmArgs, version, vmInstall); + + List tokens = new ArrayList(); + StringTokenizer st = new StringTokenizer(version, "."); + while (st.hasMoreTokens()) + tokens.add(st.nextToken()); + if (tokens.size() >= 2) + addVmSysProperty(vmArgs, tokens.get(0) + "." + + tokens.get(1), vmInstall); + } + } + } + configuration.setAttribute( + IJavaLaunchConfigurationConstants.ATTR_VM_ARGUMENTS, vmArgs + .toString()); + + // Choose working directory + Shell shell = Display.getCurrent().getActiveShell(); + DirectoryDialog dirDialog = new DirectoryDialog(shell); + dirDialog.setText("Working Directory"); + dirDialog.setMessage("Choose the working directory"); + String dir = dirDialog.open(); + if (dir != null) + configuration + .setAttribute( + IJavaLaunchConfigurationConstants.ATTR_WORKING_DIRECTORY, + dir); } catch (CoreException e) { - Shell shell = SlcUiLaunchPlugin.getDefault().getWorkbench() - .getActiveWorkbenchWindow().getShell(); + Shell shell = Display.getCurrent().getActiveShell(); ErrorDialog.openError(shell, "Error", "Cannot execute SLC launch shortcut", e.getStatus()); } } + protected void addVmSysProperty(StringBuffer vmArgs, String suffix, + IVMInstall vmInstall) { + addSysProperty(vmArgs, VMS_PROPERTY_PREFIX + "." + suffix, vmInstall + .getInstallLocation().getPath()); + } + + protected void addSysProperty(StringBuffer vmArgs, String key, String value) { + String str = "-D" + key + "=" + value; + if (str.contains(" ")) + str = "\"" + str + "\""; + vmArgs.append(" " + str); + } + + protected void printVm(String prefix, IVMInstall vmInstall) { + System.out.println(prefix + " vmInstall: id=" + vmInstall.getId() + + ", name=" + vmInstall.getName() + ", installLocation=" + + vmInstall.getInstallLocation() + ", toString=" + vmInstall); + if (vmInstall instanceof IVMInstall2) { + IVMInstall2 vmInstall2 = (IVMInstall2) vmInstall; + System.out.println(" vmInstall: javaVersion=" + + vmInstall2.getJavaVersion()); + } + // printVm("Default", JavaRuntime.getDefaultVMInstall()); + // IExecutionEnvironment[] execEnvs = JavaRuntime + // .getExecutionEnvironmentsManager() + // .getExecutionEnvironments(); + // for (IExecutionEnvironment execEnv : execEnvs) { + // System.out.println("execEnv: id=" + execEnv.getId() + ", desc=" + // + execEnv.getDescription()); + // if (execEnv.getId().startsWith("J2SE") + // || execEnv.getId().startsWith("Java")) { + // IVMInstall vmInstall = execEnv.getDefaultVM(); + // printVm("", vmInstall); + // } + // } + + } + protected String convertBundleList(List bundlesToStart, String original) { StringBuffer bufBundles = new StringBuffer(1024);