`

Eclipse plugin开发 —实现文本内容帮助

 
阅读更多

http://blog.sina.com.cn/s/blog_40585f8d010009lw.html看到一篇文章,但是程序不完整,特此做一些修改:

大家在使用Eclipse编写Java代码的时候,一定被Java代码编辑器的强大功能所吸引:出色的错误提示,准确的内容帮助,文本的折叠等等。今天我以Eclipse插件中的XML Editor例子作为模板,为XML文本编辑器加入内容帮助(Content Assis)。

1.内容帮助简介

在目前流行的IDE中,内容提示帮助是必不可少的功能,可以说,如果没有了内容帮助,那IDE就不能称为IDE。有了内容帮助提示,能大大提高代码编写速度。

请看下图:当我们在Java编辑器中输入‘.’的时候,就会弹出一个菜单,里面列出了类所具有的方法以及属性,并且在我们继续输入字符的时候,弹出的内容会随着我们的输入进行过滤。

Eclipse<wbr>plugin开发之TextEditor<wbr>鈥斺<wbr>如何实现文本内容帮助

下面我们以Eclipse的XML Editor Example为例,介绍一下内容帮助如何实现的。

2.创建XML Editor

我们首先需要建立一个Plugin工程,然后在向导页中选择我们要生成的XML Editor例子:

Eclipse<wbr>plugin开发之TextEditor<wbr>鈥斺<wbr>如何实现文本内容帮助



点Finish完成,这时候我们的工程便生成了,并且向导还为我们生成了XML Editor所需要的一些类,以及为我们的Plugin.xml实现了org.eclipse.ui.editors扩展点:

Eclipse<wbr>plugin开发之TextEditor<wbr>鈥斺<wbr>如何实现文本内容帮助



3.简单的内容帮助

在我们生成的类中,有一个名为XMLConfiguration的类,该类对XML Editor进行了一些设置,包括如何去为不同的文本区域显示不同的颜色等,TextEditor所维护的SourceViewer就是通过它来进行设置的,但这不是我们所要讨论的范围,这里简单地介绍一下即可。

接下来我们需要复写XMLConfiguration的一个方法:getContentAssistant。这个方法便是告诉我们的编辑器,我们所具有的内容帮助是什么,在创建XML Editor的时候,默认是不为我们生成这方面代码的,所以我们需要自己复写:

publicIContentAssistantgetContentAssistant(ISourceViewersourceViewer){
//生成一个ContentAssistant
ContentAssistantassistant=newContentAssistant();

//设置帮组内容弹出响应时间
assistant.setAutoActivationDelay(200);
assistant.enableAutoActivation(
true);
returnassistant;
}


ContentAssistant并不是内容帮助的提供者,它只是维护我们的内容帮助,帮我们弹出菜单以及帮助内容信息等作用。
真正告诉ContentAssistant要显示那些帮助内容的,是IContentAssistProcessor接口类。让我们创建一个名为StrutsContentAssisProcessor的类,并让它实现IContentAssistProcessor接口:

publicclassStrutsContentAssisProcessorimplementsIContentAssistProcessor{

publicICompletionProposal[]computeCompletionProposals(ITextViewerviewer,
intoffset){
returnnull;
}

publicIContextInformation[]computeContextInformation(ITextViewerviewer,
intoffset){
returnnull;
}

publicchar[]getCompletionProposalAutoActivationCharacters(){
returnnull;
}

publicchar[]getContextInformationAutoActivationCharacters(){
returnnull;
}

publicStringgetErrorMessage(){
returnnull;
}

publicIContextInformationValidatorgetContextInformationValidator(){
returnnull;
}

}


大家注意下computeCompletionProposals方法,这个方法便是返回我们的具体内容帮助。所以我们需要为我们的编辑器创建所需要的内容帮助:CompletionProposal

先看一下这个类的构造函数各个参数的含义:

*@paramreplacementString:选择帮助信息后所要替代的文本内容
*@paramreplacementOffset:替代内容输入的位置
*@paramreplacementLength:替代文本覆盖原来文本的长度
*@paramcursorPosition:完成内容帮助的文本替代后,光标所在位置
*@paramimage:帮助内容显示的图标
*@paramdisplayString:帮助内容的显示字符串
*@paramcontextInformation:帮助内容的信息描述
*@paramadditionalProposalInfo:附加信息


在这几个参数中image 、contextInformation、additionalProposalInfo我们可以设置为空。现在让我们在computeCompletionProposals生成我们的帮助内容:

publicICompletionProposal[]computeCompletionProposals(ITextViewerviewer,
intoffset){
ICompletionProposal[]proposals
=newICompletionProposal[2];

proposals[
0]=newCompletionProposal("替换文本1",offset,0,newString("替换文本1").length(),null,"帮组内容1",null,null);
proposals[
1]=newCompletionProposal("替换文本2",offset,0,newString("替换文本2").length(),null,"帮组内容2",null,null);

returnproposals;
}


computeCompletionProposals输入的参数中 offset是指当内容帮助弹出的时候,文本编辑器光标所在位置。

大家都知道,帮助内容弹出的时候是需要一定条件的,也就是当我们输入了激活内容帮助的字符的时候,它便会弹出来。IContentAssistProcessorgetCompletionProposalAutoActivationCharacters方法便是让我们返回激活帮助内容字符的,假设当我们输入了‘<’时,弹出帮助内容:

publicchar[]getCompletionProposalAutoActivationCharacters(){
returnnewString("<").toCharArray();
}

好了,我们的第一步已经完成了,接下来就是在ContentAssis对象中设置我们所要返回的内容帮助。
返回到XMLConfiguration的getContentAssistant方法:

public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {
// 生成一个ContentAssistant
ContentAssistant assistant = new ContentAssistant();

// 设置帮组内容弹出响应时间
assistant.setAutoActivationDelay( 200 );
assistant.enableAutoActivation( true );
assistant.setContentAssistProcessor(new StrutsContentAssisProcessor(), IDocument.DEFAULT_CONTENT_TYPE);

return assistant;
}

分享到:
评论

相关推荐

    借用Eclipse 实现文本内容对比功能

    标题“借用Eclipse 实现文本内容对比功能”指的是在Eclipse集成开发环境中利用其内置的文本比较工具来对比两个文本文件的内容。Eclipse作为一个强大的Java IDE,提供了丰富的插件和功能,其中包括文件比较功能,这...

    hadoop-eclipse-plugin-2.7.1.jar

    总的来说,Hadoop Eclipse Plugin 2.7.1 提供了一个直观、高效的开发环境,让Hadoop开发者能在熟悉的Eclipse界面下实现大数据应用的快速开发和测试,降低了Hadoop学习和使用的门槛,对于推动大数据技术的应用和普及...

    jd gui eclipse plugin

    在Java开发过程中,有时候我们可能需要查看或反编译已编译的`.class`文件,了解其内部实现逻辑,而JD-GUI Eclipse Plugin正是为此目的服务的。它允许开发者在不拥有源代码的情况下,查看类文件的方法、变量和控制流...

    Eclipse Plugin Development CN

    在Eclipse插件开发中,通常会使用.properties文件来存储多语言文本,以实现插件界面的本地化。 总结一下,Eclipse插件开发涉及以下关键知识点: 1. Eclipse插件架构和OSGi框架。 2. 使用Eclipse IDE for RCP and ...

    eclipse vi plugin

    【Eclipse Vi Plugin】是一款专为Eclipse集成开发环境设计的插件,它使得开发者可以在Eclipse中体验到类似于Vi或Vim编辑器的操作方式。这个插件极大地提升了熟悉Vi编辑器的程序员在Eclipse中的工作效率,同时也为不...

    Eclipse权威开发示例

    "Eclipse权威开发示例"这个压缩包文件,正如其标题所示,提供了丰富的Eclipse插件开发实例和相关指导,旨在帮助开发者更深入地理解和掌握Eclipse的使用。 首先,我们要了解Eclipse插件开发的基本概念。Eclipse是...

    Eclipse plugin开发扩展点文档(3.0)[chm]

    Eclipse 插件开发扩展点定义文档,提供给有需要的开发人员。 如下摘录: 视图 标识: org.eclipse.ui.views 描述: 此扩展点用来为工作台定义更多视图。视图是工作台页面内的可视组件。通常用来浏览信息的层次...

    eclipse插件开发步步教你

    本教程旨在逐步指导初学者进行Eclipse插件的开发,通过实例演示如何利用Eclipse平台的API和扩展点来实现各种功能。 首先,我们要理解Eclipse插件的基本概念。Eclipse插件是基于OSGi模块系统构建的,每个插件都是一...

    p3c eclipse plugin

    **P3C Eclipse Plugin** 是一个专为Java开发者设计的Eclipse插件,它主要用于帮助开发者遵循阿里巴巴的编码规范,提升代码质量和可读性。在Java开发中,遵循一定的编码规范是至关重要的,因为它可以保证代码的一致性...

    thymeleaf-extras-eclipse-plugin-2.1.2.zip

    Thymeleaf是一个流行的Java模板引擎,用于在服务器端生成HTML,XML和其他文本内容。它在Web开发领域,特别是与Spring框架结合时,被广泛应用于视图层的处理。Spring-Thymeleaf是Spring框架对Thymeleaf的集成,使得在...

    Eclipse 插件开发官方示例

    官方示例是学习和掌握Eclipse插件开发的宝贵资源,它们通常包含了丰富的代码片段和详细的注释,旨在帮助初学者理解插件体系结构并实践其实现。 在Eclipse插件开发中,你需要了解以下几个核心概念: 1. **插件...

    Eclipse Plugin for fold/unfold develpoment

    开发这样的插件需要对Eclipse的Plugin Development Environment (PDE)有深入理解,包括插件元数据、扩展点和实现类。 2. **内容辅助**:在实现折叠和展开功能时,需要提供一种方式来识别哪些代码段可以被折叠。这...

    epx 是 eclipse plugin extension 的简称 该项目主要对Eclipse plugin 一些知识点的Demo,包括但不限于RCP、GEF、EMF等

    在这些插件中,epx(Eclipse plugin extension)项目是一个典型代表,它主要是为了演示Eclipse插件开发中的一些核心知识点。在Eclipse的插件开发中,RCP(Rich Client Platform)、GEF(Graphical Editing Framework...

    《Eclipse 插件开发》源代码

    这个《Eclipse 插件开发》源代码提供了丰富的实践示例,帮助开发者深入理解Eclipse插件的构建过程和技术细节。 在Eclipse插件开发中,首先要了解的是Oxygen(早期版本称为PDE,Plugin Development Environment),...

    Eclipse插件开发方法与实战

    - 插件的核心是实现`org.eclipse.ui.plugin.AbstractUIPlugin`类,该类继承自`org.eclipse.core.runtime.Plugin`,并实现了生命周期方法。 - 创建视图(View)、透视图(Perspective)、编辑器(Editor)、命令...

    Eclipse入门及开发Eclipse插件指南.pdf

    根据提供的文件信息,内容的知识点主要集中在Eclipse集成开发环境(IDE)的使用及插件开发方面。以下是关于Eclipse的详细介绍: 一、Eclipse简介 Eclipse是一个开放源代码的项目,由IBM捐资并由IBM与其他业界公司...

    eclipse RCP开发的编辑器

    总之,Eclipse RCP编辑器开发涉及到许多方面,包括插件架构、编辑器视图实现、SWT和JFace的使用,以及Eclipse IDE提供的开发工具支持。通过不断学习和实践,你可以构建出功能强大、用户友好的桌面应用。在这个过程中...

    Eclipse插件-TomcatPlugin下载

    为了安装 TomcatPlugin,你需要在 Eclipse 的“帮助”菜单中选择“Eclipse Marketplace”,搜索 TomcatPlugin,然后按照提示进行安装。另外,如果你手头已经有了插件的压缩包(如“Eclipse插件-TomcatPlugin下载...

    svn eclipse plugin 1.6.12

    Eclipse 是一个流行的开源集成开发环境(IDE),广泛用于Java和其他语言的开发。 SVN Eclipse 插件是将 SVN 功能集成到 Eclipse 中的一种工具,使得开发者可以直接在 Eclipse 界面内进行版本控制操作,如提交、更新...

    Eclipse插件开发问题

    在开发过程中,为了支持多种语言,我们需要创建如`plugin_zh.properties`这样的资源文件,其中包含了不同语言环境下的文本。在`plugin.xml`文件中,我们通常使用 `%key` 形式的占位符来引用这些资源。然而,当这些...

Global site tag (gtag.js) - Google Analytics