/** GUI コンポーネントを初期化する。 */ private void initComponents() { view = new NLabTestImportView(); setUI(view); String[] columnNames = new String[] {"ラボ", "患者ID", "カナ", "カルテ・カナ", "性別", "カルテ・性別", "検体採取日", "項目数", "登録"}; String[] propNames = new String[] { "laboCode", "patientId", "patientName", "karteKanaName", "patientSex", "karteSex", "sampleDate", "numOfTestItems", "result" }; int[] columnWidth = new int[] {50, 120, 120, 120, 50, 70, 120, 50, 80}; tableModel = new ListTableModel<NLaboImportSummary>(columnNames, 30, propNames, null); view.getTable().setModel(tableModel); view.getTable().setRowHeight(ClientContext.getHigherRowHeight()); view.getTable().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); view.getTable().setTransferHandler(new NLaboTestFileTransferHandler(this)); // カラム幅を変更する for (int i = 0; i < columnWidth.length; i++) { view.getTable().getColumnModel().getColumn(i).setPreferredWidth(columnWidth[i]); } // レンダラを設定する view.getTable().setDefaultRenderer(Object.class, new NLaboTestImporter.LabTestRenderer()); // カウント値0を設定する updateCount(); }
public ListTableModel<NLaboImportSummary> getTableModel() { return (ListTableModel<NLaboImportSummary>) view.getTable().getModel(); }
/** コンポーンントにリスナを登録し接続する。 */ private void connect() { // ファイル選択ボタン view.getFileBtn() .addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // ファイル選択 selectAndParseLabFile(); } }); // 登録ボタン view.getAddBtn() .addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // 検査結果登録 view.getAddBtn().setEnabled(false); addLabtest(); } }); view.getAddBtn().setEnabled(false); // クリアボタン view.getClearBtn() .addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // 検査結果登録 getTableModel().setDataProvider(null); } }); view.getClearBtn().setEnabled(false); // 行選択 view.getTable() .getSelectionModel() .addListSelectionListener( new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { if (e.getValueIsAdjusting() == false) { NLaboImportSummary lab = getTableModel().getObject(view.getTable().getSelectedRow()); if (lab != null) { setSelectedLabo(lab); } } } }); // ダブルクリック view.getTable() .addMouseListener( new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) { NLaboImportSummary lab = getTableModel().getObject(view.getTable().getSelectedRow()); if (lab != null && lab.getPatient() != null) { openKarte(); } } } }); // コンテキストメニューリスナを設定する view.getTable() .addMouseListener( new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { mabeShowPopup(e); } @Override public void mouseReleased(MouseEvent e) { mabeShowPopup(e); } private void mabeShowPopup(MouseEvent e) { if (e.isPopupTrigger()) { final JPopupMenu contextMenu = new JPopupMenu(); JTable table = view.getTable(); int row = table.rowAtPoint(e.getPoint()); Object obj = (Object) getTableModel().getObject(row); int selected = table.getSelectedRow(); if (row == selected && obj != null) { String pop1 = ClientContext.getString("watingList.popup.openKarte"); contextMenu.add( new JMenuItem( new ReflectAction(pop1, NLaboTestImporter.this, "openKarte"))); } contextMenu.show(e.getComponent(), e.getX(), e.getY()); } } }); // data 件数リスナ getTableModel() .addPropertyChangeListener( new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { List<NLaboImportSummary> list = (List<NLaboImportSummary>) evt.getNewValue(); boolean enabled = (list != null && list.size() > 0) ? true : false; boolean clearOk = enabled; if (enabled) { for (NLaboImportSummary sm : list) { if (sm.getKarteId() == null) { enabled = false; break; } } } view.getAddBtn().setEnabled(enabled); view.getClearBtn().setEnabled(clearOk); updateCount(); } }); }