/*
 * @(#)InputTextField.java
 *
 * Copyright 2001 Nomura Research Institute, LTD. All rights reserved.
 *
 * RID-X : ラベル付き入力エリア作成
 *
 * @author  Intelligent Technology Inc.
 * @version 1.01 2002/11/07
 */
package jp.co.nri.rid.environment;

import jp.co.iti.fagot.ZApp;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

import java.io.File;

/**
 * ラベル付き入力エリア作成
 **/
public class EnvTextField {

    /** パネル **/
    protected JPanel      mPanel  = null;
    /** 入力エリア**/
    protected JTextField  mText   = null ;
    /** ボタン **/
    protected JButton     mBCmd   = null;
    /** ラベル **/
    protected JLabel      mLabel  = null;
    /** モード **/
    protected int         mMode;

    /**
      *  入力TEXT領域の作成 (fileChooser付き)
      * @param  String      value           テキスト
      * @param  int         mode            ファイルセレクトモード
      */
    public EnvTextField(String value, int mode) {

        // ファイルセレクトモード
        mMode = mode;

        // パネルの生成
        mPanel = new JPanel();

        // Layoutを「GridBagLayout」にする
        GridBagLayout mLayout = new GridBagLayout();
        mPanel.setLayout(mLayout);

        // Layout制約の作成
        GridBagConstraints gbc = new GridBagConstraints();

        //TEXT領域の作成
        if (value == null) value = "";
        mText = new JTextField(value);
        gbc.anchor  = GridBagConstraints.NORTHWEST;
        gbc.fill    = GridBagConstraints.BOTH;
        gbc.weightx = 1.0;
        gbc.gridx   = 0;
        gbc.gridy   = 0;
        mPanel.add(mText);
        mLayout.setConstraints(mText, gbc);

        //Command fileChooser
        gbc.weightx = 0.0 ;
        gbc.gridx   = 2;
        gbc.gridy   = 0;
        mBCmd = new JButton("...");
        mLayout.setConstraints(mBCmd, gbc);
        mPanel.add( mBCmd );
        mBCmd.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) { fileChooser(); }
          }
        );
    }


    /**
      *  入力TEXT領域の作成(入力エリアの後にラベル有り）
      * @param  String      value           テキスト
      * @param  String      label           ラベル
      */
    public EnvTextField(String value, String label) {

        // パネルの生成
        mPanel = new JPanel();

        // Layoutを「GridBagLayout」にする
        GridBagLayout mLayout = new GridBagLayout();
        mPanel.setLayout(mLayout);

        // Layout制約の作成
        GridBagConstraints gbc = new GridBagConstraints();

        //TEXT領域の作成
        if (value == null) value = "";
        mText = new JTextField(value);
        gbc.anchor  = GridBagConstraints.NORTHWEST;
        gbc.fill    = GridBagConstraints.BOTH;
        gbc.weightx = 1.0;
        gbc.gridx   = 0;
        gbc.gridy   = 0;
        mPanel.add(mText);
        mLayout.setConstraints(mText, gbc);

        if (!label.equals("")){
            //ラベル
            gbc.weightx = 0.0 ;
            gbc.gridx   = 2;
            gbc.gridy   = 0;
            mLabel = new JLabel(label);
            mLayout.setConstraints(mLabel, gbc);
            mPanel.add( mLabel );
        }
    }

    /**
      * テキストフィールドの取得
      *
      * @return JTextField
      */
    public JTextField getTextField() {
        return mText;
    }

    /**
      * 入力エリアに値を設定
      *
      * @param  String      szValue 設定文字列
      * @return void
      */
    public void setString( String szValue ){
        mText.setText( szValue );
    }

    /**
      * 入力エリアの値を取得
      *
      * @return String  文字列
      */
    public String getString(){
        String szTmp = mText.getText();
        if ( szTmp == null || szTmp.equals("") ) {  return null;  }
        return szTmp;
    }

    /**
      * パネルの取得
      *
      * @return JPanel
      */
    public JPanel getPanel(){
        return mPanel;
    }

    /**
      * fileChooserの生成
      * 
      * @return void
      */
    public void fileChooser() {
        EnvFileChooser fileChooser = new EnvFileChooser();
        String szFile = fileChooser.show(ZApp.getTheApp().getFrame(), getString(), mMode);
        if (szFile != null) setString (szFile);
    }
}
