/*
 * @(#)ExistDialog.java
 *
 * Copyright 2001 Nomura Research Institute, LTD. All rights reserved.
 *
 * RID-X ：存在チェックダイアログ
 *
 * @author  Intelligent Technology Inc.
 * @version 1.01 2001/02/06
 */
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.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.File;

import jp.co.iti.fagot.ZApp;
import jp.co.iti.fagot.doc.DocDocument;
import jp.co.iti.fagot.doc.DocManager;
import jp.co.iti.fagot.util.ZDebug;
import jp.co.iti.fagot.util.ZResource;
import jp.co.iti.fagot.util.ZProperties;
import jp.co.iti.fagot.util.ZString;


/**
 * 存在チェックダイアログ
 */

public class ExistDialog {

    /** rid.ignore.prefixプロパティ  **/
    final static public String IGNORE_PREFIX      = "rid.ignore.prefix";
    /** exist.pageプロパティ  **/
    final static public String EXIST_PAGE         = "exist.page";
    /** exist.resourceプロパティ  **/
    final static public String EXIST_RESOURCE     = "exist.resource";
    /** exist.documentプロパティ  **/
    final static public String EXIST_DOCUMENT     = "exist.document";

    /** msg.exist.titleプロパティ  **/
    final static public String MSG_EXIST_TITLE    = "msg.exist.title";
    /** msg.exist.ignoreプロパティ  **/
    final static public String MSG_EXIST_IGNORE   = "msg.exist.ignore";
    /** msg.exist.ignoreプロパティ  **/
    final static public String MSG_EXIST_EXIST    = "msg.exist.exist";
    /** msg.exist.pageプロパティ  **/
    final static public String MSG_EXIST_PAGE     = "msg.exist.page";
    /** msg.exist.resourceプロパティ  **/
    final static public String MSG_EXIST_RESOURCE = "msg.exist.resource";
    /** msg.exist.documentプロパティ  **/
    final static public String MSG_EXIST_DOCUMENT = "msg.exist.document";

    /** メインパネル              **/
    protected JPanel      mPanel          = null;
    /** Ignoreキー                **/
    protected JTextField  mIgnorePrefix   = null;
    /** JCheckBox（ページ）       **/
    protected JCheckBox   mExistPage      = null;
    /** JCheckBox（リソース）     **/
    protected JCheckBox   mExistResource  = null;
    /** JCheckBox（ドキュメント） **/
    protected JCheckBox   mExistDocument  = null;

    /**
      * デフォルトコンストラクタ
      */
      public ExistDialog() {  }

    /**
      * 存在チェックダイアログ生成
      *
      * @return boolean     ボタンの状態true(OK)/false(Cancel)
      */
    public boolean show() {

        ZResource res = ZApp.getTheApp().getResource();
        JFrame frame = (JFrame)ZApp.getTheApp().getFrame();
        EnvDialog gdlg = new EnvDialog(frame, res.getString(MSG_EXIST_TITLE));

        //メインコンポーネント
        mPanel = new JPanel();

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

        // Layout制約の作成
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.fill       = GridBagConstraints.BOTH;
        gbc.insets     = new Insets(10,10,10,10) ;
        //public Insets(int top, int left, int bottom, int right)

        //ラベル
        gbc.gridy      = 0;
        gbc.gridx      = 0;
        JLabel label = new JLabel(res.getString(MSG_EXIST_IGNORE));
        mLayout.setConstraints(label, gbc);
        mPanel.add( label );

        //IgnorePrefix
        gbc.gridy      = 0;
        gbc.gridx      = 1;
        gbc.gridwidth  = 3;
        mIgnorePrefix = createIgnorePrefix();
        mLayout.setConstraints(mIgnorePrefix, gbc);
        mPanel.add( mIgnorePrefix );


        //ラベル
        gbc.gridy      = 1;
        gbc.gridx      = 0;
        gbc.gridwidth  = 1;
        gbc.gridheight = 1;
        label = new JLabel(res.getString(MSG_EXIST_EXIST));
        mLayout.setConstraints(label, gbc);
        mPanel.add( label );


        //ページチェックボックス生成
        gbc.gridy      = 1;
        gbc.gridx      = 1;
        mExistPage = createExistCheckBox(res.getString(MSG_EXIST_PAGE), EXIST_PAGE);
        mLayout.setConstraints(mExistPage, gbc);
        mPanel.add( mExistPage );


        //リソースチェックボックス生成
        gbc.gridy      = 1;
        gbc.gridx      = 2;
        mExistResource = createExistCheckBox(res.getString(MSG_EXIST_RESOURCE), EXIST_RESOURCE);
        mLayout.setConstraints(mExistResource, gbc);
        mPanel.add( mExistResource );

        //ドキュメントチェックボックス生成
        gbc.gridy      = 1;
        gbc.gridx      = 3;
        mExistDocument = createExistCheckBox(res.getString(MSG_EXIST_DOCUMENT), EXIST_DOCUMENT);
        mLayout.setConstraints(mExistDocument, gbc);
        mPanel.add( mExistDocument );


        // [メインコンポーネント]と[OK][CENCEL]
        gdlg.setControlPanel(mPanel);

        //ダイアログを表示する（モーダル）
        gdlg.doModal();

        // [生成]ボタンが押された場合に変更する
        boolean ret = gdlg.isOK();
        if (ret){
            setExist();
            
        }   
        return ret;
    }


    /**
      * ignoreキーのJTextFieldを生成
      *
      * @return JTextField
      */
    private JTextField createIgnorePrefix() {
        ZResource res = ZApp.getTheApp().getResource();
        String  ignore_prefix = res.getString(IGNORE_PREFIX);
        JTextField text = new JTextField(ignore_prefix);
        return text;
    }

    /**
      * ignoreキーの文字列を取得
      *
      * @return String
      */
    private String getIgnorePrefix(){
        String szTmp = mIgnorePrefix.getText();
        if ( szTmp == null || szTmp.equals("") ) {  return null;  }
        return szTmp;
    }

    /**
      * 存在チェックのチェックボックス作成
      *
      * @param  String      label         ラベル名
      * @param  String      resource      リソース名
      * @return JCheckBox
      */
    private JCheckBox createExistCheckBox(String label, String resource) {
        ZResource res = ZApp.getTheApp().getResource();
        boolean selected = res.getBoolean(resource);
        JCheckBox chk = new JCheckBox(label);
        chk.setSelected(selected);
        return chk;
    }

    /**
      * プロパティを設定
      *
      * @return void
      */
    private void setExist() {

        ZResource res = ZApp.getTheApp().getResource();

        /* [gnore.prefix]を設定 */
        res.putString(IGNORE_PREFIX, getIgnorePrefix() );

        /* [exist.page]を設定 */
        res.putBoolean(EXIST_PAGE, mExistPage.isSelected());

        /* [exist.resource]を設定 */
        res.putBoolean(EXIST_RESOURCE, mExistResource.isSelected());

        /* [exist.document]を設定 */
        res.putBoolean(EXIST_DOCUMENT, mExistDocument.isSelected());

    }

}
