]> git.argeo.org Git - gpl/argeo-slc.git/blob - eclipse/plugins/org.argeo.slc.ide.ui/src/main/java/org/argeo/slc/ide/ui/launch/osgi/OsgiBootEquinoxLaunchConfiguration.java
ab2db16d2543da00053d9c76a6ad0db194e5deb3
[gpl/argeo-slc.git] / eclipse / plugins / org.argeo.slc.ide.ui / src / main / java / org / argeo / slc / ide / ui / launch / osgi / OsgiBootEquinoxLaunchConfiguration.java
1 package org.argeo.slc.ide.ui.launch.osgi;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5 import java.util.List;
6 import java.util.Map;
7 import java.util.Properties;
8
9 import org.argeo.slc.ide.ui.SlcIdeUiPlugin;
10 import org.eclipse.core.resources.IFile;
11 import org.eclipse.core.runtime.CoreException;
12 import org.eclipse.core.runtime.IProgressMonitor;
13 import org.eclipse.debug.core.ILaunch;
14 import org.eclipse.debug.core.ILaunchConfiguration;
15 import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
16 import org.eclipse.jface.dialogs.ErrorDialog;
17 import org.eclipse.pde.ui.launcher.EquinoxLaunchConfiguration;
18 import org.eclipse.swt.widgets.Display;
19
20 public class OsgiBootEquinoxLaunchConfiguration extends
21 EquinoxLaunchConfiguration {
22 public final static String ID = SlcIdeUiPlugin.ID
23 + ".OsgiBootEquinoxLauncher";
24
25 @Override
26 public void launch(ILaunchConfiguration configuration, String mode,
27 ILaunch launch, IProgressMonitor monitor) throws CoreException {
28 super.launch(configuration, mode, launch, monitor);
29
30 // TODO: add launch listener to be notified when is terminated and
31 // refresh resources
32
33 // IFile propertiesFile = (IFile) configuration.getMappedResources()[0];
34 // propertiesFile.getProject().refreshLocal(IResource.DEPTH_INFINITE,
35 // monitor);
36 }
37
38 @Override
39 protected void preLaunchCheck(ILaunchConfiguration configuration,
40 ILaunch launch, IProgressMonitor monitor) throws CoreException {
41 System.out.println("Launching... " + launch);
42 IFile propertiesFile = (IFile) configuration.getMappedResources()[0];
43
44 Properties properties = null;
45 try {
46 properties = OsgiLaunchHelper.readProperties(propertiesFile);
47 } catch (CoreException e) {
48 ErrorDialog.openError(Display.getCurrent().getActiveShell(),
49 "Error", "Cannot execute launch shortcut", e.getStatus());
50 return;
51 }
52
53 List<String> bundlesToStart = new ArrayList<String>();
54 Map<String, String> systemPropertiesToAppend = new HashMap<String, String>();
55 OsgiLaunchHelper.interpretProperties(properties, bundlesToStart,
56 systemPropertiesToAppend);
57 ILaunchConfigurationWorkingCopy wc = configuration.getWorkingCopy();
58 OsgiLaunchHelper.updateLaunchConfiguration(wc, bundlesToStart,
59 systemPropertiesToAppend, null);
60 wc.doSave();
61
62 super.preLaunchCheck(configuration, launch, monitor);
63 }
64
65 }