WEB开发网      濠电娀娼ч崐濠氬疾椤愶附鍋熸い鏍ㄧ〒闂勫嫰鏌﹀Ο渚Ц闁诲氦顕ч湁婵犲﹤楠告禍鍓х磼鏉堛劌绗氶柟宄版嚇閹晠宕归銈嗘濠电偞鍨堕幐鎾磻閹捐秮褰掓偐閻戞﹩妫勯梺鎼炲妼鐎涒晝绮嬪澶樻晝闁挎繂鏌婇敃鍌涚厵閻庢稒锚閻忥絾绻濇繝鍐ㄧ伌闁诡垰鍟村畷鐔碱敂閸♀晙绱樺┑鐐差嚟婵儳螞閸曨剚鍙忛柍鍝勬噹缁€澶嬬箾閹存繄锛嶆鐐灲閹綊宕惰濡插鏌涢妸銉ヮ劉缂佸倸绉归弫鎾绘晸閿燂拷 ---闂備焦瀵уú鈺呭箯閿燂拷
开发学院软件开发Java 基于 JFace Text Framework 构建全功能代码编辑器... 阅读

基于 JFace Text Framework 构建全功能代码编辑器: 第 5 部分:Text Decoration

 2010-03-18 00:00:00 来源:WEB开发网 闂備線娼уΛ鎾箯閿燂拷闂備礁鎲¢崹鐢垫崲閹扮増鍎嶆い鎺戝€甸崑鎾斥槈濞嗗秳娌紓鍌氱▌閹凤拷濠电姭鎷冮崨顓濈捕闂侀潧娲ゅú銊╁焵椤掍胶鈯曢柕鍥╁仧缁辩偤鏁撻敓锟�闂備線娼уΛ鎾箯閿燂拷  闂備胶枪缁绘鈻嶉弴銏犳瀬闁绘劕鐏氱€氼剟姊洪崹顕呭剰闁逞屽墮缁夊綊寮婚妸褉鍋撻棃娑欏暈闁伙綀浜埀顒傛暬閸嬪﹪宕伴弽褏鏆﹂柨鐕傛嫹
核心提示: 触发语法检查万事具备,只欠东风,基于 JFace Text Framework 构建全功能代码编辑器: 第 5 部分:Text Decoration(5),现在只要找到一个合适的时机进行语法检查,并安装我们的标注就可以了,文本改变事件是一个选择,也是最简单的选择

触发语法检查

万事具备,只欠东风。现在只要找到一个合适的时机进行语法检查,并安装我们的标注就可以了。文本改变事件是一个选择,也是最简单的选择,所以我新建了一个 SyntaxChecker 类,并把这个类注册为文本事件监听器。让我们看看文本改变时它会做些什么:

清单2. SyntaxChecker

        public void documentChanged(DocumentEvent event) { 
 // get model 
 IAnnotationModel model = viewer.getAnnotationModel(); 
 if(model == null || !(model instanceof IAnnotationModelExtension)) 
 return; 
 
 // create map contains annotations to be added 
 Map<Annotation, Position> toBeAdded = new HashMap<Annotation, Position>(); 
 
 // get annotations to be removed 
 Annotation[] toBeRemoved = getAnnotations(new String[] { 
     "org.eclipse.ui.workbench.texteditor.error" 
 }); 
 
 // get document 
 IDocument doc = event.getDocument(); 
 
 // parse it 
 TreeManager.getTree(doc); 
 
 // get errors 
 Map<Token, String> errors = SharedParser.getLastErrors(); 
 
 // add annotation 
for(Token token : errors.keySet()) { 
 CommonToken ct = (CommonToken)token; 
 Annotation anno = new ExprAnnotation("org.eclipse.ui.workbench.texteditor.error", 
  errors.get(token)); 
 Position pos = new Position( 
  ct.getStartIndex(), ct.getStopIndex() - ct.getStartIndex() + 1); 
 toBeAdded.put(anno, pos); 
 } 
 
 // replace annotation one time, this provides a better performance 
 // than remove/add one by one 
 ((IAnnotationModelExtension)model).replaceAnnotations(toBeRemoved, toBeAdded); 
} 

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

Tags:基于 JFace Text

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