注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

隐龙 为了一生的信念

今日默默沉于水,他日飞腾在九天...

 
 
 

日志

 
 
关于我

今日默默沉于水,他日飞腾在九天.神秘的地方,今天,从这里开始...

网易考拉推荐
GACHA精选

Eclipse 插件开发 向Console控制台输出信息  

2017-04-18 19:07:13|  分类: Eclipse |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

我们在编写eclipse插件时,一般会通过

MessageDialog.openInformation(null, "Title", "It's just a test"); 弹出一个提示相关框,

有调试消息也会用System.out.println();打印出来。


但是弹出对话框在插件实际使用时并不方便,我们不能总是让用户关闭对话框

而System.out.println();打印的消息只能在调试时在调试窗口查看,不能打印消息。


所以我们必须要向插件运行的Workbench中实现Console信息的打印。


首先要做的,我们必须在配置中引入org.eclipse.ui.console的引用

plugin.xml -->Dependencies --> Required Plug-ins --> Add






然后通过代码实现打印方法

  1. MessageConsole console = null;  
  2. MessageConsoleStream consoleStream = null;  
  3. IConsoleManager consoleManager = null;  
  4. final String CONSOLE_NAME = "Console";  
  5.   
  6. private void initConsole() {  
  7.     // 新建一个MessageConsole,可以自定义Console的名称  
  8.     console = new MessageConsole(CONSOLE_NAME, null);  
  9.       
  10.     // 通过ConsolePlugin得到IConsoleManager,添加自定义的MessageConsole  
  11.     consoleManager = ConsolePlugin.getDefault().getConsoleManager();  
  12.     consoleManager.addConsoles(new IConsole[] { console });  
  13.       
  14.     // 新建一个MessageConsoleStream, 作用是接收需要打印的消息  
  15.     consoleStream = console.newMessageStream();  
  16. }  
  17.   
  18. /** 
  19.  * 开启console, 打印相关消息 
  20.  * @param message 消息内容 
  21.  */  
  22. public void printMessage(String message) {  
  23.     if (message != null) {  
  24.         if (console == null) {  
  25.             initConsole();  
  26.         }  
  27.         // 显示Console视图  
  28.         consoleManager.showConsoleView(console);  
  29.         // 打印消息  
  30.         consoleStream.print(message + "\n");  
  31.     
  32.     }  
  33. }  


今天突然想到一个问题,过来补充一下

其实eclipse默认自己是存在一个console的,之前的方法其实是新创建了一个名为“Console”的控制台

我们在ConsoleManager的getConsoles()方法下就可以查看当前管理存在的控制台

所以为了避免资源浪费,可以通过下面的方法调用默认的控制台

  1. private void initConsole() {  
  2.         consoleManager = ConsolePlugin.getDefault().getConsoleManager();  
  3.         IConsole[] consoles = consoleManager.getConsoles();  
  4.         if(consoles.length > 0){  
  5.             console = (MessageConsole)consoles[0];  
  6.         } else{  
  7.             console = new MessageConsole(CONSOLE_NAME, null);  
  8.             consoleManager.addConsoles(new IConsole[] { console });  
  9.         }  
  10.         consoleStream = console.newMessageStream();  
  11. }  

即如果存在就直接使用,如果不存在再创建新的控制台

  评论这张
 
阅读(85)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017