WEB开发网
开发学院软件开发Java 构建基于 CDT 的编辑器,第 5 部分: 将 PDOM 用于... 阅读

构建基于 CDT 的编辑器,第 5 部分: 将 PDOM 用于代码完成

 2009-12-19 00:00:00 来源:WEB开发网   
核心提示: CCompletionProcessor2 找到创建建议的类后,它查找能够对这些建议进行排序的类,构建基于 CDT 的编辑器,第 5 部分: 将 PDOM 用于代码完成(6),它在工作台的插件扩展中搜索 org.eclipse.cdt.ui.proposalFilters 扩展点的扩展,这个扩展

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 添加代码,但模板需要大量的代码来集成。我鼓励您试一下。

上一页  1 2 3 4 5 6 7  下一页

Tags:构建 基于 CDT

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接