/**
   * 登録処理が可能かどうかをチェックします。
   *
   * @return true:OK, false:NG
   */
  private boolean canSubmit() {
    // 保険者番号・未選択チェック
    if (insurerNm.getSelectedIndex() < 0) {
      insurerNm.requestFocus();
      ACMessageBox.show("保険者を選択してください。", ACMessageBox.BUTTON_OK, ACMessageBox.ICON_EXCLAMATION);
      return false;
    }

    // 事業所番号・未入力チェック
    if (IkenshoCommon.isNullText(jigyoushoNoField.getText())) {
      jigyoushoNoField.requestFocus();
      ACMessageBox.show("事業所番号を入力してください。", ACMessageBox.BUTTON_OK, ACMessageBox.ICON_EXCLAMATION);
      return false;
    }

    // 保険者重複チェック
    boolean checkFlg = true;
    if (isUpdate) {
      if (insurerNoOld.equals(insurerNoField.getText())) {
        // 更新であり、保険者に変更が無い場合はチェックしない
        checkFlg = false;
      }
    }
    if (checkFlg) {
      String insurerNoNew = insurerNoField.getText();
      VRArrayList data = (VRArrayList) affair.getData("DATA");
      for (int i = 0; i < data.getDataSize(); i++) {
        VRMap tmp = (VRMap) data.getData(i);
        String dataInsurerNo = tmp.getData("INSURER_NO").toString();
        if (dataInsurerNo.equals(insurerNoNew)) {
          insurerNm.requestFocus();
          ACMessageBox.show(
              "同一の保険者が既に登録されています。", ACMessageBox.BUTTON_OK, ACMessageBox.ICON_EXCLAMATION);
          return false;
        }
      }
    }

    // 事業所番号・桁数チェック
    if (jigyoushoNoField.getText().length() < 10) {
      jigyoushoNoField.requestFocus();
      int result =
          ACMessageBox.show(
              "事業所番号が数字10桁入力されていません。\nよろしいですか?",
              ACMessageBox.BUTTON_OKCANCEL,
              ACMessageBox.ICON_QUESTION,
              ACMessageBox.FOCUS_CANCEL);
      if (result == ACMessageBox.RESULT_CANCEL) {
        return false;
      }
    }

    return true;
  }
  private void event() throws Exception {
    // 保険者名コンボ
    insurerNm.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            // 選択された保険者名から保険者番号を取得し、TextFieldに設定する
            insurerNoField.setText(findInsurerNo(String.valueOf(insurerNm.getSelectedItem())));
          }
        });

    // 登録ボタン
    submit.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            if (canSubmit()) {
              // パラメータを渡し用HashMapに格納する
              paramas.put("ACT", "submit");
              paramas.put("INSURER_NM", String.valueOf(insurerNm.getSelectedItem()));
              paramas.put("INSURER_NO", insurerNoField.getText());
              paramas.put("JIGYOUSHA_NO", jigyoushoNoField.getText()); // DB:JIGYOUSHA,
              // 画面:事業所
              closeWindow();
            }
          }
        });

    // 閉じるボタン
    close.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            if (canClose()) {
              // パラメータを渡し用HashMapに格納する
              paramas.put("ACT", "close");
              paramas.put("INSURER_NM", "");
              paramas.put("INSURER_NO", "");
              paramas.put("JIGYOUSHA_NO", "");
              closeWindow();
            }
          }
        });
  }
  private void jbInit() throws Exception {
    contentPane = (JPanel) this.getContentPane();
    contentPane.add(client);

    VRLayout clientLayout = new VRLayout();
    clientLayout.setHgap(2);
    clientLayout.setVgap(2);
    client.setLayout(clientLayout);
    client.add(insurerNmContainer, VRLayout.FLOW_INSETLINE);
    client.add(insurerNoPnl, VRLayout.FLOW_RETURN);
    client.add(jigyoushoNoContainer, VRLayout.FLOW_INSETLINE);
    client.add(btnPnl, VRLayout.FLOW_RETURN);

    insurerNmContainer.setText("保険者番号");
    insurerNmContainer.add(insurerNm, null);
    insurerNm.setEditable(false);
    insurerNm.setPreferredSize(new Dimension(280, 19));
    insurerNm.setBindPath("INSURER_NM");

    VRLayout insurerNoPnlLayout = new VRLayout();
    insurerNoPnlLayout.setHgap(0);
    insurerNoPnlLayout.setVgap(0);
    insurerNoPnlLayout.setAutoWrap(false);
    insurerNoPnl.setLayout(insurerNoPnlLayout);
    insurerNoPnl.add(insurerNoCaption1, VRLayout.FLOW);
    insurerNoPnl.add(insurerNoField, VRLayout.FLOW);
    insurerNoPnl.add(insurerNoCaption2, VRLayout.FLOW);
    insurerNoCaption1.setText("(");
    insurerNoField.setColumns(6);
    insurerNoField.setEditable(false);
    insurerNoField.setBindPath("INSURER_NO");
    insurerNoCaption2.setText(")");

    jigyoushoNoContainer.setText("事業所番号");
    VRLayout jigyoushoNoContainerLayout = new VRLayout();
    jigyoushoNoContainerLayout.setHgap(0);
    jigyoushoNoContainerLayout.setVgap(1);
    jigyoushoNoContainerLayout.setAutoWrap(false);
    jigyoushoNoContainer.add(jigyoushoNoField, VRLayout.FLOW);
    jigyoushoNoContainer.add(jigyoushoNoCaption, VRLayout.FLOW);
    jigyoushoNoField.setColumns(10);
    jigyoushoNoField.setMaxLength(10);
    jigyoushoNoField.setIMEMode(InputSubset.LATIN_DIGITS);
    jigyoushoNoField.setCharType(VRCharType.ONLY_DIGIT);
    // jigyoushoNoField.setCharType(VRCharType.ONLY_ALNUM);
    jigyoushoNoField.setBindPath("JIGYOUSHA_NO");
    jigyoushoNoCaption.setText("(数字10桁)");
    jigyoushoNoCaption.setForeground(IkenshoConstants.COLOR_MESSAGE_TEXT_FOREGROUND);

    VRLayout btnPnlLayout = new VRLayout();
    btnPnlLayout.setHgap(0);
    btnPnlLayout.setVgap(0);
    btnPnlLayout.setAutoWrap(false);
    btnPnl.setLayout(btnPnlLayout);
    btnPnl.add(submit, VRLayout.FLOW);
    btnPnl.add(close, VRLayout.FLOW);
    submit.setText("登録(S)");
    submit.setMnemonic('S');
    close.setText("閉じる(C)");
    close.setMnemonic('C');
  }
  private void initComponent(VRMap affair) throws Exception {
    // ウィンドウのサイズ
    setSize(new Dimension(470, 110));
    // ウィンドウを中央に配置
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = this.getSize();
    if (frameSize.height > screenSize.height) {
      frameSize.height = screenSize.height;
    }
    if (frameSize.width > screenSize.width) {
      frameSize.width = screenSize.width;
    }
    this.setLocation(
        (screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);

    // 保険者一覧をDBから取得・コンボに設定する
    IkenshoFirebirdDBManager dbm = new IkenshoFirebirdDBManager();
    StringBuffer sb = new StringBuffer();
    sb.append(" SELECT");
    sb.append(" INSURER_NO");
    sb.append(" ,INSURER_NM");
    sb.append(" FROM");
    sb.append(" INSURER");
    insurerData = (VRArrayList) dbm.executeQuery(sb.toString());
    IkenshoCommon.applyComboModel(
        insurerNm, new VRHashMapArrayToConstKeyArrayAdapter(insurerData, "INSURER_NM"));

    // 渡りデータを取得し、各コンポーネントに設定する
    this.affair = affair;
    String actParam = String.valueOf(affair.getData("ACT"));
    if (actParam.equals("update")) {
      isUpdate = true;
    } else {
      isUpdate = false;
    }
    if (isUpdate) {
      submit.setText("更新(S)");
      enteredData = (VRArrayList) affair.getData("DATA");
      int selRow = Integer.parseInt(String.valueOf(affair.getData("SEL_ROW")));
      VRMap row = (VRMap) enteredData.getData(selRow);

      // 保険者名
      String insurerNmParam = String.valueOf(row.getData("INSURER_NM"));
      for (int i = 0; i < insurerNm.getItemCount(); i++) {
        if (insurerNm.getItemAt(i).toString().equals(insurerNmParam)) {
          insurerNm.setSelectedIndex(i);
          break;
        }
      }

      // 保険者番号
      insurerNoOld = String.valueOf(row.getData("INSURER_NO"));
      insurerNoField.setText(insurerNoOld);

      // 事業所番号
      jigyoushoNoField.setText(String.valueOf(row.getData("JIGYOUSHA_NO")));
    } else {
      submit.setText("登録(S)");
    }

    // スナップショット撮影
    IkenshoSnapshot.getInstance().snapshot();
  }