实现RCP自身的控制台

一、解决基本问题:

在做RCP项目的时候经常会遇到一个问题,就是要将一些控制信息输出到RCP自身的控制台,那么我们就可以扩展Eclipse扩展点org.eclipse.ui.console.consoleFactories,来实现我们自己的控制台,解决方法如下:

首先,在plugin.xml 中定义扩展点:

plugin.xml:
<extension
    point="org.eclipse.ui.console.consoleFactories">
    <consoleFactory
        class="com.hnjchina.intro.ConsoleFactory"
        label="
控制台"/>
</extension>

其次,在perspective中加入console View,作为控制信息的控制台(console):

Perspective.java类中的Public void createInitialLayout(IPageLayout layout)方法中加入如下:layout.addView(IConsoleConstants.ID_CONSOLE_VIEW, IPageLayout.BOTTOM, 0.70f , layout.getEditorArea());

最后,自定义ConsoleFactory类,主要实现showConsole()方法,然后在要输出信息的地方定义printer变量如下:

private  MessageConsoleStream  printer =ConsoleFactory.console.newMessageStream();

自定义的ConsoleFactory类具体代码如下:

package  com.essp.eseai.maptool.perspective.views;

import  java.io.IOException;
import  java.io.PrintStream;
import  org.eclipse.ui.console.ConsolePlugin;
import  org.eclipse.ui.console.IConsole;
import  org.eclipse.ui.console.IConsoleFactory;
import  org.eclipse.ui.console.IConsoleManager;
import  org.eclipse.ui.console.MessageConsole;
import  org.eclipse.ui.console.MessageConsoleStream;

/**
* 描述:样式显示控制台视图
*/

public   class  ConsoleViewPart  implements  IConsoleFactory  {
   
   
private static MessageConsole console = new MessageConsole("样式显示窗口"null);
   
   
/**
    * 描述:打开控制台
    * 
*/

   
public void openConsole() {
       showConsole();
   }

       
   
/**
    * 描述:显示控制台
    * 
*/
    
   
public static void showConsole() {
       
try {
           
if (console != null{
               
//得到默认控制台管理器
               IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager();
               
//得到所有的控制台实例
               IConsole[] existing = manager.getConsoles();
               
boolean exists = false;
               
//新创建的MessageConsole实例不存在就加入到控制台管理器,并显示出来
               for (int i = 0; i < existing.length; i++{
                   
if (console == existing)
                       exists 
= true;
               }
    
               
if(!exists){
                   System.out.println(
"aaaaaaaa");
                   manager.addConsoles(
new IConsole[] { console });
               }

               manager.showConsoleView(console);
               MessageConsoleStream stream 
= console.newMessageStream();
               stream.write(
"测试!");
               System.setOut(
new PrintStream(stream));
           }

       }
 catch (IOException e) 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值