org.eclipse.ui.console指南

2008-02-23 09:37:45来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

org.Eclipse.ui.console指南

hanlray@hotmail.com

Revision: 0.6 Date: 2005/07/05


org.eclipse.ui.console是一个可扩展的console视图插件,利用它可以实现各种console,并把它们显示出来。该插件本身就实现了一个Message Console,对于只需要进行消息输出的RCP应用来说,其功能已经足够:

  • 调用ConsolePlugin.getDefault().getConsoleManager()得到一个IConsoleManager引用
  • 创建所需的MessageConsole,并把它(们)加入到上一步得到的Console Manager里
  • 调用MessageConsole.newMessageStream()得到连接这个Console的输出流(MessageConsoleStream)
  • 通过MessageConsoleStream的print,println方法进行消息的输出。当然需要把Console View打开才能看到 输出,可以利用Window/Show View来打开,或者把该View在放到自己实现的Perspective的初始布局中

下面简要列举其设计及实现要点:

  • 作为一个通用的console及其显示的框架,org.eclipse.ui.console定义了以下几个接口:
    • IConsole. 代表一个Console,主要方法是createPage,用来创建该Console在Console View中的分页
    • IConsole Manager. 代表一个Console Manager,对Console进行管理
    • IConsoleListener. 代表一个Console Listener,当Console被加进Console Manager中或从中删除时会得到通知
    • IConsoleView. 代表Console View,用来显示各个Console
  • org.eclipse.ui.console本身实现了一个Console View,通过在org.eclipse.ui.views扩展点上扩展的方式。 该实现已经相当一般化,一般情况下是不需要实现自己的Console View的.它的实现类是ConsoleView,是一个 PageBookView,每个Console以一个Page的方式呈现,效果就是我们在eclipse里看到的那个Console标签页。
  • 当向第1步得到的Console Manager里加Console时,如果此时ConsoleView已经实例化,则它会是该Console Manager 的一个Console Listener,因此会受到consolesAdded的事件通知,ConsoleView对此事件的处理是调用相应 Console的createPage方法创建一个IPageBookViewPage并显示它。如果ConsoleView是以后实例化的,则它实例化时会从Console Manager取到当前在Console Manager中的所有Console,对每个Console创建一个 IPageBookViewPage。
  • MessgaeConsole是一个IOConsole,IOConsole用于显示I/O流里的Text;而IOConsole又是一个TextConsole,TextConsole是一个抽象的文本Console,支持正则表达式匹配和超级链接,它包含一个Document,概念上就是 jface text框架中的文档概念,其实现类是ConsoleDocument。MessageConsole.createPage返回的实际上是一个 IOConsolePage,其createControl方法的实现创建了一个IOConsoleViewer,该viewer是jface text框架 的TextViewer,其Document被设置为这个MessageConsole的Document,因此当MessageConsole的Document改变时, 其Page上的TextViewer将反映该变化。
  • IOConsole关联一个Doucment Partitioner(IConsoleDocumentPartitioner),该接口扩展自jface text框架中的 IDocumentPartitioner,其实现类是IOConsolePartitioner.当通过MessageConsoleStream往MessageConsole上 输出消息时,消息实际进入了这个IOConsolePartitioner内部保存的一个消息列表里。IOConsolePartitioner里实现了一个Job Scheduling,其效果就是不断检查该消息列表,把其中的消息添加到MessageConsole的Document的末尾,当然这个工作是在另外的 线程中作的。此时如果ConsoleView已实例化,则该MessageConsole会和其Page上IOConsoleViewer相关联, 因此消息便能在该Console的Page中显示出来了。

上一篇: Java入门:J2ee学习流程简介
下一篇: Java:Struts入门初步知识

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Java下的Framework编写(4)--Annotation vs XML

下一篇:内容仓库API规范(中文版)用例之数据交换