一、解决基本问题:
在做RCP项目的时候经常会遇到一个问题,就是要将一些控制信息输出到RCP自身的控制台,那么我们就可以扩展Eclipse扩展点org.eclipse.ui.console.consoleFactories,来实现我们自己的控制台,解决方法如下:
首先,在plugin.xml 中定义扩展点:
plugin.xml:
<extension
point="org.eclipse.ui.console.consoleFactories">
<consoleFactory
class="com.hnjchina.intro.ConsoleFactory"
label="控制台"/>
</extension>
其次,在perspective中加入console View,作为控制信息的控制台(console):
在Perspective.java类中的Public void createInitialLayout(IPageLayout layout)方法中加入如下:layout.addView(IConsoleConstants.ID_CONSOLE_VIEW, IPageLayout.BOTTOM,0.70f, layout.getEditorArea());
最后,自定义ConsoleFactory类,主要实现showConsole()方法,然后在要输出信息的地方定义printer变量如下:
private MessageConsoleStream printer =ConsoleFactory.console.newMessageStream();
自定义的ConsoleFactory类具体代码如下:
package
com.essp.eseai.maptool.perspective.views;
import
java.io.IOException;
import
java.io.PrintStream;
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.MessageConsole;
import
org.eclipse.ui.console.MessageConsoleStream;
/**
* 描述:样式显示控制台视图
* */
public
class
ConsoleViewPart
implements
IConsoleFactory
{
private static MessageConsole console = new MessageConsole("样式显示窗口", null);
/**
* 描述:打开控制台
* */
public void openConsole() {
showConsole();
}
/**
* 描述:显示控制台
* */
public static void showConsole() {
try {
if (console != null) {
//得到默认控制台管理器
IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager();
//得到所有的控制台实例
IConsole[] existing = manager.getConsoles();
boolean exists = false;
//新创建的MessageConsole实例不存在就加入到控制台管理器,并显示出来
for (int i = 0; i < existing.length; i++) {
if (console == existing)
exists = true;
}
if(!exists){
System.out.println("aaaaaaaa");
manager.addConsoles(new IConsole[] { console });
}
manager.showConsoleView(console);
MessageConsoleStream stream = console.newMessageStream();
stream.write("测试!");
System.setOut(new PrintStream(stream));
}
} catch (IOException e) {
e.printStackTrace();
}
}

本文介绍了如何在RCP项目中扩展Eclipse的控制台功能,通过实现consoleFactories扩展点创建自定义控制台,用于显示RCP应用的控制信息。详细步骤包括在plugin.xml中定义扩展点、在透视图中添加控制台视图,以及自定义ConsoleFactory类以显示和关闭控制台。此外,还总结了控制台的重用方法以及解决运行时可能出现的问题。

最低0.47元/天 解锁文章
1431





