public EventAdapter(JTextField tf, JTable tbl) {

      boolean autoIme = Project.getBoolean("autoIme", true);
      if (autoIme) {
        tf.addFocusListener(AutoKanjiListener.getInstance());
      } else {
        tf.addFocusListener(AutoRomanListener.getInstance());
      }
      tf.addActionListener(EventAdapter.this);

      tbl.getSelectionModel().addListSelectionListener(EventAdapter.this);
      tbl.addMouseListener(EventAdapter.this);
    }
  /** GUIコンポーネントを初期化する。 */
  private JPanel createComponent() {

    // content
    JPanel content = new JPanel();
    content.setLayout(new GridLayout(0, 1));

    // 文書Title
    JPanel p = new JPanel(new FlowLayout(FlowLayout.LEFT));
    titleCombo = new JComboBox(TITLE_LIST);
    titleCombo.setPreferredSize(new Dimension(220, titleCombo.getPreferredSize().height));
    titleCombo.setMaximumSize(titleCombo.getPreferredSize());
    titleCombo.setEditable(true);
    p.add(new JLabel("タイトル:"));
    p.add(titleCombo);
    content.add(p);

    // ComboBox のエディタコンポーネントへリスナを設定する
    titleField = (JTextField) titleCombo.getEditor().getEditorComponent();
    titleField.addFocusListener(AutoKanjiListener.getInstance());
    titleField
        .getDocument()
        .addDocumentListener(
            new DocumentListener() {

              @Override
              public void insertUpdate(DocumentEvent e) {
                checkTitle();
              }

              @Override
              public void removeUpdate(DocumentEvent e) {
                checkTitle();
              }

              @Override
              public void changedUpdate(DocumentEvent e) {
                checkTitle();
              }
            });

    // 診療科、印刷部数を表示するラベルとパネルを生成する
    JPanel p1 = new JPanel(new FlowLayout(FlowLayout.LEFT));
    departmentLabel = new JLabel();
    p1.add(new JLabel("診療科:"));
    p1.add(departmentLabel);

    p1.add(Box.createRigidArea(new Dimension(11, 0)));

    // Print
    printCombo = new JComboBox(PRINT_COUNT);
    printCombo.setSelectedIndex(1);
    p1.add(new JLabel("印刷部数:"));
    p1.add(printCombo);

    content.add(p1);

    // AccessRightを設定するボタンとパネルを生成する
    patientCheck = new JCheckBox("患者に参照を許可する");
    clinicCheck = new JCheckBox("診療歴のある病院に参照を許可する");

    // ---------------------------
    // CLAIM 送信ありなし
    // ---------------------------
    sendClaimAction =
        new AbstractAction(CHK_TITLE_NO_SEND_AT_TMP) {
          @Override
          public void actionPerformed(ActionEvent e) {
            if (claimDateEditable) {
              if (sendClaim.isSelected()) {
                setClaimDate(getClaimDate());
              } else {
                dateField.setText("");
              }
            }
          }
        };
    sendClaim = new JCheckBox();
    sendClaim.setAction(sendClaimAction);
    JPanel p5 = new JPanel(new FlowLayout(FlowLayout.LEFT));
    p5.add(sendClaim);
    content.add(p5);

    // minagawa^ CLAIM送信日
    claimDateEditable =
        enterParams.getEnterOption() != SaveParamsM.SCHEDULE_SCHEDULE; // 予定画面からは変更できない
    claimDateEditable = (claimDateEditable && enterParams.isSendEnabled()); // 送信が許可されれいる
    claimDateEditable = (claimDateEditable && enterParams.getClaimDate() != null); // パラメータが設定されている
    if (claimDateEditable) {
      dateField = new JTextField(12);
      dateField.setEditable(false);
      dateField.setToolTipText("右クリックでカレンダーがポップアップします");
      // 1ヶ月前まで
      int[] range = {-1, 0};
      // 今日以前でないと駄目
      SimpleDate[] acceptRange = new SimpleDate[2];
      acceptRange[0] = null;
      acceptRange[1] = new SimpleDate(new GregorianCalendar());
      PopupListener pl = new PopupListener(dateField, range, acceptRange);
      JPanel p2 = new JPanel(new FlowLayout(FlowLayout.LEFT));
      p2.add(new JLabel("送信日:"));
      p2.add(dateField);
      content.add(p2);
    }
    // minagawa&

    // ---------------------------
    // 検体検査オーダー送信ありなし
    // ---------------------------
    // s.oh^ 2014/11/04 仮保存時のオーダー出力
    // sendLabtest = new JCheckBox("検体検査オーダー(仮保存の場合はしない)");
    sendLabtest =
        new JCheckBox(
            Project.getBoolean(Project.SEND_TMPKARTE_LABTEST)
                ? "検体検査オーダー"
                : "検体検査オーダー(仮保存の場合はしない)");
    // s.oh$
    if (Project.getBoolean(Project.SEND_LABTEST)) {
      JPanel p6 = new JPanel(new FlowLayout(FlowLayout.LEFT));
      p6.add(sendLabtest);
      content.add(p6);
    }

    // OK button
    okButton = new JButton(SAVE);
    okButton.setToolTipText("診療行為の送信はチェックボックスに従います。");
    okButton.addActionListener(
        new ActionListener() {

          @Override
          public void actionPerformed(ActionEvent e) {
            // 戻り値のSaveparamsを生成する
            value = viewToModel(false);
            if (value != null) {
              close();
            }
          }
        });
    okButton.setEnabled(false);

    // Cancel Button
    String buttonText = (String) UIManager.get("OptionPane.cancelButtonText");
    cancelButton = new JButton(buttonText);
    cancelButton.addActionListener(
        new ActionListener() {

          @Override
          public void actionPerformed(ActionEvent e) {
            value = null;
            close();
          }
        });

    // 仮保存 button
    tmpButton = new JButton(TMP_SAVE);
    tmpButton.setToolTipText(TOOLTIP_NO_SEND);
    tmpButton.addActionListener(
        new ActionListener() {

          @Override
          public void actionPerformed(ActionEvent e) {
            // 戻り値のSaveparamsを生成する
            value = viewToModel(true);
            if (value != null) {
              close();
            }
          }
        });
    tmpButton.setEnabled(false);

    return content;
  }