Added a test launch config
[Mograsim.git] / plugins / net.mograsim.plugin.core / src / net / mograsim / plugin / launch / MachineLaunchConfigType.java
1 package net.mograsim.plugin.launch;
2
3 import java.io.IOException;
4
5 import org.eclipse.core.resources.IResourceChangeEvent;
6 import org.eclipse.core.resources.IResourceChangeListener;
7 import org.eclipse.core.resources.ResourcesPlugin;
8 import org.eclipse.core.runtime.CoreException;
9 import org.eclipse.core.runtime.IProgressMonitor;
10 import org.eclipse.debug.core.DebugPlugin;
11 import org.eclipse.debug.core.ILaunch;
12 import org.eclipse.debug.core.ILaunchConfiguration;
13 import org.eclipse.debug.core.model.LaunchConfigurationDelegate;
14
15 import net.mograsim.plugin.MograsimActivator;
16
17 public class MachineLaunchConfigType extends LaunchConfigurationDelegate
18 {
19         public static final String PROJECT_ATTR = MograsimActivator.PLUGIN_ID + "project";
20
21         private final IResourceChangeListener resChangedListener;
22
23         public MachineLaunchConfigType()
24         {
25                 this.resChangedListener = this::resourceChanged;
26         }
27
28         @Override
29         public void launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor) throws CoreException
30         {
31                 ResourcesPlugin.getWorkspace().addResourceChangeListener(resChangedListener,
32                                 IResourceChangeEvent.POST_BUILD | IResourceChangeEvent.POST_CHANGE | IResourceChangeEvent.PRE_BUILD
33                                                 | IResourceChangeEvent.PRE_CLOSE | IResourceChangeEvent.PRE_DELETE | IResourceChangeEvent.PRE_REFRESH);
34                 System.out.println("launch");
35                 // TODO start a machine
36                 ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "\"echo Press Enter... &&pause>NUL && echo finished\"");
37                 try
38                 {
39                         launch.addProcess(DebugPlugin.newProcess(launch, pb.start(), ""));
40                 }
41                 catch (IOException e)
42                 {
43                         e.printStackTrace();
44                 }
45         }
46
47         private void resourceChanged(IResourceChangeEvent event)
48         {
49                 // TODO react to MPM changes
50                 int type = event.getType();
51                 String typeStr;
52                 switch (type)
53                 {
54                 case IResourceChangeEvent.POST_BUILD:
55                         typeStr = "POST_BUILD";
56                         break;
57                 case IResourceChangeEvent.POST_CHANGE:
58                         typeStr = "POST_CHANGE";
59                         break;
60                 case IResourceChangeEvent.PRE_BUILD:
61                         typeStr = "PRE_BUILD";
62                         break;
63                 case IResourceChangeEvent.PRE_CLOSE:
64                         typeStr = "PRE_CLOSE";
65                         break;
66                 case IResourceChangeEvent.PRE_DELETE:
67                         typeStr = "PRE_DELETE";
68                         break;
69                 case IResourceChangeEvent.PRE_REFRESH:
70                         typeStr = "PRE_REFRESH";
71                         break;
72                 default:
73                         typeStr = "<unknown: " + type + ">";
74                 }
75                 System.out.println(typeStr + ": " + event);
76         }
77 }