当前位置:主页   - 电脑 - 程序设计 - JAVA
NetBeans Editor Extension 模块教程
来源:网络   作者:   更新时间:2012-08-16
收藏此页】    【字号    】    【打印】    【关闭

  安装软件

  开始之前,需要在您的计算机上安装以下软件:

  NetBeans IDE 5.0

  Java Standard Development Kit (JDK!") version 1.4.2或 5.0

  安装示例

  采用以下步骤来安装示例:

  解压缩附加的文件。

  在 IDE 中,选择 File>Open Project,然后浏览到包含已解压缩文件的文件夹。打开模块项目。其形式如下:

NetBeans Editor Extension 模块教程

  右键单击项目节点并在 Target Platform 中选择 Install/Reload。将打开目标平台并安装该模块。

  通过使用该模块来验证其是否已正确安装,如使用模块部分所述。

  知道了最终结果后,将从头开始创建模块,并且在创建的同时了解每个部分。

  设置模块项目

  开始编写模块前,必须确保正确地设置了项目。NetBeans IDE Dev 提供一个向导,用于设置模块所需的所有基本文件。

  创建模块项目

  选择 File > New Project (Ctrl-Shift-N)。在 Categories 下,选择 NetBeans Plug-in Modules。在 Projects 下,选择 Module Project 并单击 Next。

  在 Name and Location 面板中,在 Project Name 中键入 ShowXMLStructure。将 Project Location 更改为您计算机上的任何目录,如 c:mymodules。选中 Standalone Module 单选按钮。选中 Set as Main Project 复选框。单击 Next。

  在 Basic Module Configuration 面板中,用 myorg 替换 Code Name Base 中的 yourorghere 并将 ShowXMLStructure 更改为 xmltree,从而整个 Code Name Base 为 org.myorg.xmltree。向 Module Display Name 中添加空格将其更改为 Show XML Structure。留出本地化包和 XML 层的位置,以便它们存储在名为 org/myorg/xmltree 的包中。单击 Finish。

  IDE 创建 Show XML Structure 项目。该项目包含所有资源和项目元数据,如该项目的 Ant 构建脚本。该项目在 IDE 中打开。您可以在 Projects 窗口 (Ctrl-1) 中查看其逻辑结构,在 Files 窗口 (Ctrl-2) 中查看其文件结构。例如,现在 Projects 窗口应该如下所示:

NetBeans Editor Extension 模块教程

  有关以上每个文件的基本信息,请参阅 NetBeans 插件模块的快速入门指南。

  指定模块的依存关系

  您需要将几个属于 NetBeans API 的类设为子类。每个类都将被声明为模块依存关系。使用 Project Properties 对话框来执行此操作。

  在 Projects 窗口中,右键单击 System Properties 项目,然后选择 Properties。

  对于以下每个 API,在 Libraries 面板中,单击“Add...”,从 Module 列表中选择名称,然后单击 OK 确认:

  I/O APIs

  Nodes API

  Text API

  Utilities API

  Window System API

  单击 OK,退出 Project Properties 对话框。

  在 Projects 窗口中,双击 Project Metadata 并注意您选择的 API 是否声明为模块依存关系:

  编写模块代码

  创建操作

  右键单击项目节点并选择 New > File/Folder。在 Categories 下,选择 NetBeans Module Development。在 Projects 下选择 Action。单击 Next。

  在 Action Type 面板中,单击 Conditionally Enabled。选择 EditorCookie,它是允许 Source Editor 访问该 action 的类名称,如下所示:

NetBeans Editor Extension 模块教程

  单击 Next。

  在 GUI Registration 面板中,选择 Category 下拉列表中的“Edit”类别。Category 下拉列表控制操作在 IDE 的 Keyboard Shortcuts 编辑器中显示的位置。接下来,选择 Editor Contect Menu Item,然后选择 text/xml MIME 类型,如下所示:

NetBeans Editor Extension 模块教程

  注意到您可以设置菜单项的位置,并且可以将它与其之前和之后的菜单项分离。单击 Next。

  在 Name and Location 面板中,键入 ShowXMLStructureAction 作为 Class Name,并键入 Show XML Structure Action 作为 Display Name。上下文菜单提供的菜单项不显示图标。因此,单击 Finish,ShowXMLStructureAction.java 便添加到包中。

  在 Source Editor 中,向 performAction 方法中添加以下代码?code>  public void performAction(Node[] activatedNodes) {
    EditorCookie cookie = (EditorCookie)activatedNodes[0].getCookie(EditorCookie.class);
    String tabName = NbBundle.getMessage(ShowXMLStructureAction.class,"LBL_tabName");
    // "XML Tree" tab is created in output window for writing the list of tags
    InputOutput io = IOProvider.getDefault().getIO(tabName,false);
    io.select(); //XML Tree tab is selected
    OutputWriter writer = io.getOut();
    try {
      writer.reset(); //clean the output window
      java.io.InputStream is = ((org.openide.text.CloneableEditorSupport)cookie).getInputStream();
      parse(new InputSource(is));
      is.close();
      for (int i=0;i<tags.length;i++) {
        writer.println(tags[i]); //write tag to output window
      }
    } catch (IOException ex) {
    } catch (SAXException ex){
      writer.println("Parse Error: "+ex.getMessage());
    }
    writer.flush();
    writer.close();
  }

  添加新方法:   /** Parses XML document and creates the list of tags
   */
  private void parse(InputSource is) throws IOException, SAXException {
    XMLReader xmlReader = XMLUtil.createXMLReader();
    TagHandler handler = new TagHandler();
    xmlReader.setContentHandler(handler);
    xmlReader.parse(is);
    tags = handler.getTags();
  }

  在源文件的顶部声明 tags 变量:  private String[] tags;

  按 Alt-Shift-F。IDE 会自动将 import 声明添加到类的顶部。某些代码仍然标有红色下划线,表示并不是所有所需的包都位于该类路径上。右键单击项目节点,选择 Properties,然后在 Project Properties 对话框中,单击 Libraries。在 Libraries 窗格的顶部单击 Add 并添加 Dialogs API。

  在 ShowXMLStructureAction.java 类中,再次按 Alt-Shift-F。由于 IDE 在 Dialogs API 中找到了所需的包,因此红色下划线消失。

  本地化操作

  将显示名称添加到 Bundle.properties 文件:ACT_name=Show XML Structure
LBL_tabName=XML Structure

  按 Ctrl-S 保存文件。

  创建标记句柄

  在 Projects 窗口中,展开项目节点,然后展开 Source Packages 节点,接着右键单击 org.myorg.xmltree 节点。选择 New > File/Folder。在 Categories 下选择 Java Classes。在 File Types 下,选择 Java Class。单击 Next 并在 Class Name 中键入 TagHandler。单击 Finish。新 Java 类将在 Source Editor 中打开。

  用以下代码替换默认代码:package org.myorg.xmltree;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
   /** Specific XML handler used for creating list of starting and ending tags, e.g. :
   * <AAA>
   *  <BBB>
   *   <CCC/>
   *  </BBB>
   * </AAA>
   */
  public class TagHandler extends org.xml.sax.helpers.DefaultHandler {
private final int indentLength=2;   
    private java.util.List tagList;
    private String indent;
2   private String space;
    private String lastElement;
    TagHandler() {
      tagList = new java.util.ArrayList();
      StringBuffer indentBuf = new StringBuffer();
      for (int i=0;i<indentLength;i++) indentBuf.append(' ');
      space=indentBuf.toString();
      indent="";
    }
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
      tagList.add(indent+"<"+qName+">");
      indent+=space;
  h   lastElement=qName;
    }
    public void endElement(String uri, String localName, String qName) throws SAXException {
      indent=indent.substring(indentLength);
      if (qName.equals(lastElement)) {
        int lastIndex = tagList.size()-1;
        String lastInList = (String)tagList.get(lastIndex);
        String replacedString = lastInList.replace(">","/>");
        tagList.set(lastIndex,replacedString);
      } else {  
        tagList.add(indent+"</"+qName+">");
      }
      lastElement=null;
    }
    String[] getTags() {
      String[] tags = new String[tagList.size()];
      tagList.toArray(tags);
      return tags;
    }
  }

  按 Ctrl-S 保存文件。

  构建和安装模块

  IDE 使用 Ant 构建脚本来构建和安装您的模块。构建脚本是创建模块项目时为您创建的。

  安装模块

  在 Projects 窗口,右键单击 Show XML Structure 项目并在 Target Platform 中选择 Install/Reload。

  模块即在目标 IDE 或平台中构建和安装。目标 IDE 或平台打开,您可以试用新的模块。默认目标 IDE 或平台是由开发 IDE 的当前实例使用的安装平台。注意到当您运行模块时,您将使用临时测试用户目录,而不是开发 IDE 的用户目录。

  使用模块

  选择 File > New Project (Ctrl-Shift-N) 创建一个新项目。

  在 Files 窗口 (Ctrl-2) 中,展开项目节点,接着展开 nbproject 节点。双击 build-impl.xml,以便它在 Source Editor 中打开。

  右键单击 Source Editor 中的任何位置并注意名为“Show XML Structure”的新弹出菜单项:

NetBeans Editor Extension 模块教程

  选择该菜单项并注意标记句柄将所有标记打印到位于 IDE 底部的 Output 窗口:

NetBeans Editor Extension 模块教程

  新文件类型将在 Source Editor 中打开。例如,打开一个 Java 类。右键单击 Source Editor 中的任何位置并注意上下文菜单中不包含新的弹出菜单项:

  创建可共享的模块二进制文件

  在 Projects 窗口中,右键单击 Show XML Structure 项目,并选择 Create NBM。

  将创建 NBM 文件并且可以在 Files 窗口中查看它 (Ctrl-2):

NetBeans Editor Extension 模块教程

  通过电子邮件使其他人也可以使用。

  卸载模块

  关闭您安装模块时打开的 IDE 或 Platform 实例。

  在 Projects 窗口中右键单击该项目节点,并选择 Clean。现在您将不再有模块安装在 IDE 或 Platform 中。

  下一步

  有关创建和开发模块的更多信息,请参见以下资源:

  模块开发者资源

  NetBeans API 列表(当前开发版本)

  新的 API 支持建议

  版本控制

版本日期更改
1 2005 年 7 月 11 日 初始版本
2 2005 年 9 月 27 日 添加了 Action 向导

  将“NetBeans Tag Handler 插件教程”重新命名为“NetBeans Source Editor Extension 模块教程”。

  添加了下面的事件 7。

3 2005 年 9 月 28 日 由于“Source Editor”不包含 SQL 编辑器(还可以在本教程中使用一2步骤进行扩展),因此,对该教程进行重新命名。

  重新编写介绍性段落。

事件编号 描述 状态
1 代码和教程本身需要检查。 有待解决。
2 阶段 III 和阶段 IV 完成之后,需要更新教程。 有待解决。
3 本教程中使用的一些 API 拥有已废弃的方法。这将在 Output 窗口中产生错误,但是不应该影响模块的功能。 有待解决。
4 将为所有 API、类和方法添加清晰的解释和到 Javadoc 的链接。还要添加每个依存关系的链接以及本教程需要它们的原因。 有待解决。
5 应该提到 JSP 编辑器、HTML 编辑器等其他标识符。例如,不使用“xml”(在 layer.xml 中),而使用“html”、“x-properties”、“base”等等。 有待解决。
6 解释什么是 cookie。解释什么是 cookie 操作。 有待解决(
7 由于当前在可下载的代码中标记句柄和显示 XML 操作是单独的文件,而它们又是相同的文件,因此需要更改可下载代码。由于相同的原因,也必须更改一个文件的屏幕截图,而不是更改上面显示的两个文件的屏幕截图。 有待解决。
</p>
其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明