blob: 5d24739af47570cf035d26c7842366cba9512715 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012, 2014 Tilera Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* William R. Swanson (Tilera Corporation)
* Marc Dumais (Ericsson) - Bug 451392
*******************************************************************************/
package org.eclipse.cdt.dsf.gdb.multicorevisualizer.internal.utils;
import org.eclipse.cdt.visualizer.ui.util.GUIUtils;
import org.eclipse.cdt.visualizer.ui.util.RunnableWithResult;
import org.eclipse.debug.internal.ui.viewers.model.provisional.TreeModelViewer;
import org.eclipse.debug.internal.ui.views.launch.LaunchView;
import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PlatformUI;
/** Assorted utilities for interacting with the Debug View (aka LaunchView). */
@SuppressWarnings("restriction") // allow access to internal classes
public class DebugViewUtils {
// --- static utility methods ---
/**
* Returns Debug View (a.k.a. LaunchView).
*/
public static LaunchView getDebugView() {
return (LaunchView) getViewWithID(IDebugUIConstants.ID_DEBUG_VIEW);
}
/**
* Returns tree model viewer for Debug View (a.k.a. LaunchView).
*/
public static TreeModelViewer getDebugViewer() {
LaunchView debugView = getDebugView();
TreeModelViewer viewer = (debugView == null) ? null : (TreeModelViewer) debugView.getViewer();
return viewer;
}
/** Gets workbench view (if any) with specified ID. */
public static IViewPart getViewWithID(String viewID) {
final String viewID_f = viewID;
RunnableWithResult<IViewPart> runnable = new RunnableWithResult<>() {
@Override
public IViewPart call() {
IViewPart view = null;
IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
if (activePage != null) {
view = (viewID_f == null) ? null : activePage.findView(viewID_f);
}
return view;
}
};
// run on UI thread, wait for result
GUIUtils.execAndWait(runnable);
IViewPart result = runnable.getResult();
return result;
}
/**
* Sets debug view selection.
* Specified selection is an IStructuredSelection containing a flat list
* of the model objects (that is, _not_ the tree view nodes) to be selected.
*/
public static boolean setDebugViewSelection(ISelection selection) {
TreeModelViewer viewer = DebugViewUtils.getDebugViewer();
if (viewer == null || selection == null)
return false;
return viewer.trySelection(selection, true, true);
}
/**
* Returns the debug view selection.
*/
public static ISelection getDebugViewSelection() {
TreeModelViewer viewer = DebugViewUtils.getDebugViewer();
if (viewer == null)
return null;
return viewer.getSelection();
}
}