zoukankan      html  css  js  c++  java
  • Eclipse RCP开发4在Eclipse RCP中加入Console视图

        有时候在编写RCP程序中,需要输出一些信息,例如log信息,调试信息,等等。这时候,如果能够将eclipse自带的console视图加入到我们自己编写的程序中,将会是一件非常美妙的事情。下面将详细的介绍如何将eclipse 自带的console视图引入到RCP程序中。

    • 创建一个新的插件程序,例如起名为com.rcp.tutorial.view.console。
    • 打开配置文件plugin.xml,在依赖(Dependencies)页中,在Required Plug-ins,点击Add,如下图

    • 添加org.eclipse.ui.console插件,如下图

    • 在扩展点(Extensions)页添加org.eclipse.console.consoleFactories扩展点,并修改扩展元素Label为Output, Class 为com.rcp.tutorial.view.console.ConsoleFactory,如下图

    • 点击class,创建 com.rcp.tutorial.view.console.ConsoleFactory的实现类,该类实现org.eclipse.ui.console.IConsoleFactory接口。此类最主要的实现方法为openConsole,加入以下代码:
    package com.rcp.tutorial.view.console;
    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;
    public class ConsoleFactory implements IConsoleFactory {
    private static MessageConsole console = new MessageConsole("Output", null);  
    @Override
    public void openConsole() {
    if (console != null) {  
               
                IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager();  
               
                IConsole[] existing = manager.getConsoles();  
                boolean exists = false;  
               
                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;  
      }
    }
    • 在Perspective类中加入以下代码:
    package com.rcp.tutorial.view.console;
    import org.eclipse.ui.IPageLayout;
    import org.eclipse.ui.IPerspectiveFactory;
    import org.eclipse.ui.console.IConsoleConstants;
    public class Perspective implements IPerspectiveFactory {
    public void createInitialLayout(IPageLayout layout) {
    layout.setEditorAreaVisible(true);
     
    layout.addView(IConsoleConstants.ID_CONSOLE_VIEW, IPageLayout.BOTTOM, .4f, layout.getEditorArea());
     
    ConsoleFactory consoleFactory = new ConsoleFactory();
    consoleFactory.openConsole();
    }
    }
    • 运行程序,可以发现,console视图已经加入到RCP程序中,如下图,

    • 测试在此console中输出信息。在扩展点页加入新的扩展点,org.eclipse.ui.commands,添加一个新的command,并创建org.rcp.tutorial.view.console.TestCmd类,该类执行该command的动作,如下图

    • 修改TestCmd类,如下代码
    package com.rcp.tutorial.view.console;
    import org.eclipse.core.commands.ExecutionEvent;
    import org.eclipse.core.commands.ExecutionException;
    import org.eclipse.core.commands.IHandler;
    import org.eclipse.core.commands.IHandlerListener;
    import org.eclipse.ui.console.MessageConsoleStream;
    public class TestCmd implements IHandler {
    @Override
    public void addHandlerListener(IHandlerListener handlerListener) {
    // TODO Auto-generated method stub
    }
    @Override
    public void dispose() {
    // TODO Auto-generated method stub
    }
    @Override
    public Object execute(ExecutionEvent event) throws ExecutionException {
    MessageConsoleStream  printer =ConsoleFactory.getConsole().newMessageStream();
    printer.println("Hello, console!");
    //System.out.println("Hello, console!");
     
    return null;
    }
    @Override
    public boolean isEnabled() {
    // TODO Auto-generated method stub
    return true;
    }
    @Override
    public boolean isHandled() {
    // TODO Auto-generated method stub
    return true;
    }
    @Override
    public void removeHandlerListener(IHandlerListener handlerListener) {
    // TODO Auto-generated method stub
    }
    }
    • 再次执行,如下图

    • 该程序可以像自身的console输出信息!
  • 相关阅读:
    Yii2的深入学习--行为Behavior
    使用WordPress搭建自己的博客
    php-resque的设计和使用
    PHP的学习--在Atom中使用XDebug(Mac)
    七牛镜像的使用
    macOS平台下虚拟摄像头的研发总结
    macOS下利用dSYM文件将crash文件中的内存地址转换为可读符号
    XCode日常使用备忘录
    DirectShow Filter的开发实践
    Windows下程序启动时出现0xc000007b错误的解决方案
  • 原文地址:https://www.cnblogs.com/biaoyu/p/2601195.html
Copyright © 2011-2022 走看看