习惯了使用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;
- }
- }
- 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();
源文地址:http://blog.youkuaiyun.com/by84788186/article/details/6332299
要在某处将内容输出时调用代码:
MessageConsoleStream stream = ConsoleFactory.getConsole().newMessageStream();
stream.write("测试测试!");
stream.write("\r\n");//换行