WEB开发网
开发学院软件开发Java 基于 JFace Text Framework 构建全功能代码编辑器... 阅读

基于 JFace Text Framework 构建全功能代码编辑器: 第 4 部分:Content Assistant

 2010-03-18 00:00:00 来源:WEB开发网   
核心提示: 这些方法牵涉到了一些概念,我们来一一的解释它们:computeCompletionProposals:这个就是所有 Proposal 的来源了,基于 JFace Text Framework 构建全功能代码编辑器: 第 4 部分:Content Assistant(3),返回的类型是 IComp

这些方法牵涉到了一些概念,我们来一一的解释它们:

computeCompletionProposals:这个就是所有 Proposal 的来源了,返回的类型是 ICompletionProposal 数组,ICompletionProposal 代表的就是单个的自动完成选项。

computeContextInformation;Context Information(上下文信息)是个新概念,它在这里表示你选择了某个 Proposal 之后,会有一个提示信息弹出来,那个就叫上下文信息。要注意它和上面提到过的 Additional Info 是不同的东西。

getCompletionProposalAutoActivationCharacters:这个方法引入了一个 Auto Activation(自动激活)的概念,所谓自动激活就是在某种条件下 Proposal Popup 自动弹出。这个“某种条件”指的是一些字符,比如最常用的应该是“.”号。

getContextInformationAutoActivationCharacters:上下文信息也有自动激活的功能

getErrorMessage:如果内容提示无法找到任何 Proposal,它可以返回一个错误信息给用户

getContextInformationValidator:上下文信息是可以进行校验的,如果失败,上下文信息不会被显示

computeCompletionProposals 方法显然是必须实现的,我添加了一个 ExprContentAssistProcessor 类,下面是它的实现方式:

清单 3. ExprContentAssistProcessor 实现了 IContentAssistProcessor 接口

public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int offset) { 
 // get document 
IDocument doc = viewer.getDocument(); 
 
 // get tree 
Tree tree = TreeManager.getTree(doc); 
 if(tree == null) 
 return null; 
 
 // get current selected range 
Point range = viewer.getSelectedRange(); 
 
 // get all declared variables 
List<String> variables = TreeHelper.getVariables(tree); 
 
 // create proposals 
List<ICompletionProposal> proposals = new ArrayList<ICompletionProposal>(); 
 for(String var : variables) { 
 proposals.add(new CompletionProposal( 
  var, range.x, range.y, var.length(), null, var, null, "Add your info here")); 
 } 
 return proposals.toArray(new ICompletionProposal[proposals.size()]); 
} 

上一页  1 2 3 4 5  下一页

Tags:基于 JFace Text

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