我们在编写eclipse插件时,一般会通过
MessageDialog.openInformation(null, "Title", "It's just a test"); 弹出一个提示相关框,
有调试消息也会用System.out.println();打印出来。
但是弹出对话框在插件实际使用时并不方便,我们不能总是让用户关闭对话框
而System.out.println();打印的消息只能在调试时在调试窗口查看,不能打印消息。
所以我们必须要向插件运行的Workbench中实现Console信息的打印。
首先要做的,我们必须在配置中引入org.eclipse.ui.console的引用
plugin.xml -->Dependencies --> Required Plug-ins --> Add
然后通过代码实现打印方法
MessageConsole console = null;
MessageConsoleStream consoleStream = null;
IConsoleManager consoleManager = null;
final String CONSOLE_NAME = "Console";
private void initConsole() {
// 新建一个MessageConsole,可以自定义Console的名称
console = new MessageConsole(CONSOLE_NAME, null);
// 通过ConsolePlugin得到IConsoleManager,添加自定义的MessageConsole
consoleManager = ConsolePlugin.getDefault().getConsoleManager();
consoleManager.addConsoles(new IConsole[] { console });
// 新建一个MessageConsoleStream, 作用是接收需要打印的消息
consoleStream = console.newMessageStream();
}
/**
* 开启console, 打印相关消息
* @param message 消息内容
*/
public void printMessage(String message) {
if (message != null) {
if (console == null) {
initConsole();
}
// 显示Console视图
consoleManager.showConsoleView(console);
// 打印消息
consoleStream.print(message + "\n");
}
}
今天突然想到一个问题,过来补充一下
其实eclipse默认自己是存在一个console的,之前的方法其实是新创建了一个名为“Console”的控制台
我们在ConsoleManager的getConsoles()方法下就可以查看当前管理存在的控制台
所以为了避免资源浪费,可以通过下面的方法调用默认的控制台
private void initConsole() {
consoleManager = ConsolePlugin.getDefault().getConsoleManager();
IConsole[] consoles = consoleManager.getConsoles();
if(consoles.length > 0){
console = (MessageConsole)consoles[0];
} else{
console = new MessageConsole(CONSOLE_NAME, null);
consoleManager.addConsoles(new IConsole[] { console });
}
consoleStream = console.newMessageStream();
}
即如果存在就直接使用,如果不存在再创建新的控制台