package disp;

import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.Rectangle;
import java.awt.Font;
import java.awt.Color;
import javax.swing.JTextField;

/**
 * 画面表示クラス
 */
public class DispUi
    extends JFrame {

    /**
     * パネル
     */
    private JPanel mContentPane = null;

    /**
     * ボタン
     */
    private JButton mButton = null;

    /**
     * テキストフィールド
     */
    private JTextField mTextField = null;
    
    /**
     * メインメソッド
     * 
     * @param args  起動パラメータ（なし）
     */
    public static void main( final String[] args ) {
        
        // 画面生成
        final DispUi aUi = new DispUi();

        // 画面表示
        aUi.setVisible( true );
    }
    
    /**
     * コンストラクタ
     */
    public DispUi() {
        
        super();
        initialize();
    }

    /**
     * 初期処理を行う。
     */
    private void initialize() {
        
        this.setSize( 300, 200 );
        this.setContentPane( getJContentPane() );
        this.setTitle( "サンプル画面" );
        this.addWindowListener( new java.awt.event.WindowAdapter() {
            public void windowClosing( final java.awt.event.WindowEvent e ) {
                System.exit( 0 );
            }
        } );
    }

    /**
     * パネルの詳細情報を設定する。
     * 
     * @return javax.swing.JPanel
     */
    private JPanel getJContentPane() {
        if ( mContentPane == null ) {
            mContentPane = new JPanel();
            mContentPane.setLayout(null);
            mContentPane.add(getMButton(), null);
            mContentPane.add(getMTextField(), null);
        }
        return mContentPane;
    }

    /**
     * ボタンの詳細情報を設定する。
     * 	
     * @return javax.swing.JButton	
     */
    private JButton getMButton() {
        
        if ( mButton == null ) {
            mButton = new JButton();
            mButton.setBounds(new Rectangle(60, 30, 160, 35));
            mButton.setFont(new Font("Monospaced", Font.PLAIN, 12));
            // ボタン色設定
            mButton.setBackground(new Color(255, 0, 0));
            mButton.setText("English");
            mButton.addActionListener( new java.awt.event.ActionListener() {
                public void actionPerformed( final java.awt.event.ActionEvent e ) {
                    // ボタン押下
                    actionPerformedButtun();
                }
            } );
        }
        
        return mButton;
    }

    /**
     * テキストフィールドの詳細情報を設定する。
     * 	
     * @return javax.swing.JTextField	
     */
    private JTextField getMTextField() {
        
        if ( mTextField == null ) {
            mTextField = new JTextField();
            mTextField.setBounds(new Rectangle(50, 90, 180, 30));
            mTextField.setBackground(Color.pink);
            mTextField.setHorizontalAlignment(JTextField.CENTER);
            mTextField.setText("こんにちは");
        }
        
        return mTextField;
    }

    /**
     * ボタン押下時の処理を行う。
     */
    public void actionPerformedButtun() {
        
        System.out.println( "☆ ボタン押下" );
        
        // テキストフィールドに文字列を設定
        mTextField.setText( "HELLO" );
    }
}
