X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.plugin.core%2Fsrc%2Fnet%2Fmograsim%2Fplugin%2Flaunch%2FMachineDebugContextListener.java;fp=plugins%2Fnet.mograsim.plugin.core%2Fsrc%2Fnet%2Fmograsim%2Fplugin%2Flaunch%2FMachineDebugContextListener.java;h=837da0ae1c1fe5f2d9f7b9831c646c925376cab9;hb=2d1f3e4780616f3b638133a243fcdb7a6738baf9;hp=d8ea3993ebc32431f48eb70c11983161b1e84135;hpb=d031a0434011f1e8577de35ba1a5c0b6649beef4;p=Mograsim.git diff --git a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/launch/MachineDebugContextListener.java b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/launch/MachineDebugContextListener.java index d8ea3993..837da0ae 100644 --- a/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/launch/MachineDebugContextListener.java +++ b/plugins/net.mograsim.plugin.core/src/net/mograsim/plugin/launch/MachineDebugContextListener.java @@ -3,6 +3,7 @@ package net.mograsim.plugin.launch; import java.util.Optional; import org.eclipse.debug.core.ILaunch; +import org.eclipse.debug.core.model.IDebugElement; import org.eclipse.debug.core.model.IDebugTarget; import org.eclipse.debug.ui.contexts.DebugContextEvent; import org.eclipse.debug.ui.contexts.IDebugContextListener; @@ -27,34 +28,32 @@ public abstract class MachineDebugContextListener implements IDebugContextListen Object[] selectedElements = treeSelection.toArray(); for (Object selectedElement : selectedElements) { - MachineDebugTarget debugTarget; - if (selectedElement instanceof MachineDebugTarget) - debugTarget = (MachineDebugTarget) selectedElement; + IDebugTarget debugTarget; + if (selectedElement instanceof IDebugElement) + debugTarget = ((IDebugElement) selectedElement).getDebugTarget(); else if (selectedElement instanceof ILaunch) - { - ILaunch launch = (ILaunch) selectedElement; - IDebugTarget genericDebugTarget = launch.getDebugTarget(); - if (genericDebugTarget instanceof MachineDebugTarget) - debugTarget = (MachineDebugTarget) genericDebugTarget; - else - continue; - } else + debugTarget = ((ILaunch) selectedElement).getDebugTarget(); + else + continue; + if (!(debugTarget instanceof MachineDebugTarget)) continue; if (debugTarget.isTerminated()) continue; // we found a selected MachineDebugTarget if (this.debugTarget != debugTarget) - { - MachineDebugTarget oldTarget = this.debugTarget; - this.debugTarget = debugTarget; - machineDebugContextChanged(Optional.ofNullable(oldTarget), Optional.of(debugTarget)); - } + updateContextAndCallContextChanged((MachineDebugTarget) debugTarget); return; } - MachineDebugTarget oldTarget = debugTarget; - debugTarget = null; - machineDebugContextChanged(Optional.ofNullable(oldTarget), Optional.empty()); } + // we didn't find a selected MachineDebugTarget + updateContextAndCallContextChanged(null); + } + + private void updateContextAndCallContextChanged(MachineDebugTarget newTarget) + { + MachineDebugTarget oldTarget = this.debugTarget; + this.debugTarget = newTarget; + machineDebugContextChanged(Optional.ofNullable(oldTarget), Optional.ofNullable(newTarget)); } public abstract void machineDebugContextChanged(Optional oldTarget, Optional newTarget);