PhotoButtonCustomizer.java



/** PhotoButtonのためのカスタマイザ */

package photobutton;
import java.awt.*;
import java.awt.event.*;
import java.beans.*;

public class PhotoButtonCustomizer extends Panel
             implements Customizer, ActionListener {

   /** イメージのファイル名 */

     private static String fileNames[]
          = { "fuji.gif", "maru.gif", "kana.gif", "hime.gif" };

   /** 選択用の PhotoButton */

     private PhotoButton buttons[];

   /** カスタマイズされる PhotoButton */

     private PhotoButton target;

   /** コンストラクタ */

     public PhotoButtonCustomizer() {

          super();
          setLayout( new GridLayout( 1, fileNames.length ) );

          buttons = new PhotoButton[fileNames.length];
          Toolkit tk = Toolkit.getDefaultToolkit();
          for( int i=0; i<fileNames.length; i++ ) {

              buttons[i] = new PhotoButton( fileNames[i] );
              add( buttons[i] );
              buttons[i].addActionListener( this );
          }
     }

   /** カスタマイズの対象の設定のメソッド */

     public void setObject( Object obj ) {

          target = (PhotoButton)obj;
     }

   /** PropertyChangeのイベントを取り扱うオブジェクト */

     protected PropertyChangeSupport support
         = new PropertyChangeSupport( this );

   /** PropertyChangeListenerの登録のメソッド */

     public void addPropertyChangeListener(
                    PropertyChangeListener lst ) {

            support.addPropertyChangeListener( lst );
     }

   /** PropertyChangeListenerの削除のメソッド */

     public void removePropertyChangeListener(
                    PropertyChangeListener lst ) {

            support.removePropertyChangeListener( lst );
     }

   /** ボタンのアクション処理のメソッド */

     public void actionPerformed( ActionEvent evt ) {

          PhotoButton source = (PhotoButton)evt.getSource();
          Image image = source.getPhoto();
          target.setPhoto( image );

          support.firePropertyChange( "", null, null );
     }
}