`

eclipse控制台的扩展

 
阅读更多

1.org.eclipse.ui.console.consoleFactories

该扩展点用于实现一个console工厂类,需要实现IConsoleFactory借口。

 

2. org.eclipse.ui.console.consolePatternMatchListeners

 

该扩展点需要实现org.eclipse.ui.console.IPatternMatchListenerDelegate接口,主要功能是通过正则表达式匹配console中的每一行,对匹配的行作出操作(比如增加文件链接)

 

3. org.eclipse.core.variables.dynamicVariables

 

这个扩展点需要实现org.eclipse.core.variables.IDynamicVariableResolver接口,作用就是定义一个dynamic variable,这里定义一个正则表达式,匹配console中的内容。

 

具体实现可参考org.eclipse.jdt.debug.ui插件中关于java console tracker的定义,以及JavaConsoleTracker和JavaLikeExtensionsResolver两个类的源码。

 

 

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标签页。

Console 和PageBookView Page的关系。简言之,就是MVC中Model和View的关系,Model是Console,Page负责把它显示出来。对于TextConsole 和TextConsolePage,这种Model-View关系是通过TextConsole和(TextConsolePage所关联的)TextConsoleViewer之间的 Model-View关系来实现的,如图所示。再看TextConsole和TextConsoleViewer的Model-View关系的实现:TextConsole关联一个 ConsoleDocument,实现了IDoucment接口,而 TextConsoleViewer是一个TextViewer,在其构造函数中设置其Document为TextConsole关联的 Document(ConsoleDocument),由此可以看出,TextConsole和TextConsolePage之间的Model-View关系最终还是由jface text框架的IDocument和TextViewer之间的Model-View 关系来实现的。Console和其Page的关系是通过IConsole的createPage方法来建立的,比如,TextConsole的 createPage创建的TextConsolePage对象保存了相应TextConsole对象的引用;对于MessageConsole来说,由于它没有覆盖IOConsole的createPage方法,因此创建的是一个IOConsolePage对象, 该IOConsolePage对象保存的虽然是一个TextConsole引用,但其实际类型是MessageConsole。

当向第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中显示出来了。

分享到:
评论

相关推荐

    eclipse插件-控制台彩色

    默认情况下,Eclipse控制台的输出是黑白的,对于大量日志或者复杂调试信息来说,可能会造成阅读困难。因此,为控制台增加彩色高亮可以显著提升工作效率,比如通过不同颜色区分错误信息、警告信息和其他输出。 通常...

    eclipse RCP学习项目源码&扩展控制台插件for eclipse3.5

    这个压缩包包含的“eclipse RCP学习项目源码&扩展控制台插件for eclipse3.5”是针对Eclipse 3.5版本的一个学习资源,它涵盖了RCP应用开发的基础和如何创建自定义控制台插件。 首先,RCP项目源码是理解Eclipse RCP...

    Eclipse插件中控制台的实现·

    2. **构建控制台页面的ConsolePage类**:需要实现`org.eclipse.ui.part.IPageBookViewPage`接口,通常通过扩展`org.eclipse.ui.part.Page`类来实现。 3. **用于显示输出到控制台的文本信息的ConsoleViewer类**:通过...

    打印sql日志插件

    Eclipse是一款广泛使用的Java开发IDE,它提供了丰富的插件支持来扩展其功能。"打印SQL日志插件"就是这样一款增强Eclipse功能的工具,它可以集成到Eclipse环境中,实现在控制台实时输出应用程序执行的SQL语句,让...

    Eclipse平台SDK支持的扩展点

    Eclipse平台SDK是开发Eclipse插件和RCP应用程序的基础,它提供了丰富的扩展点机制,使得开发者可以定制和扩展Eclipse的功能。这些扩展点是Eclipse插件系统的核心,它们定义了插件如何与其他插件交互,以及如何向...

    eclipseHyperlink2

    Eclipse的强大力量之一在于它的可扩展性,允许开发者通过插件来增强其功能。"eclipseHyperlink2"和"hyperlinker-master2"这两个名称暗示了一个与Eclipse相关的插件或功能,可能涉及到代码超链接或导航增强。 ...

    php在eclipse的控制台console输出调试信息功能实现

    本篇文章将详细介绍如何在Eclipse的控制台Console中输出调试信息,以便更好地理解程序运行状态。 首先,你需要安装PHP Development Tools (PDT) 插件,这是Eclipse用于PHP开发的核心组件。PDT提供了代码编辑、调试...

    Eclipse插件开发实现控制台输出信息的方法

    第一步:扩展控制台扩展点 在Eclipse插件开发中,需要扩展org.eclipse.ui.console.consoleFactories扩展点,并填写必要的信息,比如label、class等。扩展点是Eclipse插件开发的核心组件,用于扩展Eclipse的功能。 ...

    java控制台输出银行利息换算

    通过这种方式,我们利用Java和Eclipse控制台实现了银行利息的简单计算。这个例子有助于初学者理解面向对象编程的概念,如类、属性、方法以及如何通过控制台进行输出。同时,也可以扩展这个程序,增加更多的功能,如...

    PHP开发调试(debug)工具Eclipse Console for PHP(EC4P)

    下面是我释出的PHP eclipse控制台(console) 输出项目(Eclipse Console for PHP| EC4P )0.5版本,基本实现了在控制台(console)输出一些调试参数 的功能。 这样的功能对于小项目 ,PHP初学者 ,或者一些不方便页面...

    Eclipse中文教程[适合初学者]

    Eclipse支持丰富的插件扩展,如MyEclipse(Java EE开发)、PyDev(Python开发)、Git插件(版本控制)等,可以根据需求安装。 **八、Eclipse配置与优化** 1. 配置JDK:在Eclipse的“首选项”中设置Java的JRE路径。 ...

    osgi自定义控制台命令demo

    在OSGi环境中,自定义控制台命令是一个强大的特性,允许开发者扩展OSGi框架的功能,提供个性化的操作指令。本示例“osgi自定义控制台命令demo”将向我们展示如何创建和实现自己的控制台命令,以增强OSGi的交互性。 ...

    Eclipse从入门到精通.pdf

    Eclipse的视图可以显示特定的信息,例如项目浏览器视图可以显示项目结构,控制台视图则可以显示程序运行的输出信息。 另外,Eclipse还支持多种开发框架和技术,比如Spring、Hibernate等,这使得Eclipse成为一个强大...

    linux下的eclipse

    Linux下的Eclipse是一款专为开发人员设计的集成开发环境(IDE),...总结,Linux下的Eclipse不仅为开发者提供了全面的开发功能,还具有高度的可定制性和扩展性。熟练掌握Eclipse的使用,将大大提高开发效率和代码质量。

    eclipse中文帮助文档

    10. **插件(Plug-in)**:Eclipse的扩展机制,通过安装插件,可以支持更多语言和功能,如C/C++开发插件CDT、Web开发插件WTP等。 11. **版本控制(Version Control)**:Eclipse支持多种版本控制系统,如Git、SVN等...

    Eclipse中文开发手册.

    Eclipse以其强大的插件系统著称,允许开发者通过安装各种插件来扩展其功能,满足不同开发需求。 **二、Eclipse界面** Eclipse的界面主要由工作区、透视图、视图和编辑器组成。工作区用于管理项目和文件;透视图是...

    eclipse-jee-2022-03-R-win32-x86_64.zip

    5. **插件扩展**:丰富的插件生态系统,可以扩展到几乎任何语言或技术领域。 对于R语言开发,Eclipse的R插件提供了以下功能: 1. **源代码编辑**:R代码的语法高亮、自动完成和代码折叠。 2. **交互式控制台**:...

Global site tag (gtag.js) - Google Analytics