package org.eclipse.util; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.console.ConsolePlugin; import org.eclipse.ui.console.IConsole; import org.eclipse.ui.console.IConsoleConstants; import org.eclipse.ui.console.IConsoleManager; import org.eclipse.ui.console.IConsoleView; public class ConsoleUtils { private ConsoleUtils() { } /** * Returns the console with the specified name. If it does not exist, it will * be created using the given factory. */ @SuppressWarnings("unchecked") public static <T extends IConsole> T getConsole(String name, ConsoleFactory<T> factory) { // Find the console IConsoleManager consoleManager = ConsolePlugin.getDefault().getConsoleManager(); for (IConsole console : consoleManager.getConsoles()) { if (console.getName().equals(name)) { return (T)console; } } // If not found, create it T console = factory.create(name); consoleManager.addConsoles(new IConsole[] { console }); return console; } /** * Displays the given console in the Console view. */ public static void showConsole(final IConsole console) { final IWorkbenchPage page = UiUtils.getWorkbenchPage(); Display.getDefault().asyncExec(new Runnable() { @Override public void run() { IConsoleView consoleView = (IConsoleView)page.findView(IConsoleConstants.ID_CONSOLE_VIEW); if (consoleView != null) { consoleView.display(console); } } }); } }