カスタマイザーは、Java Bean のプロパティーを変更するためにユーザーが起動できる追加ダイアログです。カスタマイザー・クラスを作成すると、Visual Editor に追加する Java Bean のプロパティーを編集できます。
カスタマイザー・クラスはインターフェース java.beans.Customizer を実装し、 java.awt.Component のサブクラスにする必要があります。 通常、カスタマイザーはコンテナー (例えば、java.awt.Panel または javax.swing.JPanel) であり、 Java Bean のプロパティーを表示、操作する制御が含まれています。 カスタマイザーがツールバー・ボタンから起動されると、カスタマイザーは 「OK」および「キャンセル」ボタンを持つダイアログ内でホスティングされます。
カスタマイザーを開くと、public void setObject(Object bean); メソッドの一部としてカスタマイズされる Java Bean がカスタマイザーに与えられます。これで、カスタマイザーは引き数を直接変更できるようになります。
java.beans.Customizer インターフェースには、public void addPropertyChangeListener(PropertyChangeListener listener); および public void removePropertyChangeListener(PropertyChangeListener listener) メソッドもあります。 Visual Editor は、それ自体をカスタマイザー上のリスナーとして追加し、カスタマイザーが「設計」ビュー上の Java Bean の外観を更新する場合は、 引き数のセットを持ついずれかの firePropertyChange(... メソッドでリスナーを呼び出して、プロパティー変更をシグナル通知する必要があります。
ユーザーが「OK」をクリックすると、Visual Editor は、カスタマイザーが Java Bean に対して行った変更内容を判別して、Java ソース・コードを更新します。これを行うために、Visual Editor はカスタマイザーを立ち上げる前に、すべての Java Bean のプロパティーのコピーをとり、そのコピーされたプロパティーを、カスタマイザーが閉じられたときのプロパティーと比較します。いずれかのプロパティーに違いがあると (equals メソッドに false が戻される)、そのプロパティーは変更されたと判断されます。 このプロパティーについて set メソッドへの引き数を判別するには、 java.beans.PropertyDescriptor にプロパティー・エディターを作成します。 次に、それが、public void setValue(Object) および public String getJavaInitializationString(); で呼び出されます。同様に、「キャンセル」をクリックした場合、カスタマイザーはすでに Java Bean を変更済みなので、Visual Editor はプロパティーのセットを照会し、初期状態と異なっているプロパティーをリセットします。
カスタマイザーが最上位のシェルであり、その中でダイアログを実行する必要がない (例えば、java.awt.Frame または javax.swing.JFrame のように) 場合は、Visual Editor は現状のままカスタマイザーを実行します。このタイプのカスタマイザーは、自身のボタン・セットに関して責任を負っており、 Visual Editor からは、ボタンがキャンセルされたか確認されたかを判別する方法がありません。 そのため、Visual Editor は、カスタマイザーを閉じる場合は常に、変更の有無を確認するために最上位のプロパティーの照会を行います。 したがって、カスタマイザーがキャンセルした場合は、Visual Editor もキャンセルする必要があり、これによって、Java Bean のプロパティーが確実に初期状態に復元されます。
カスタマイザーの作成後、それを次のように Java Bean の BeanInfo クラスの Bean 記述子に設定する必要があります。
public class MyClassBeanInfo extends SimpleBeanInfo { public BeanDescriptor getBeanDescriptor() { return new BeanDescriptor(MyClass.class, MyCustomizer.class); } }
親トピック: Visual Editor for Java の拡張