将Eclipse的console插件加入到自己的RCP应用程序中
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?ConsoleFactory?implements?IConsoleFactory?{
????static?MessageConsole?console?=?new?MessageConsole("Transfer?Infomation",
????????????null);
????public?void?openConsole()?{
????????showConsole();
????}
????public?static?void?showConsole()?{
????????if?(console?!=?null)?{
????????????IConsoleManager?manager?=?ConsolePlugin.getDefault()
????????????????????.getConsoleManager();
????????????IConsole[]?existing?=?manager.getConsoles();
????????????boolean?exists?=?false;
????????????for?(int?i?=?0;?i?<?existing.length;?i++)?{
????????????????if?(console?==?existing[i])
????????????????????exists?=?true;
????????????}
????????????if?(!exists)?{
????????????????manager.addConsoles(new?IConsole[]?{?console?});
????????????}
????????????manager.showConsoleView(console);
????????????MessageConsoleStream?stream?=?console.newMessageStream();
????????????System.setOut(new?PrintStream(stream));
????????}
????}
????public?static?void?closeConsole()?{
????????IConsoleManager?manager?=?ConsolePlugin.getDefault()
????????????????.getConsoleManager();
????????if?(console?!=?null)?{
????????????manager.removeConsoles(new?IConsole[]?{?console?});
????????}
????}
????public?static?MessageConsole?getConsole()?{
????????return?console;
????}
}
在RCP的Perspective.java中写入
Java代码
public?void?createInitialLayout(IPageLayout?layout)?{
????????String?editArea?=?layout.getEditorArea();
???????????????????????????????????????????ConsoleFactory?cf?=?new?ConsoleFactory();
????????cf.openConsole();
????????layout.setEditorAreaVisible(false);
????????layout.addView(IAppConstant.PIC_VIEW,?IPageLayout.TOP,?0.50f,?editArea);
????????
????????IFolderLayout?up=layout.createFolder("up",IPageLayout.BOTTOM,0.5f,editArea);
??????????????????????????????????????????up.addPlaceholder(IConsoleConstants.ID_CONSOLE_VIEW);
??????????????????????????????????????????up.addView(IConsoleConstants.ID_CONSOLE_VIEW);
????}
运行,哈哈,已经有console了。
如果报错:
!MESSAGE Missing Constraint: Require-Bundle: org.eclipse.ui.console; bundle-version="3.4.0"
... ...
解决方法是在运行配置"Open Run Dialog ... "里找到相应的运行项, 然后在"Plug-ins"里先按下"Validate Plug-ins"按钮, 会提示你缺少Bundle项, 然后按下"Add Required Plug-ins"按钮, 这样就会把运行时需要的plug-ins给自动添加上去(在这个例子里是org.eclipse.ui.console这个插件).