使用rcp自带console输出信息

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

其中ConsoleFactory.java代码如下:

[java]  view plain copy
  1. /* 
  2.  * use the RCP console to display the information 
  3.  * @Author:Biyunyun 
  4.  * @version:1.0 
  5.  * @date:2011-4-14 
  6.  */  
  7. public class ConsoleFactory implements IConsoleFactory {  
  8.     static MessageConsole console = new MessageConsole("BulkLoader&&TodoList Info:",  
  9.             null);  
  10.       
  11.     @Override  
  12.     public void openConsole() {  
  13.         showConsole();  
  14.     }  
  15.     public static void showConsole() {  
  16.           
  17.         if (console != null) {     
  18.                IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager();     
  19.                IConsole[] existing = manager.getConsoles();     
  20.                boolean exists = false;     
  21.                //add the new MessageConsole instance into the control manager and show     
  22.                for (int i = 0; i < existing.length; i++) {     
  23.                    if (console == existing[i])     
  24.                        exists = true;     
  25.                }         
  26.                if(!exists){      
  27.                    manager.addConsoles(new IConsole[] { console });     
  28.                }     
  29.                manager.showConsoleView(console);    
  30.            }    
  31.     }  
  32.     public static void closeConsole(){  
  33.         IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager();  
  34.         if (console != null){  
  35.             manager.removeConsoles(new IConsole[]{ console });  
  36.         }  
  37.     }  
  38.     public static MessageConsole getConsole(){  
  39.         return console;  
  40.     }  
  41.   
  42. }  
 然后在透视图中将其显示出来PerspectiveFactory

[java]  view plain copy
  1. ConsoleFactory cf = new ConsoleFactory();   
  2.        layout.addView(IConsoleConstants.ID_CONSOLE_VIEW, IPageLayout.BOTTOM,0.70f, layout.getEditorArea());   
  3.          
  4.        cf.openConsole();   

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

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

[java]  view plain copy
  1. IWorkbenchPage page = PlatformUI.getWorkbench().getWorkbenchWindows()[0]  
  2.                 .getPages()[0];  
  3.         IViewPart viewpart = page.findView(IConsoleConstants.ID_CONSOLE_VIEW);  
  4.         // IActionBars actionBar = viewpart.getViewSite().getActionBars();  
  5.         IToolBarManager toolbarMgr = viewpart.getViewSite().getActionBars()  
  6.                 .getToolBarManager();  
  7.         // IToolBarManager toolbarMgr = actionBar.getToolBarManager();  
  8.         IContributionItem[] items = toolbarMgr.getItems();  
  9.         for (IContributionItem item : items) {  
  10.             if (item instanceof ActionContributionItem) {  
  11.                 IAction action = ((ActionContributionItem) item).getAction();  
  12.                 String text = action.getText();  
  13.                 if (text.equals("Open Console")  
  14.                         || text.equals("Select Console")) {  
  15.                     toolbarMgr.remove(item);  
  16.                 }  
  17.             }  
  18.         }  
  19.         viewpart.getViewSite().getActionBars().updateActionBars();  
  但是这些代码如果添加在ConsoleFactory.java中,要么出现透视图无法显示,也有会出现nullpoint的错误,后来将这些代码添加到该透视图中另外一个viewpart的构造函数中,问题得到解决。

源文地址:http://blog.csdn.net/by84788186/article/details/6332299


 要在某处将内容输出时调用代码:

MessageConsoleStream stream = ConsoleFactory.getConsole().newMessageStream();
stream.write("测试测试!");
stream.write("\r\n");//换行


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值