/** * Copyright (c) 2009-2011, The HATS Consortium. All rights reserved. * This file is licensed under the terms of the Modified BSD License. */ package org.absmodels.abs.plugin.console; import java.io.IOException; import java.io.PrintStream; import org.absmodels.abs.plugin.console.ConsoleManager.MessageType; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.text.IDocument; import org.eclipse.swt.SWTException; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.console.IOConsole; import org.eclipse.ui.console.IOConsoleOutputStream; import org.eclipse.ui.console.MessageConsole; import org.eclipse.ui.console.MessageConsoleStream; public class MsgConsole extends IOConsole { /** * Creates a new Message Console with the given name and an (optional) * imageDescriptor that is used as the MessageConsole's icon * * @param name * The name of the MessageConsole * @param imageDescriptor * Describes an optional icon for the MessageConsole */ public MsgConsole(String name, ImageDescriptor imageDescriptor) { super(name, imageDescriptor); } public static Color getColor (MessageType type){ RGB color; switch (type){ case MESSAGE_INFO: color = new RGB(0,0,0); break; case MESSAGE_WARNING: color = new RGB(171,171,0); break; case MESSAGE_ERROR: color = new RGB(255,0,0); break; default: color = new RGB(0,0,0); } return new Color(Display.getDefault(),color); } /** * Clears the console. Does nothing if the consoles IDocument could not be * found. * * @throws SWTException * if the default display is already disposed * @see Display#getDefault() */ public void clear(){ final IDocument document = this.getDocument(); if (document != null) { Display.getDefault().asyncExec(new Runnable() { @Override public void run() { document.set(""); } }); } } private IOConsoleOutputStream getNewMessageConsoleStream(final MessageType type){ final IOConsoleOutputStream newMessageStream = this.newOutputStream(); newMessageStream.setActivateOnWrite(true); Display.getDefault().asyncExec(new Runnable() { @Override public void run() { newMessageStream.setColor(getColor(type)); } }); return newMessageStream; } public void print(String message, MessageType type){ IOConsoleOutputStream newMessageStream = getNewMessageConsoleStream(type); try { newMessageStream.write(message); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void println(String message, MessageType type){ IOConsoleOutputStream newMessageStream = getNewMessageConsoleStream(type); try { newMessageStream.write(message + "\n"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public IOConsoleOutputStream getOutputStream(MessageType type){ return getNewMessageConsoleStream(type); } public PrintStream getPrintStream(MessageType type){ return new PrintStream(getOutputStream(type)); } }