/*
 * @(#)EnvDialog.java
 *
 * Copyright 2001 Nomura Research Institute, LTD. All rights reserved.
 *
 * RID-X : Generator Dialog
 *
 * @author  Intelligent Technology Inc.
 * @version 1.01 2001/11/07
 */
package jp.co.nri.rid.environment;

import java.io.*;
import java.util.*;
import java.text.*;
import java.net.URL;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;


/**
 * Rid Generator  Dialog
 */
public class EnvDialog extends JDialog {

    /** ダイアログ  **/
    public JFrame mFrame;
    /** ダイアログ名  **/
    public String mDialogName ;
    /** 結果 **/
    public boolean mIsOK = false ;
    /**メインコンポーネント */
    protected JComponent mComponent = null ;
    /** スクロールコンポーネント */
    protected JScrollPane mScroll = null ;
    /** ボタンパネル */
    protected JPanel     mButtonPanel = null ;
    /** Okボタン */
    protected JButton    mOk     = null ;
    /** Cancelボタン */
    protected JButton    mCancel = null ;

    /**
      * コンストラクタ
      * @param app     アプリケーション
      * @param szName  ダイアログ名
      */
    public EnvDialog(JFrame frame, String title) {

        // mo-modalで設定
        super(frame, false);

        // アプリケーションの設定
        mFrame      = frame ;
        mDialogName = title;

        //タイトル表示
        setTitle();
    }

    /**
      * モーダル実行
      */
    public boolean doModal() {
      setModal(true);

      // 画面中央に表示する
      pack();
      Dimension dim = getToolkit().getScreenSize();
      int ww = (int)(dim.width * 0.9);
      int hh = (int)(dim.height * 0.9);
      int width  = Math.min(ww, getWidth());
      int height = Math.min(hh, getHeight());
      setSize(new Dimension(width,height));
      setLocation( dim.width/2 - getWidth()/2, dim.height/2 - getHeight()/2 );

      //enterキーで実行
      getRootPane().setDefaultButton(mOk);

      //画面表示
      show();
  
      // OKボタンが押されたか？
      return isOK() ;
    }

    /**
      * OKボタンが押されたか？
      */
    public boolean isOK() {
        return mIsOK;
    }

    /**
      * タイトルの表示,アイコンの表示
      */
    protected void setTitle() {
        // タイトルの表示
        setTitle( mDialogName );
    }

    /**
      * ダイアログの終了
      * ×ボタンが押されたときに呼び出される。
      */
    public void hide() {
        super.hide();
    }

    /**
      * コンポーネントの設定
      * @param cmp メインコンポーネント
      * @param isScroll スクロールの有無
      */
    public void setComponent( JComponent cmp,  boolean isScroll ){
        mComponent = cmp;
        if ( isScroll ) {
            mScroll = new JScrollPane();
            mScroll.setViewportView( mComponent );
            getContentPane().add("Center",mScroll);
        } else {
            getContentPane().add("Center",mComponent);
        }
    }

    /**
      * 「OK」ボタン
      */
      public void onOK() {
        mIsOK = true;
        setVisible(false);
      }

    /**
      * 「Cancel」ボタン
      */
      public void onCancel() {
        mIsOK = false ;
        setVisible(false);
      }

    /**
      * 画面設定
      * @param cmp コンポーネント
      */
      public void setControlPanel(JComponent cmp) {

          JPanel control = createControlPanel();

          getContentPane().setLayout(new BorderLayout());

          //getContentPane().add(cmp,     BorderLayout.CENTER );
          setComponent(cmp, true);
          getContentPane().add(control, BorderLayout.SOUTH );
      }

    /**
      * 画面設定
      * 
      */
      public JPanel createControlPanel() {

          mButtonPanel = new JPanel();

          mOk     = new JButton("Ok");
          mCancel = new JButton("Cancel");

          mOk.addActionListener(
              new ActionListener() {
                  public void actionPerformed(ActionEvent e) { onOK(); }
              }
          );

          mCancel.addActionListener(
              new ActionListener() {
                  public void actionPerformed(ActionEvent e) { onCancel(); }
              }
          );
          
          mButtonPanel.add( mOk );
          mButtonPanel.add( mCancel );

          return mButtonPanel;
      }

    /**
      * ダイアログ名の取得
      */
      public String getDialogName() {
          return mDialogName;
      }

    /**
      * OKボタンの取得
      */
      public JButton getOKButton() {
          return mOk;
      }

    /**
      * OKボタンの文字設定
      */
      public void setOkText(String value) {
          mOk.setText(value);
      }

    /**
      * OKボタンの文字設定
      */
      public String getOkText() {
          return mOk.getText();
      }
    /**
      * Cancelボタンの文字設定
      */
    public void setCancelText(String value) {
        mCancel.setText( value );
    }
    /**
      * Cancelボタンの文字設定
      */
    public String getCancelText() {
        return mCancel.getText();
    }
    /**
      * ボタンパネルの取得
      */
    public JPanel getButtonPanel() {
        return mButtonPanel;
    }
    /**
      * Cancelボタンの取得
      */
    public JButton getCancelButton() {
        return mCancel;
    }
    /**
      * コンポーネントの取得
      */
    public JComponent getComponent() {
        return mComponent;
    }
    /**
      * スクロールコンポーネントの取得
      */
    public JScrollPane getScrollComponent() {
        return mScroll;
    }
}

