NetBeans の WidgetFX と JFXtras のパレットモジュールを作ってみた(ただし外枠だけ)
また Java エディタ用のパレットモジュールのチュートリアルをやってみました。
ということなので、Java ではなく、JavaFX のパレットにも WidgetFX とそこで使っている JFXtras のコードスニペットを追加するモジュールを作ってみたいと思います。ただし、どのコードスニペットをパレットから使えたら便利なのかというのは私にはわからないので ^^;) 今回はモジュールの部分だけいくつか作ってみます。
参考にしたコードスニペットのチュートリアルです。基本的はこのとおりに作って行きます。
手順はこのようになります。
- モジュールプロジェクトの作成
- 必要なライブラリの追加
- パレットカテゴリの作成 (レイヤーXMLに folder を追加)
- パレット項目の作成 (レイヤーXMLに file を追加, パレット項目の XML ファイルの作成)
- 実行
- 修正

「基本モジュール構成」のパネルでは「XML レイヤーを生成」にチェックを入れておいてください。

作成されたプロジェクトは以下のようになります。resources フォルダはプロジェクトを作成した後に作りました。

プロジェクトノードで右クリックして「プロパティー」を選びます。必要なライブラリを追加します。フィルタに「palette」などと入力してライブラリを絞り込みます。

「共通パレット」と「テキスト API」を追加しました。

ではパレット項目を追加していきます。「重要なファイル」の「XML レイヤー」>「コンテキスト内のこのレイヤー」ノードを展開していきます。

すると「なんとかPalette」というノードが見つかります。JavaFX 用のパレットは「JavaFXPalette」以下に定義されています。新しいパレットカテゴリを作成するにはこの JavaFXPalette ノードでフォルダを作ります。

3つ作りました。「JFXtras Layout」、「JFXtras Shape」、「WidgetFX」です。変更のあった状態のものは太字で表示されます。

今度はプロジェクトにあるファイル layer.xml ノードを展開してみます。このレイヤー以下には作成されたフォルダのみが表示されていることがわかります。

layer.xml をダブルクリックして XML ファイルを見てみます。作成されたフォルダが追加されていますよね。このようにレイヤーを編集する場合には、layer.xml の XML を直接編集してもよいし、プロジェクトウィンドウのツリーを編集してもどちらでもよいようです。慣れている人で layer.xml に何を書いたらいいかわかっているひとは layer.xml を直接編集したほうが早いですよね。私のように何を追加したらいいかわからない人は実際の GUI を見ながらツリーを見ながらのほうがいいでしょう。

さてこの下にチュートリアルを参考してファイルを用意していきます。パレット項目の定義ファイルの1つです。resources 以下に置きます。
<?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.widgetfx.palette.JFXtrasGrid" /> <description localizing-bundle="org.netbeans.modules.widgetfx.palette.Bundle" display-name-key="NAME_widgetfx-JFXtrasGrid" tooltip-key="HINT_widgetfx-JFXtrasGrid" /> </editor_palette_item>layer.xml ファイルはこのようになりました。folder (パレットカテゴリ) 以下に file (パレット項目) を定義しています。
<?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="JavaFXPalette"> <folder name="JFXtras Layout"> <file name="JFXtrasPaletteGrid.xml" url="resources/JFXtrasPaletteGrid.xml"/> <file name="JFXtrasPaletteMig.xml" url="resources/JFXtrasPaletteMig.xml"/> </folder> <folder name="JFXtras Shape"> <file name="JFXtrasPaletteShapeAlmond.xml" url="resources/JFXtrasPaletteShapeAlmond.xml"/> <file name="JFXtrasPaletteShapeArrow.xml" url="resources/JFXtrasPaletteShapeArrow.xml"/> <file name="JFXtrasPaletteShapeAsterisk.xml" url="resources/JFXtrasPaletteShapeAsterisk.xml"/> <file name="JFXtrasPaletteShapeAstroid.xml" url="resources/JFXtrasPaletteShapeAstroid.xml"/> <file name="JFXtrasPaletteShapeBalloon.xml" url="resources/JFXtrasPaletteShapeBalloon.xml"/> <file name="JFXtrasPaletteShapeDonut.xml" url="resources/JFXtrasPaletteShapeDonut.xml"/> </folder> <folder name="WidgetFX"> <file name="WidgetFXPaletteConfig.xml" url="resources/WidgetFXPaletteConfig.xml"/> </folder> </folder> </filesystem>実際に実行してみます。新しく起動した NetBeans で JavaFX のファイルを開いてみます。エディタに開いたパレットに「JFXtras Layout」、「JFXtras Shape」、「WidgetFX」が追加されていますね。ただ...アイコンがデフォルトのままですね。

以下のようにアイコンを追加してみました。icon16 と icon32 を追加します。WidgetFX と JFXtras 用を作って定義してみました。
<?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.widgetfx.palette.JFXtrasGrid" /> <icon16 urlvalue="nbres:/org/netbeans/modules/widgetfx/palette/resources/jfxtras16.png" /> <icon32 urlvalue="nbres:/org/netbeans/modules/widgetfx/palette/resources/jfxtras32.png" /> <description localizing-bundle="org.netbeans.modules.widgetfx.palette.Bundle" display-name-key="NAME_widgetfx-JFXtrasGrid" tooltip-key="HINT_widgetfx-JFXtrasGrid" /> </editor_palette_item>
実際に実行するとこんな感じに。ほ〜なんとなくそれっぽくなってきました。ただ...パレットの順番をそろえたいですよね。

もう一度レイヤーの中を覗いてみます。あ〜なるほど、この順番に表示されているのですね。
順番を合わせるように以下のようにノードをドラッグして変更しました。

layer.xml は次のようになりました。position が追加されたことがわかります。
<?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="JavaFXPalette"> <folder name="JFXtras Layout"> <attr name="position" intvalue="1500"/> <file name="JFXtrasPaletteGrid.xml" url="resources/JFXtrasPaletteGrid.xml"/> <file name="JFXtrasPaletteMig.xml" url="resources/JFXtrasPaletteMig.xml"/> </folder> <folder name="JFXtras Shape"> <attr name="position" intvalue="1600"/> <file name="JFXtrasPaletteShapeAlmond.xml" url="resources/JFXtrasPaletteShapeAlmond.xml"/> <file name="JFXtrasPaletteShapeArrow.xml" url="resources/JFXtrasPaletteShapeArrow.xml"/> <file name="JFXtrasPaletteShapeAsterisk.xml" url="resources/JFXtrasPaletteShapeAsterisk.xml"/> <file name="JFXtrasPaletteShapeAstroid.xml" url="resources/JFXtrasPaletteShapeAstroid.xml"/> <file name="JFXtrasPaletteShapeBalloon.xml" url="resources/JFXtrasPaletteShapeBalloon.xml"/> <file name="JFXtrasPaletteShapeDonut.xml" url="resources/JFXtrasPaletteShapeDonut.xml"/> </folder> <folder name="WidgetFX"> <attr name="position" intvalue="1400"/> <file name="WidgetFXPaletteConfig.xml" url="resources/WidgetFXPaletteConfig.xml"/> </folder> </folder> </filesystem>
さてこれでだいたいいいでしょうか、大きなアイコンで表示してみます。アイコンも順番もそろっていい感じになってきました。

ということで、外枠だけ作ってみました。実際にどんなパレットが必要か、どんなコードを入れたらよいのかというのはアイディア募集ということにさせてください ^^;



