Netbeans 开发之 添加自定义面板到现有编辑器
为了给我自己的 Netbeans插件 Foxbeans 添加功能,所以我最近研究了一下NetBeans插件的开发。这里会记录一些我的发现,以便其他人可以参考。作为第一篇,我先谢谢如何添加自定义面板。先说说如何给现有文件编辑器添加面板。这里我的例子是html编辑器,完整源代码在这里,效果如下,拖到网页上就添加一个 :):
大
的大致工作思路是用一个XML
(下面说的smile.xml)文件定义面板中的一个项。这包含它的名称,描述,图标,以及实现它的类名。layer.xml中引用这个文件,把它加入一
个所谓的folder中,每个编辑器可以使用一到多个这种folder中的项。html编辑器使用的是HTMLPalette
(JSP使用JSPPalette).
你可以将你的项加入到它的folder中。如果你做过Firefox插件的话,你会看到他们使用的是相同的思路。在Firefox中,这叫
overlay,也就是覆盖。实际上也不是覆盖,而是添加。一些动态语言里有这种类似的语法。你可以向一个已经在其他地方定义的类里添加新的属性和方法。
扯远了。:)
大致的步骤如下:
1. 新建一个NetBeans模块:
2. 新建一个XML文件,方法是在菜单里选新建->XML->XML文档,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!--
Document : smile.xml
Created on : 2008年3月16日, 上午11:03
Author : wind
Description:
Purpose of the document follows.
-->
<!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="com.teesoft.palettedemo1.smile" />
<icon16 urlvalue="com/teesoft/palettedemo1/smile16.png" />
<icon32 urlvalue="com/teesoft/palettedemo1/smile32.png" />
<description localizing-bundle="com.teesoft.palettedemo1.Bundle"
display-name-key="NAME_smile"
tooltip-key="HINT_smile" />
</editor_palette_item>
3. 新建一个smile.java
内容如下:
package com.teesoft.palettedemo1;4. 下载 JTextComponectUtils.java. 这个是基于NetBeans中HTMLPaletteUtilities.java 。
import javax.swing.text.BadLocationException;
import javax.swing.text.JTextComponent;
import org.openide.text.ActiveEditorDrop;
import org.openide.util.Exceptions;
/**
*
* @author wind
*/
public class smile implements ActiveEditorDrop {
public boolean handleTransfer(JTextComponent jTextComponent) {
try {
JTextComponentUtils.insert(":)", jTextComponent);
} catch (BadLocationException ex) {
Exceptions.printStackTrace(ex);
}
return true;
}
}
5. layer.xml的内容改为下面的内容:
<?xml version="1.0" encoding="UTF-8"?>6. Bundle.properties内容如下:
<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
<filesystem>
<folder name="HTMLPalette">
<folder name="Emotions">
<attr name="SystemFileSystem.localizingBundle" stringvalue="com.teesoft.palettedemo1.Bundle"/>
<attr name="originalFile" stringvalue="Emotions"/>
<file name="smile.xml" url="nbresloc:/com/teesoft/palettedemo1/smile.xml"/>
</folder>
</folder>
</filesystem>
OpenIDE-Module-Name=PaletteDemo1
NAME_smile=smile
HINT_smile=smile
Emotions=Emotions
7. 在项目上点右键,属性中选库,将添加如下四个库(如果你不加,项目就没法编译,你可以将找不到的库的名字复制下来,点下图中添加按钮,粘贴类名,它会自动找到你需要的库):

Technorati Tags: netbeans, palette, 面板, foxbeans









nice
发表于 wow gold 在 2008年11月03日, 09:06 上午 CST #