package org.jbehave.eclipse.console; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.console.ConsolePlugin; import org.eclipse.ui.console.IConsole; import org.eclipse.ui.console.IConsoleManager; import org.eclipse.ui.console.IConsoleView; import org.eclipse.ui.console.IOConsoleOutputStream; import org.eclipse.ui.part.IPageBookViewPage; public class JBehaveConsole extends org.eclipse.ui.console.IOConsole { private IOConsoleOutputStream outMessageStream; private IOConsoleOutputStream errMessageStream; private static final String NAME = "JBehave"; public JBehaveConsole() { super(NAME, null); outMessageStream = newOutputStream(); outMessageStream.setColor(Display.getCurrent().getSystemColor(SWT.COLOR_BLUE)); errMessageStream = newOutputStream(); errMessageStream.setColor(Display.getCurrent().getSystemColor(SWT.COLOR_RED)); } public IOConsoleOutputStream getOutMessageStream() { return outMessageStream; } @Override public IPageBookViewPage createPage(IConsoleView view) { return super.createPage(view); } public static JBehaveConsole findConsole() { ConsolePlugin plugin = ConsolePlugin.getDefault(); IConsoleManager conMan = plugin.getConsoleManager(); IConsole[] existing = conMan.getConsoles(); for (int i = 0; i < existing.length; i++) { if (NAME.equals(existing[i].getName())) return (JBehaveConsole) existing[i]; } // no console found, so create a new one JBehaveConsole myConsole = new JBehaveConsole(); conMan.addConsoles(new IConsole[] { myConsole }); return myConsole; } }