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

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

 2010-03-18 00:00:00 来源:WEB开发网   
核心提示: 当你在 Problem 视图中右键点击一个错误的时候,弹出菜单中有一个 Quick Fix 的菜单项,基于 JFace Text Framework 构建全功能代码编辑器: 第 7 部分:Quick Assistant(4),如果 canFix()返回 false,那么这个菜单项就会变灰而不可用

当你在 Problem 视图中右键点击一个错误的时候,弹出菜单中有一个 Quick Fix 的菜单项,如果 canFix()返回 false,那么这个菜单项就会变灰而不可用了。由于我的例子中没有创建 Marker,所以这个方法用处有限。

canAssist 方法给了你一个检查不同上下文的机会,这样你就可以通过不同的上下文信息激活不同的快速帮助了。computeQuickAssistProposals 方法比较简单,除了名字和参数不同,它和内容提示中的 computeCompletionProposals 基本类似。

其它的方法都和内容提示类似,来看看例子中是怎么实现这个接口的,我只列出了 computeQuickAssistProposals,其它方法的实现都非常简短,在此省略。

清单4. ExprQuickAssistProcessor 实现了 IQuickAssistProcessor 接口

public class ExprQuickAssistProcessor implements IQuickAssistProcessor { 
 // other code 
 … 
 
public ICompletionProposal[] computeQuickAssistProposals( 
 IQuickAssistInvocationContext invocationContext) { 
 // get viewer 
 ISourceViewer viewer = invocationContext.getSourceViewer(); 
 
 // get annotation 
Annotation anno = getAnnotation(viewer, invocationContext.getOffset()); 
if(anno == null || !canFix(anno)) 
 return null; 
 
 // get doc 
 IDocument doc = viewer.getDocument(); 
 
 // get tree 
 Tree tree = TreeManager.getTree(doc); 
 if(tree == null) 
 return null; 
 
 // get all declared variables 
 List<String> variables = TreeHelper.getVariables(tree); 
 
 // create proposals 
Position pos = viewer.getAnnotationModel().getPosition(anno); 
List<ICompletionProposal> proposals = new ArrayList<ICompletionProposal>(); 
 for(String var : variables) { 
  proposals.add(new CompletionProposal( 
  var, pos.getOffset(), pos.getLength(), var.length(), 
  null, var, null, "Add your info here")); 
 } 
 return proposals.toArray(new ICompletionProposal[proposals.size()]); 
 } 
} 

上一页  1 2 3 4 5  下一页

Tags:基于 JFace Text

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