站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Netbeans 专题NetBeans Code Snippet Module 教程

NetBeans Code Snippet Module 教程

摘要: NetBeans Code Snippet Module 教程 反馈 本教程演示如何向 HTML/JSP Component Palette 添加代码片段。代码片段是一小段代码,可以从组件调色板中拖出...
NetBeans Code Snippet Module 教程

反馈

本教程演示如何向 HTML/JSP Component Palette 添加代码片段。代码片段是一小段代码,可以从组件调色板中拖出并放在 Source Editor 中。它们用来加速编码的过程。HTML/JSP Component Palette 已拥有几个代码片段,但是您可能想添加一些其他的代码片段并与其他人共享。当您使用 IDE 创建包含您的代码片段的 NetBeans 模块时,IDE 为创建二进制的 NetBeans Module (NBM) 文件、分发文件并让它的收件人通过 Update Center 安装文件提供便利。

要创建代码片段,请使用 NetBeans Palette API。代码片段需要以下文件:

已经创建或向 NetBeans 模块添加以上文件之后,您在资源声明 XML 文件中声明它们,该文件是您使用 layer.xml 文件在 NetBeans System Filesystem 中注册的。

本教程将介绍以下主题:

安装完软件之后,本教程可以在 20 分钟之内完成。

有关使用模块的详细信息,请参阅 NetBeans 网站上的 NetBeans Development Project 主页。如果有问题,请访问 NetBeans Developer FAQ 或使用本页顶部的反馈链接。


安装软件

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


安装示例

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

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

  3. 右键单击项目节点并在 Target Platform 中选择 Install/Reload。将打开目标平台并安装该模块。
  4. 确保模块已正确安装:
    • 右键单击 newhtmlsnippets 项目节点并选择 New > File/Folder,然后在 Other 类别中选择 HTML File。单击 Next,然后单击 Finish。将打开 HTML 文件,其中显示 Component Palette 和一个附加代码片段,以及一个显示项目拖放结果的工具提示。

    • 将“New Line”项目拖动到 Source Editor 中,并注意到新的 <br> 标记已插入到光标的位置。
    • 右键单击 Component Palette,然后选择 Show Big Icons。注意到所有图表都变大了。

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


设置模块项目

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

创建模块项目

  1. 选择 File > New Project (Ctrl-Shift-N)。在 Categories 下,选择 NetBeans Plug-in Modules。在 Projects 下,选择 Module Project 并单击 Next。
  2. 在 Name and Location 面板中,在 Project Name 中键入 newhtmlsnippets。将 Project Location 更改为您计算机上的任何目录,如 c:\mymodules。选择 Standalone Module 单选按钮和 Set as Main Project 复选框。单击 Next。
  3. 在 Basic Module Configuration 面板中,用 org.netbeans.modules 替换 Code Name Base 中的 yourorghere,从而整个 Code Name Base 为 org.netbeans.modules.newhtmlsnippets。留出本地化包和 XML 层的位置,以便它们存储在名为 org/netbeans/modules/newhtmlsnippets 的包中。单击 Finish。

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

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

指定模块的依存关系

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

  1. 在 Projects 窗口中,右键单击 newhtmlsnippets 项目节点并选择 Properties。在 Project Properties 对话框中单击 Libraries。
  2. 对于以下每个 API,单击“Add...”,从 Module 列表中选择名称,然后单击 OK 确认:

  3. 单击 OK,退出 Project Properties 对话框。
  4. 在 Projects 窗口中,展开 Important Files 节点,双击 Project Metadata 节点,并注意查看您选择的 API 是否按模块依存关系进行了声明:
  5. <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://www.netbeans.org/ns/project/1">
        <type>org.netbeans.modules.apisupport.project</type>
        <configuration>
            <data xmlns="http://www.netbeans.org/ns/nb-module-project/2">
                <code-name-base>org.netbeans.modules.newhtmlsnippets</code-name-base>
                <standalone/>
                <module-dependencies>
                    <dependency>
                        <code-name-base>org.netbeans.modules.editor.lib</code-name-base>
                        <build-prerequisite/>
                        <compile-dependency/>
                        <run-dependency>
                            <release-version>1</release-version>
                            <specification-version>1.9.0.1</specification-version>
                        </run-dependency>
                    </dependency>
                    <dependency>
                        <code-name-base>org.netbeans.spi.palette</code-name-base>
                        <build-prerequisite/>
                        <compile-dependency/>
                        <run-dependency>
                            <release-version>0</release-version>
                            <specification-version>1.5</specification-version>
                        </run-dependency>
                    </dependency>
                    <dependency>
                        <code-name-base>org.openide.text</code-name-base>
                        <build-prerequisite/>
                        <compile-dependency/>
                        <run-dependency>
                            <specification-version>6.9</specification-version>
                        </run-dependency>
                    </dependency>
                </module-dependencies>
                <public-packages/>
            </data>
        </configuration>
    </project>

编写模块代码


创建代码片段

  1. 右键单击 org.netbeans.modules.newhtmlsnippets 节点并选择 New > Java Class。在 Class Name 中,键入 BR,确保选中 Package 下拉列表中的 org.netbeans.modules.newhtmlsnippets 包,然后单击 Finish。
  2. 用以下内容替换 BR.java 文件的默认内容:
    package org.netbeans.modules.newhtmlsnippets;
    
    import javax.swing.text.BadLocationException;
    import javax.swing.text.JTextComponent;
    import org.netbeans.modules.newhtmlsnippets.HTMLPaletteUtilities;
    import org.openide.text.ActiveEditorDrop;
    
    public class BR implements  ActiveEditorDrop {
       
        public BR() {
        }
       
        private String createBody() {
            String Br = "<br>";
            return Br;
        }
       
        public boolean handleTransfer(JTextComponent targetComponent) {
            String body = createBody();
            try {
                HTMLPaletteUtilities.insert(body, targetComponent);
            } catch (BadLocationException ble) {
                return false;
            }
            return true;
        }
       
    }

    右键单击 Source Editor,然后选择 Reformat Code (Ctrl-Shift-F)。

定义插入和格式

  1. 右键单击 org.netbeans.modules.newhtmlsnippets 节点并选择 New > Java Class。在 Class Name 中,键入 HTMLPaletteUtilities,确保选中 Package 下拉列表中的 org.netbeans.modules.newhtmlsnippets 包,然后单击 Finish。
  2. 用以下内容替换 HTMLPaletteUtilities.java 文件的默认内容:
    package org.netbeans.modules.newhtmlsnippets;
    
    import javax.swing.text.BadLocationException;
    import javax.swing.text.Caret;
    import javax.swing.text.Document;
    import javax.swing.text.JTextComponent;
    import org.netbeans.editor.BaseDocument;
    import org.netbeans.editor.Formatter;
    
    public class HTMLPaletteUtilities {
        public static void insert(String s, JTextComponent target)
        throws BadLocationException {
            insert(s, target, true);
        }
       
        public static void insert(String s, JTextComponent target, boolean reformat)
        throws BadLocationException {
           
            if (s == null)
                s = "";
           
            Document doc = target.getDocument();
            if (doc == null)
                return;
           
            if (doc instanceof BaseDocument)
                ((BaseDocument)doc).atomicLock();
           
            int start = insert(s, target, doc);
           
            if (reformat && start >= 0 && doc instanceof BaseDocument) {  // format the inserted text
                int end = start + s.length();
                Formatter f = ((BaseDocument)doc).getFormatter();
                f.reformat((BaseDocument)doc, start, end);
            }
           
            if (doc instanceof BaseDocument)
                ((BaseDocument)doc).atomicUnlock();
           
        }
       
        private static int insert(String s, JTextComponent target, Document doc)
        throws BadLocationException {
           
            int start = -1;
            try {
                //at first, find selected text range
                Caret caret = target.getCaret();
                int p0 = Math.min(caret.getDot(), caret.getMark());
                int p1 = Math.max(caret.getDot(), caret.getMark());
                doc.remove(p0, p1 - p0);
               
                //replace selected text by the inserted one
                start = caret.getDot();
                doc.insertString(start, s, null);
            } catch (BadLocationException ble) {}
           
            return start;
        }
    }

    右键单击 Source Editor,然后选择 Reformat Code (Ctrl-Shift-F)。


注册模块


声明资源

  1. 右键单击 org.netbeans.modules.newhtmlsnippets 节点并选择 New > File/Folder。在 XML 文件夹中选择 XML Document,然后单击 Next。在 File Name 中键入 BR。在 Folder 中 src\org\netbeans\modules\newhtmlsnippets 的结尾键入 \resources。单击 Finish。
  2. 用以下内容替换 BR.xml 文件的默认内容:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE editor_palette_item PUBLIC "-//NetBeans//Editor Palette Item 1.0//EN"
      "http://www.netbeans.org/dtds/editor-palette-item-1_0.dtd">
    
    <editor_palette_item version="1.0">
        <class name="org.netbeans.modules.newhtmlsnippets.BR" />
    
        <icon16 urlvalue="org/netbeans/modules/newhtmlsnippets/resources/BR16.png" />
        <icon32 urlvalue="org/netbeans/modules/newhtmlsnippets/resources/BR32.png" />
        <description localizing-bundle="org.netbeans.modules.newhtmlsnippets.Bundle"
                   display-name-key="NAME_html-BR"
                   tooltip-key="HINT_html-BR" />
    </editor_palette_item>

    右键单击 Source Editor,然后选择 Reformat Code (Ctrl-Shift-F)。

  3. 向新的 resources 文件夹中添加一个 16x16 像素的图标和一个 32x32 像素的图标。将它们命名为 BR16.pngBR32.png。它们还可以采用其他图标格式,如 GIF 或 JPG。确保在 BR.xml 文件中已正确声明该资源。
  4. 将以下内容添加到 Bundle.properties 文件:

    确保在 BR.xml 文件中已正确声明标签和提示。

注册资源

  1. 将以下标记添加到 layer.xml 文件中,置于 <filesystem> 标记之间:
    <folder name="HTMLPalette">
       <folder name="HTML">
          <file name="BR.xml" url="resources/BR.xml"/>
       </folder>
    </folder>
  2. 展开 Important Files 节点,再展开 XML Layer 节点,然后等待显示子节点。
  3. 展开 <this layer in context>。对应于在 IDE 中注册的每个模块的每个 layer.xml 文件所声明的每个文件夹,将将出现一个文件夹。注意到 HTMLPalette 文件夹标记为粗体。这就是您在自己的 layer.xml 文件中添加文件夹的位置。展开该文件夹并注意到它的子文件夹、HTML 也都是粗体。展开 HTML 文件夹,注意您声明的 BR.xml 资源声明文件已经被添加到其他模块提供的资源声明文件中。当您右键单击节点时,有几个选项可用:

  4. 拖动 BR.xml 节点并将其放置在 TABLE.xml 节点下面。双击 Important Files 中的 Layer XML 节点,注意已经添加了两个新标记,一个在 <file name="BR.xml" url="resources/BR.xml"/> 行的前面,一个在后面:

    当您将 BR.xml 节点拖放到 <this layer in context> 节点中时,IDE 会创建 <attr> 标记,用于将新的组件片段放置在现有组件片段之间。


构建和安装模块

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

安装模块

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

    模块即在目标平台中构建和安装。目标平台打开,您可以试用新的模块。默认目标平台是由开发 IDE 的当前实例使用的安装。

使用模块

确保模块已正确安装:

  1. 右键单击 newhtmlsnippets 项目节点并选择 New > File/Folder,然后在 Other 类别中选择 HTML File。单击 Next,然后单击 Finish。将打开 HTML 文件,其中显示 Component Palette 和一个附加代码片段,以及一个显示项目拖放结果的工具提示。

  2. 将“New Line”项目拖动到 Source Editor 中,并注意到新的 <br> 标记已插入到光标的位置。
  3. 右键单击 Component Palette,然后选择 Show Big Icons。注意到所有图表都变大了。

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

  1. 在 Projects 窗口中,右键单击 newhtmlsnippet 项目,并选择 Create NBM。

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

  2. 通过电子邮件使其他人也可以使用该模块。
  3. 收件人可以通过使用 Update Center 来安装该模块。从主菜单中选择 Tools > Update Center。

下一步

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


版本控制

版本
日期
更改
开放事件
1 2005 年 11 月 28 日 初始版本
  • 它与 Swing/AWT Components 相同吗?
  • 怎样使格式/缩进不同?
  • 需要添加对于添加自己的对话框以及对于预定义值的解释。
  • 需要新的 Component Palette 的屏幕截图,以便在现有的 Table 片段下显示新的片段。
  • 将添加使用 NetBeans API 的解释性文本。
  • 介绍如何在调色板之间通过阴影文件共享片段。
2 2005 年 12 月 2 日
3 2005 年 12 月 8 日




↑返回目录
前一篇: NetBeans Options Window Extension 模块教程
后一篇: NetBeans Project Sample 模块教程