`

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 plugin开发扩展点文档(3.0)[chm]

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

    Eclipse RCP Plugin 开发自学入门指南(CEC首发)

    一些内容完全迁移到 Eclipse3.6 版本上来。基于开源以及分享的精神,特地将教程分享到网络上, 希望所有需要的朋友因此而受益,也希望大家能有版本意识,转载时注明来自 salever@126.com。 之前有一套基于 Eclipse...

    eclipse 国际化的插件

    eclipse 国际化的插件 properties 分享一个不错的编写properties文件的Eclipse插件(plugin),有了它我们在编辑一些简体中文、繁体中文等 Unicode文本时,就不必再使用native2ascii编码了。您可以通过Eclipse中的...

    Eclipse RCP Plug-in开发自学教程(Eclipse3.6)

    【CSDN首发】,百度上的不是完整版本,非本人发布 本教程素材来源于网络,经过本人的整理、添加以及部分的重写,将原有的Eclipse3.3版本的一些内容完全迁移到Eclipse3.6...6.5 实例:文本编辑器实现 .................

    JOnAS Eclipse PlugIn-开源

    这个开源项目将Jonas(来自ObjectWeb(www.objectweb.org/jonas)的EJB容器)集成到开发工具Eclipse(www.eclipse.org)中。

    deba-eclipse-util-plugin:从 code.google.compdeba-eclipse-util-plugin 自动导出

    简介 我已经在 Windows 中使用 eclipse 编辑器为 java 开发活动开发了一个小的 eclipse 实用程序插件。 它具有以下特点。 复制文件路径(Windows 样式、多选) 复制文件路径(Unix 样式,多选) 将文件和文件夹...

    编写properties文件的Eclipse插件

    在此想和大家分享一个不错的编写properties文件的Eclipse插件(plugin),有了它我们在编辑一些简体中文、繁体中文等Unicode文本时,就不必再使用native2ascii编码了。您可以通过Eclipse中的软件升级(Software ...

    Eclipse_Swt_Jface_核心应用_部分19

    第3章 Eclipse开发环境概述 22 3.1 Eclipse界面一览 22 3.2 Eclipse项目的文件结构 23 3.2.1 设置编译后.class文件的保存目录 23 3.2.2 导入项目使用的包 25 3.2.3 设置编译方式 26 3.2.4 运行程序 27 ...

    jbc:Java字节码编辑器Eclipse插件

    JBC是一个eclipse插件,使开发人员可以查看和编辑eclipse中包含Java字节代码(* .class)的文件。 这样做的方式是让专门的编辑器打开.class文件,并将二进制代码显示为文本DSL,而关键字则将字节序列插入。 更改...

    新版Android开发教程.rar

    � 源代码完全开放,便于开发人员更清楚的把握实现细节,便于提高开发人员的技术水平,有利于开发 出 更具差异性的应用。 � 采用了对有限内存、电池和 CPU 优化过的虚拟机 Dalvik , Android 的运行速度比想象的要...

    Bukkit Plugin Editor:简化 Bukkit 插件开发的开发-开源

    这个项目是一个增强的文本编辑器,因为将能够打开 Eclipse 和 IntelliJ 项目/模块并编辑它们并相应地编译它们。 它还能够为那些使用 Maven 的人生成 pom.xml 文件,并运行一个内部 CraftBukkit 服务器来自动测试 ...

    Java开发技术大全 电子版

    14.2开发工具Eclipse简介438 14.2.1Eclipse的安装与配置438 14.2.2用Eclipse创建一个项目440 14.3AWT组件简介444 14.3.1AWT组件的层次结构445 14.3.2AWT中的基本组件和子包446 14.3.3AWT组件通用属性与方法448...

    网狐荣耀版开发使用常见问题解答

    在网狐荣耀版开发调试过程中,复制文本时,提示“复制非法内容”,开始吓一跳,没有什么非法内容啊?也没有禁词,也没有国家不允许的内容。最后通过程序查看,原来是平台的问题。换安卓、苹果系统就好了。 四、最新...

    Android项目源码PHPHub社区非官方Android客户端.zip

    注意:本项目使用android studio开发,eclipse可能无法直接使用。 本项目是PHPHub 社区非官方 Android 客户端, App UI 风格遵循了 Google Material Design 设计风格, 项目架构使用了 MVP 模式, 数据处理使用了 ...

    JSP 程序设计从入门到精通 PDF 教程

     附录3 图解利用Eclipse3+Lomboz3+Tomcat开发JSP 335    本书较为全面地介绍了JSP技术,由浅入深、循序渐进地介绍了JSP的运行系统,基本概念,语法规范及其相关内容,从基本的JSP概述、与其他技术的对比,到JSP...

    t淘淘商城项目 商城项目 视频和源码教程 详细

    l JSP、JSTL、jQuery、jQuery plugin、EasyUI、KindEditor(富文本编辑器)、CSS+DIV l Redis(缓存服务器) l Solr(搜索) l httpclient(调用系统服务) l Mysql l Nginx(web服务器) 2.4. 开发...

    java初学者必看

    2.6 集成开发环境Eclipse介绍 2.6.1 Eclipse下载与安装 2.6.2 Eclipse的透视图 2.6.3 Eclipse的视图(View) 2.6.4 Eclipse的编辑器 2.6.5 Eclipse的工具栏和菜单栏 2.6.6 使用Eclipse编写HelloWorld程序 2.7 ...

    Ext Js权威指南(.zip.001

    1.4.4 在eclipse中实现智能提示 / 32 1.5 如何获得帮助 / 32 1.6 本章小结 / 33 .第2章 从“hello world”开始 / 34 2.1 获取ext js 4 / 34 2.2 配置使用ext js库 / 35 2.3 编写“hello world”程序 / 37 2.4...

Global site tag (gtag.js) - Google Analytics