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;
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<MachineDebugTarget> oldTarget, Optional<MachineDebugTarget> newTarget);