/******************************************************************************* * Copyright (c) 2016 Ericsson and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ package org.eclipse.cdt.dsf.gdb.internal.ui.console; import org.eclipse.cdt.debug.ui.debuggerconsole.IDebuggerConsole; import org.eclipse.cdt.dsf.gdb.internal.service.IGDBFocusSynchronizer; import org.eclipse.cdt.dsf.gdb.internal.ui.GdbUIPlugin; import org.eclipse.cdt.dsf.gdb.launching.GdbLaunch; import org.eclipse.cdt.dsf.service.DsfServicesTracker; import org.eclipse.cdt.dsf.service.DsfSession; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.ui.DebugUITools; /** * GDB specifics to IDebuggerConsole e.g. default implementations */ public interface IGDBDebuggerConsole extends IDebuggerConsole { /* * (non-Javadoc) * * @see org.eclipse.cdt.debug.ui.debuggerconsole.IDebuggerConsole#consoleSelected() */ @Override public default void consoleSelected() { DsfSession session = ((GdbLaunch)getLaunch()).getSession(); if (!session.isActive()) {return;} // only trigger the DV selection if the current selection is in // a different session IAdaptable context = DebugUITools.getDebugContext(); if (context != null) { ILaunch selectedLaunch = context.getAdapter(ILaunch.class); if (getLaunch().equals(selectedLaunch)) { return; } } session.getExecutor().execute(new Runnable() { @Override public void run() { DsfServicesTracker tracker = new DsfServicesTracker(GdbUIPlugin.getBundleContext(), session.getId()); IGDBFocusSynchronizer gdbSync = tracker.getService(IGDBFocusSynchronizer.class); tracker.dispose(); if (gdbSync != null) { gdbSync.sessionSelected(); } } }); } }