使用rcp自带console输出信息

    技术2022-05-19  23

    习惯了使用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的构造函数中,问题得到解决。

     


    最新回复(0)