/**
* 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.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.console.ConsolePlugin;
import org.eclipse.ui.console.IConsole;
import org.eclipse.ui.console.IConsoleConstants;
import org.eclipse.ui.console.IOConsoleInputStream;
/**
* Class for handling the Console conveniently
* @author cseise
*
*/
public class ConsoleManager {
/**
* The default console singleton used by getDefault()
*/
private static MsgConsole defaultConsole = null;
/**
* Type of the Console Message (Info,Warning or Error)
*
*/
public enum MessageType{
MESSAGE_INFO,
MESSAGE_WARNING,
MESSAGE_ERROR
}
private ConsoleManager(){
}
/**
* Gives the default console with an empty title
* @return Default Message Console
*/
public static MsgConsole getDefault() {
if (defaultConsole == null){
defaultConsole = newConsole("Default");
//addConsole(defaultConsole);
}
return defaultConsole;
}
/**
* Removes a console from the console View
* @param console
*/
public static void removeConsole(IConsole console){
ConsolePlugin.getDefault().getConsoleManager().removeConsoles(new IConsole[] {console});
}
/**
* Adds consoles to the console View
* @param consoles
*/
public static void addConsole(IConsole[] consoles){
ConsolePlugin.getDefault().getConsoleManager().addConsoles(consoles);
}
/**
* Adds consoles to the console View
* @param console
*/
public static void addConsole(IConsole console){
ConsolePlugin.getDefault().getConsoleManager().addConsoles(new IConsole[] {console});
}
/**
* Create a new Console with the specified title and adds it to the console view
* @param title The desired title of the console
* @return The new Message Console
*/
public static MsgConsole newConsole(String title){
MsgConsole mc = new MsgConsole(title,null);
addConsole((IConsole)mc);
System.setOut(new PrintStream(mc.getOutputStream(MessageType.MESSAGE_INFO)));
// try {
IOConsoleInputStream str = mc.getInputStream();
//str.reset();
System.setIn(str);
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//defaultConsole = mc;
return mc;
}
/**
* Method to show the ConsoleView.
* @throws PartInitException if the ConsoleView cannot be displayed
*/
public static void displayConsoleView() throws PartInitException{
IWorkbenchWindow activeWorkbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
if (activeWorkbenchWindow != null){
IWorkbenchPage activePage = activeWorkbenchWindow.getActivePage();
if (activePage != null){
activePage.showView(IConsoleConstants.ID_CONSOLE_VIEW,null,IWorkbenchPage.VIEW_VISIBLE);
}
}
}
}