基于 JFace Text Framework 构建全功能代码编辑器: 第 4 部分:Content Assistant
2010-03-18 00:00:00 来源:WEB开发网我们遍历语法树得到了所有的变量,你可以看到整个实现代码在 ANTLR 以及一些工具类的帮助下显得非常简洁。注意我们为每个变量创建了一个 CompletionProposal,它的构造函数参数非常多,最后一个就是 Additional Info,我这里只是填了一些无用的信息作为演示之用。其它的参数涉及自动完成需要的所有信息,比如插入的字符串,在哪里插入,图标等等。
配置
又到了将我们的实现和 JTF 连接起来的时间,还是修改 ExprConfiguration, 要覆盖的方法变成了 getContentAssistant:
清单 4. 让 JTF 知道我们的内容提示实现
public IContentAssistant getContentAssistant(ISourceViewer sourceViewer)
{
ContentAssistant assistant = new ContentAssistant();
assistant.setInformationControlCreator(new IInformationControlCreator() {
public IInformationControl createInformationControl(Shell parent)
{
DefaultInformationControl control = new DefaultInformationControl(parent);
return control;
}
});
// add assist processor
IContentAssistProcessor processor = new ExprContentAssistProcessor();
assistant.setContentAssistProcessor(processor, IDocument.DEFAULT_CONTENT_TYPE);
return assistant;
}
注意我们第一步实现的只是一个 Processor,还不是真正的内容提示管理器,幸运的是 JTF 为我们提供了 ContentAssistant,我们只要新建一个就可以了。第二行看上去有些不解,稍后我会解释。请注意最后一段,大家可以发现内容提示也是和文本类型绑定到一起的。
更多精彩
赞助商链接