您的位置:首页 > 其它

使用rcp自带console输出信息

2011-04-18 22:42 501 查看
习惯了使用Eclipse的console来调试程序,当然在Rcp程序中如果能用console来输出用户关系的log信息也是不错的选择,要使用Rcp自带的console,首先是在plugin.xml中扩展consoleFactories




其中ConsoleFactory.java代码如下:

/*
* use the RCP console to display the information
* @Author:Biyunyun
* @version:1.0
* @date:2011-4-14
*/
public class ConsoleFactory implements IConsoleFactory {
static MessageConsole console = new MessageConsole("BulkLoader&&TodoList Info:",
null);

@Override
public void openConsole() {
showConsole();
}
public static void showConsole() {

if (console != null) {
IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager();
IConsole[] existing = manager.getConsoles();
boolean exists = false;
//add the new MessageConsole instance into the control manager and show
for (int i = 0; i < existing.length; i++) {
if (console == existing[i])
exists = true;
}
if(!exists){
manager.addConsoles(new IConsole[] { console });
}
manager.showConsoleView(console);
}
}
public static void closeConsole(){
IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager();
if (console != null){
manager.removeConsoles(new IConsole[]{ console });
}
}
public static MessageConsole getConsole(){
return console;
}

}
然后在透视图中将其显示出来PerspectiveFactory

ConsoleFactory cf = new ConsoleFactory();
layout.addView(IConsoleConstants.ID_CONSOLE_VIEW, IPageLayout.BOTTOM,0.70f, layout.getEditorArea());

cf.openConsole();


最后需要的在依赖关系中添加org.eclipse.ui.console



现在该console就会显示在透视图的下半部分了,但是可以看到现在的rcp上有很多menubar,这些是我们所不需要的,可以通过在代码中添加下列代码来简化menubar

IWorkbenchPage page = PlatformUI.getWorkbench().getWorkbenchWindows()[0]
.getPages()[0];
IViewPart viewpart = page.findView(IConsoleConstants.ID_CONSOLE_VIEW);
// IActionBars actionBar = viewpart.getViewSite().getActionBars();
IToolBarManager toolbarMgr = viewpart.getViewSite().getActionBars()
.getToolBarManager();
// IToolBarManager toolbarMgr = actionBar.getToolBarManager();
IContributionItem[] items = toolbarMgr.getItems();
for (IContributionItem item : items) {
if (item instanceof ActionContributionItem) {
IAction action = ((ActionContributionItem) item).getAction();
String text = action.getText();
if (text.equals("Open Console")
|| text.equals("Select Console")) {
toolbarMgr.remove(item);
}
}
}
viewpart.getViewSite().getActionBars().updateActionBars();
但是这些代码如果添加在ConsoleFactory.java中,要么出现透视图无法显示,也有会出现nullpoint的错误,后来将这些代码添加到该透视图中另外一个viewpart的构造函数中,问题得到解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: