1 package net.mograsim.plugin.launch;
3 import java.util.Optional;
5 import org.eclipse.debug.core.ILaunch;
6 import org.eclipse.debug.core.model.IDebugTarget;
7 import org.eclipse.debug.ui.contexts.DebugContextEvent;
8 import org.eclipse.debug.ui.contexts.IDebugContextListener;
9 import org.eclipse.jface.viewers.ISelection;
10 import org.eclipse.jface.viewers.TreeSelection;
12 public abstract class MachineDebugContextListener implements IDebugContextListener
14 private MachineDebugTarget debugTarget;
17 public void debugContextChanged(DebugContextEvent e)
19 debugContextChanged(e.getContext());
22 public void debugContextChanged(ISelection selection)
24 if (selection != null && selection instanceof TreeSelection)
26 TreeSelection treeSelection = (TreeSelection) selection;
27 Object[] selectedElements = treeSelection.toArray();
28 for (Object selectedElement : selectedElements)
30 MachineDebugTarget debugTarget;
31 if (selectedElement instanceof MachineDebugTarget)
32 debugTarget = (MachineDebugTarget) selectedElement;
33 else if (selectedElement instanceof ILaunch)
35 ILaunch launch = (ILaunch) selectedElement;
36 IDebugTarget genericDebugTarget = launch.getDebugTarget();
37 if (genericDebugTarget instanceof MachineDebugTarget)
38 debugTarget = (MachineDebugTarget) genericDebugTarget;
43 if (debugTarget.isTerminated())
45 // we found a selected MachineDebugTarget
46 if (this.debugTarget != debugTarget)
48 MachineDebugTarget oldTarget = this.debugTarget;
49 this.debugTarget = debugTarget;
50 machineDebugContextChanged(Optional.ofNullable(oldTarget), Optional.of(debugTarget));
54 MachineDebugTarget oldTarget = debugTarget;
56 machineDebugContextChanged(Optional.ofNullable(oldTarget), Optional.empty());
60 public abstract void machineDebugContextChanged(Optional<MachineDebugTarget> oldTarget, Optional<MachineDebugTarget> newTarget);