package org.jmlspecs.openjml.eclipse;
import org.eclipse.ui.console.ConsolePlugin;
import org.eclipse.ui.console.IConsole;
import org.eclipse.ui.console.IConsoleFactory;
import org.eclipse.ui.console.IConsoleManager;
import org.eclipse.ui.console.MessageConsole;
public class ConsoleFactory implements IConsoleFactory {
/** The name to use to identify the JML Console */
public final static /*@ non_null */ String consoleName = Messages.OpenJMLUI_Activator_JmlConsoleTitle;
/** The Factory method invoked by Eclipse when asked to create a new console */
@Override
public void openConsole() {
/*@ non_null */ IConsoleManager consoleManager = ConsolePlugin.getDefault().getConsoleManager();
/*@ non_null */ MessageConsole console = getJMLConsole(true);
}
/** Returns the JML Console, creating it if necessary; 'show's it if the argument is true. */
public static /*@ non_null */ MessageConsole getJMLConsole(boolean show) {
MessageConsole console = null;
IConsoleManager consoleManager = ConsolePlugin.getDefault().getConsoleManager();
IConsole[] existing = consoleManager.getConsoles();
for (int i=0; i<existing.length; ++i) {
if (existing[i].getName().equals(consoleName)) {
console = (MessageConsole)existing[i];
break;
}
}
if (console == null) {
console = new MessageConsole(consoleName,null);
consoleManager.addConsoles(new IConsole[]{console});
}
if (show) consoleManager.showConsoleView( console );
return console;
}
}