package org.revisionfilter.utils.console; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; 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.IOConsole; public class RevisionFilterConsoleFactory implements IConsoleFactory { private static IOConsole sConsole = new IOConsole("RevisionFilter Console", null, null, false); private static boolean sEnabled = false; public void openConsole() { showConsole(); } /** * @return The console instance */ public static synchronized IOConsole getConsole() { if (sConsole == null) { showConsole(); } return sConsole; } /** * Show the console */ public static synchronized void showConsole() { IConsole console = sConsole; if (console != null) { IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager(); IConsole[] existing = manager.getConsoles(); boolean exists = false; for (int i = 0; i < existing.length; ++i) { if(console == existing[i]) exists = true; } if(! exists) manager.addConsoles(new IConsole[] {console}); manager.showConsoleView(console); } } /** * Close the console */ public static synchronized void closeConsole() { IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager(); IConsole console = sConsole; if (console != null) { manager.removeConsoles(new IConsole[] {console}); } } /** * @param xiMessage Line to output */ public static synchronized void outputLine(String xiMessage) { if (sEnabled) { IOConsole lConsole = getConsole(); Writer lWriter = new OutputStreamWriter(lConsole.newOutputStream()); try { lWriter.write(xiMessage + "\n"); lWriter.flush(); lWriter.close(); } catch (IOException e) { // Throw away } } } /** * @param b True if output should be enabled */ public static synchronized void setEnabled(boolean b) { sEnabled = b; } /** * @return True if the console is enabled */ public static synchronized boolean isEnabled() { return sEnabled; } }