/*******************************************************************************
* Copyright (c) 2016 IBM 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.internal.junit.ui;
import org.eclipse.jdt.debug.ui.console.JavaStackTraceConsoleFactory;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IAction;
import org.eclipse.jdt.internal.junit.model.TestElement;
/**
* Action to show the stack trace of a failed test from JUnit view's failure trace in debug's Java
* stack trace console.
*/
public class ShowStackTraceInConsoleViewAction extends Action {
private FailureTrace fView;
private JavaStackTraceConsoleFactory fFactory;
public ShowStackTraceInConsoleViewAction(FailureTrace view) {
super(JUnitMessages.ShowStackTraceInConsoleViewAction_label, IAction.AS_PUSH_BUTTON);
setDescription(JUnitMessages.ShowStackTraceInConsoleViewAction_description);
setToolTipText(JUnitMessages.ShowStackTraceInConsoleViewAction_tooltip);
setHoverImageDescriptor(JUnitPlugin.getImageDescriptor("elcl16/open_console.png")); //$NON-NLS-1$
setImageDescriptor(JUnitPlugin.getImageDescriptor("elcl16/open_console.png")); //$NON-NLS-1$
fView= view;
}
@Override
public void run() {
TestElement failedTest= fView.getFailedTest();
String stackTrace= failedTest.getTrace();
if (stackTrace != null) {
if (fFactory == null) {
fFactory= new JavaStackTraceConsoleFactory();
}
fFactory.openConsole(stackTrace);
}
}
}