カスタマイザを作る
カスタマイザ(Customizer)は Beanを設計するための専用の GUIパネルを提供します。
その作成の方法と利用の方法について解説します。
プロパティエディタが個々のプロパティの操作の GUIを提供するのに対し、
カスタマイザは Bean全体の設計の GUIを提供するためのクラスです。
専用のプロパティエディタが複数存在するような場合は、
それらをまとめて専用のカスタマイザを設計するのも1つの方法でしょう。
カスタマイザのクラスは java.beans.Customizer インターフェイスを
実装する必要があります。
実装すべきメソッドは setObject(), addProperyChangeListener(),
removePropertyChangeListener() の3個のみです。
したがって SimpleBeanInfoや PropertyEditorSupportに相当する
便利なクラスは提供されていません。
またカスタマイザのクラスは通常独立した Panelオブジェクトを継承する
ように記述しますから、
結局はCustomizerインターフェイスは直接実装しなくてはなりません。
クラス名は 「Bean名 + Customizer」とします。
サンプルを紹介しましょう。PhotoButtonのBeanの写真のイメージの
カスタマイザのクラス PhotoButtonCustomizerです。
一般にカスタマイザのクラスは Bean本体よりも複雑になることは珍しくありません。
ここのサンプルでも、選択用のボタンとしてカスタマイザ内に PhotoButton の Bean
自身が利用されています。
参照: PhotoButtonCustomizer のソース
カスタマイザを設計する上でポイントとなる部分をまとめておきましょう。
- カスタマイザの作業の中心になるのが setObjetc()メソッドです。
このメソッドは開発ツールの側によって呼び出され、
設計の対象となっているオブジェクトが設定されます。
カスタマイザから見れば、単に対象となるオブジェクトを受け取るだけのことです。
- プロパティの変更を知らせる役割をするのが PropertyChangeEvent です。
このイベントの対象の登録、削除はカスタマイザの仕事ですが、
それを助けるために PropetyChangeSupportクラスが用意されています。
実際には、このクラスのオブジェクトを生成し、必要な作業をさせることができます。
- 親切な開発ツールの場合には、
カスタマイザのクラス名から判断してくれるかもしれません。
ただし、それは保証されているわけではありません。
プロパティエディタの情報は BeanInfoのクラスの内部に記述
しておくべきです。プロパティエディタの情報は BeanDesciptorの中に
記憶されるので、BeanInfoのクラスの getBeanDescriptor()メソッドを
きちんと実装する必要があります。
参照: PhotoButotnBeanInfo のソース
- 親切な開発ツールの場合には、
Beanを読み込んだ時点で自動的にカスタマイザを起動してくれるでしょう。
しかし、BeanBoxはそのような仕様になっていないので注意してください。
カスタマイザを呼び出すには Editメニューの中の "Customiser" を選択します。
すると専用のカスタマイザが表示されるはずです。