/*******************************************************************************
* Copyright (c) 2012, 2014 Tilera Corporation 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
*
* 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<IViewPart>() {
@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();
}
}