快速业务通道

扩展NetBeans IDE 6.0中的C/C++编辑器以提供标记实例的高亮

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29
));
  public void caretUpdate(CaretEvent e) {
    bag.clear();
    bag.addHighlight(0, 5, defaultColors);
  }

  private final WeakReference<Document> weakDoc;
  public MarkOccurrencesHighlighter(Document doc) {
    bag = new OffsetsBag(doc);
    weakDoc = new WeakReference<Document> ((Document) doc);
    DataObject dobj = NbEditorUtilities.getDataObject(weakDoc.get());
    JEditorPane[] panes = CsmUtilities.getOpenedPanesInEQ(dobj.getCookie (EditorCookie.class));
    if (panes != null && panes.length > 0) {
      panes[0].addCaretListener(this);
    }
  }
  private final OffsetsBag bag;
  public OffsetsBag getHighlightsBag() {
    return bag;
  }
}本类尚未 提供任何智能功能。它只是向光标事件注册了一个侦听器,并高亮显示文档开头的符号。

创建并注册 HighlightsLayerFactory

现在我们创建 HighlightsLayerFactory ,来让 NetBeans 知道我们的高亮显示提供者。

向项目源文件添加一个新的 Java 类,并将其命名为 MarkOccurrencesHighlightsLayerFactory。

用下面的代码替 换新类中的代码:package org.netbeans.modules.markoccurrences;
import javax.swing.text.Document;
import org.netbeans.spi.editor.highlighting.HighlightsLayer;
import org.netbeans.spi.editor.highlighting.HighlightsLayerFactory;
import org.netbeans.spi.editor.highlighting.ZOrder;
public class MarkOccurrencesHighlightsLayerFactory implements HighlightsLayerFactory {

  public static MarkOccurrencesHighlighter getMarkOccurrencesHighlighter(Document doc) {
     MarkOccurrencesHighlighter highlighter = (MarkOccurrencesHighlighter) doc.getProperty(MarkOccurrencesHighlighter.class);
    if (highlighter == null) {
      doc.putProperty (MarkOccurrencesHighlighter.class, highlighter = new MarkOccurrencesHighlighter(doc));
    }
    return highlighter;
  }
  public HighlightsLayer[] createLayers(Context context) {
    return new HighlightsLayer[] {
       HighlightsLayer.create(
           MarkOccurrencesHighlighter.class.getName(),
           ZOrder.CARET_RACK.forPosition(2000),
          true,
           getMarkOccurrencesHighlighter(context.getDocument ()).getHighlightsBag())
    };
  }
}

我们已 经提供了一个 HighlightsLayerFactory 的实现,它用 MarkOccurrencesHighlighte类提 供的数据创建了一个高亮显示层。现在我们需要在 layer.xml 中注册这个类。打开 org.netbeans.modules.markoccurrences 包中的 layer.xml,并将其内容更改为以下内 容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem- 1_1.dtd">
<filesystem>
  <folder name="Editors">
    <folder name="text">
      <folder name="x- c++">
        <file name="org-netbeans-modules- markoccurrences-MarkOccurrencesHighlightsLayerFactory.instance" />
      </folder>
   

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号