构建基于 CDT 的编辑器,第 5 部分: 将 PDOM 用于代码完成
2009-12-19 00:00:00 来源:WEB开发网CCompletionProcessor2 找到创建建议的类后,它查找能够对这些建议进行排序的类。它在工作台的插件扩展中搜索 org.eclipse.cdt.ui.proposalFilters 扩展点的扩展。这个扩展点的模式和补全贡献器的模式相似,主要包含一个 <class> 元素。在这种情况下,该类必须实现 IProposalFilter 接口,此接口的 filterProposals() 方法接受一个 CCompletionProposal 数组,并返回一个过滤过的 CCompletionProposal 数组。
如果不创建自己的扩展,CCompletionProcessor2 会用 DefaultProposalFilter 对建议进行排序。使用 CCompletionProposalComparator 将这些建议按字母表顺序排序,并删除掉有相同名称和返回类型的建议。排序和过滤完这些建议后,它们就可以在编辑器中显示了。接下来将讨论这个步骤。
显示代码完成建议
ContentAssistant 的首要任务之一是创建一个 CompletionProposalPopup。这就是 图 1 中奇迹般出现的帮助补全代码的黄色框。最初,它还是隐藏着的,但在 ContentAssistant 调用其 showProposals() 时出现。
这个方法很重要,首先,它让 ContentAssistant 提出能显示的建议。然后,创建一个 Control,并配置其尺寸、位置、颜色和布局。它在 Control 中构建一个 Table,并为每个建议添加一个 TableItem。使该 Control 可见,并等待用户做出选择。
每个 ICCompletionProposal 都有一个描述如何将建议(如果被选中)插入文本的 apply() 方法。在 CDT 中,建议仅访问 Document、确定需要更改哪部分和插入文本。可以通过更改这个方法添加自己的功能。然后,当应用该建议时,弹出框会隐藏起来,用户可以继续编辑 Document。
更新 BBCDT
为保持 BBCDT 的简洁,我为 DOMCompletionContributor、PDOMCompletionContributor 和 KeywordCompletionContributor 添加了代码。我本可以为 TemplateEngine 添加代码,但模板需要大量的代码来集成。我鼓励您试一下。
- ››基于IP地址的vsftp服务器
- ››构建Windows 8风格应用23-App Bar概述及使用规范
- ››基于MySQL 水平分区的优化示例
- ››基于CentOS5的Linux下pptp和openvpn的搭建及配置
- ››构建域名服务器(DNS)
- ››基于JavaScript的网页版塔防游戏
- ››基于Android平台 QQ大战360手机游戏爆红
- ››构建Android平台Google Map应用
- ››基于Windows Azure的云计算应用设计
- ››构建WinForm 通用速选(全选、反选、清空)组件
- ››基于AES算法实现对数据的加密
- ››基于SoPC目标板Flash编程设计的创建及应用
更多精彩
赞助商链接