html的标签提示

来源:互联网 发布:mysql full out join 编辑:程序博客网 时间:2024/06/11 23:48

当我们在eclipse用编辑器编写源代码时,点击ctrl+space快捷键时,总会有一些提示信息,以便我们快速编辑。比如我们 用wst 的html编辑器时,效果如下:提示信息

首先研究这个功能怎么实现的,跟踪代码wst的有关类,及之间的关系。只有搞清这个关系,才能扩展加上自己的东西。

类图

其中黄色的部分为wst的类,提示消息主要由这个类HTMLContentAssistProcessor实现,HTMLContentAssistProcessor实现了IContentAssistProcessor和IPropertyChangeListener接口。看这两个接口的名字就知道,一个是处理提示信息的,一个是处理监听事件的。而把这些类于editor关联起来,主要是由StructuredTextViewerConfiguration的getContentAssistProcessors方法实现。下面看看这个方法:

这个方法主要是根据不同的类型返回不同的提示类,所以我们要扩展这个功能,必须要重写这个方法,返回自己的提示类。

如上面的类图中,建立了ProducerHTMLStructuredTextViewerConfiguration类,重写了getContentAssistProcessors方法,返回CustomizedHTMLContentAssistantProcessor,CustomizedHTMLContentAssistantProcessor中要重写computeCompletionProposals方法,因此可以订制自动提示的功能了。

 

考虑到每个标签的提示信息都不一样,并且标签还会自定义的,所以我们要做成扩展点的形式。做成扩展点,首先要定义好接口,让别人去实现这个接口。也就是说一个标签(自定义的)对应一个类(这个类实现我们的接口),这种关系最好做一个manager类,从plugin.xml的扩展点读取信息,从而进行对应。然后从computeCompletionProposals中调用这些类,从而实现动态的扩展。

做成效果如下:结果

   其中标签的名字test:form,是要在实现自定义的扩展点里配置,三个提示消息时要实现这个扩展点的接口的类里处理的。

 

 

上面主要讲了wst提示消息的实现方式,以及扩展自己的思路,略懂插件开发的人调查调查wst基本上都可以做出来。最近受项目委托做一些调研,贴出代码可能会露出公司的名称,又懒得去改包名,还是不公布源代码了。

 

 

 

原创粉丝点击