/********************************************************************************************* * Copyright (c) 2014-2015 Software Behaviour Analysis Lab, Concordia University, Montreal, Canada * * All rights reserved. This program and the accompanying materials * are made available under the terms of Eclipse Public License v1.0 License which * accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Syed Shariyar Murtaza -- Initial design and implementation **********************************************************************************************/ package org.eclipse.tracecompass.totalads.ui.io; import java.io.IOException; import org.apache.log4j.Logger; import org.eclipse.tracecompass.totalads.algorithms.IAlgorithmOutObserver; import org.eclipse.ui.console.MessageConsole; import org.eclipse.ui.console.MessageConsoleStream; import org.eclipse.ui.console.ConsolePlugin; import org.eclipse.ui.console.IConsoleManager; import org.eclipse.ui.console.IConsole; /** * Class to display output to the Eclipse console * * @author <p> * Syed shariyar Murtaza justsshary@hotmail.com * </p> * */ public class ProgressConsole implements IAlgorithmOutObserver { private MessageConsoleStream fOutStream; private MessageConsole fConsole; /** * * Constructor * * @param consoleName * Name of the console * */ public ProgressConsole(String consoleName) { fConsole = findConsole(consoleName); fConsole.activate(); fOutStream = fConsole.newMessageStream(); } /** * Prints a message with a new line * * @param message * Message as a String object */ public void println(String message) { fOutStream.println(message); } /** * Prints a message * * @param message * Message as a String object */ public void print(String message) { fOutStream.print(message); } /** * Gets the console object * * @param name * Name of the console * @return */ private static MessageConsole findConsole(String name) { ConsolePlugin plugin = org.eclipse.ui.console.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 (org.eclipse.ui.console.MessageConsole) existing[i]; } } // No console found, so create a new one org.eclipse.ui.console.MessageConsole console = new org.eclipse.ui.console.MessageConsole(name, null); conMan.addConsoles(new IConsole[] { console }); return console; } /** * Closes the console streaming */ public void closeConsole() { try { fOutStream.close(); } catch (IOException ex) { Logger.getLogger(ProgressConsole.class.getName()).error(ex.getMessage(), ex); ex.printStackTrace(); } } /** * Clears the console */ public void clearConsole() { fConsole.clearConsole(); } /** * Implements a method of {@link IAlgorithmOutObserver} */ @Override public void updateOutput(String message) { print(message); } }