/** 選択されている行をコピーする。 */ public void copyRow() { StringBuilder sb = new StringBuilder(); int numRows = view.getTable().getSelectedRowCount(); int[] rowsSelected = view.getTable().getSelectedRows(); int numColumns = view.getTable().getColumnCount(); for (int i = 0; i < numRows; i++) { if (tableModel.getObject(rowsSelected[i]) != null) { StringBuilder s = new StringBuilder(); for (int col = 0; col < numColumns; col++) { Object o = view.getTable().getValueAt(rowsSelected[i], col); if (o != null) { s.append(o.toString()); } s.append(","); } if (s.length() > 0) { s.setLength(s.length() - 1); } sb.append(s.toString()).append("\n"); } } if (sb.length() > 0) { StringSelection stsel = new StringSelection(sb.toString()); Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stsel, stsel); } }
@Override public void enter() { controlMenu(); // pns^ 入ってきたら,キーワードフィールドにフォーカス // view.getKeywordFld().requestFocusInWindow(); SwingUtilities.invokeLater( new Runnable() { @Override public void run() { view.getKeywordFld().requestFocusInWindow(); view.getKeywordFld().selectAll(); } }); // pns$ // s.oh^ 2014/08/19 ID権限 if (Project.isOtherCare()) { String text = Project.getString("patient.search.text", ""); if (text != null && !text.isEmpty()) { view.getKeywordFld().setText(text); find(view.getKeywordFld().getText()); } else { view.getKeywordFld().setText("設定なし"); } view.getSortItem().setEnabled(false); view.getKeywordFld().setEnabled(false); view.getTmpKarteButton().setEnabled(false); } // s.oh$ }
/** 年齢表示をオンオフする。 */ public void switchAgeDisplay() { // masuda^ if (view.getTable() == null) { return; } ageDisplay = !ageDisplay; Project.setBoolean(KEY_AGE_DISPLAY, ageDisplay); String method = ageDisplay ? AGE_METHOD[0] : AGE_METHOD[1]; ListTableModel tModel = getTableModel(); tModel.setProperty(method, ageColumn); List<ColumnSpec> columnSpecs = columnHelper.getColumnSpecs(); for (int i = 0; i < columnSpecs.size(); i++) { ColumnSpec cs = columnSpecs.get(i); String test = cs.getMethod(); if (test.toLowerCase().endsWith("birthday")) { cs.setMethod(method); break; } } // masuda$ }
// EVT から private void doStartProgress() { view.getCountLbl().setText(" 件"); getContext().getProgressBar().setIndeterminate(true); getContext().getGlassPane().block(); keyBlocker.block(); }
/** コンポーンントにリスナを登録し接続する。 */ private void connect() { // ColumnHelperでカラム変更関連イベントを設定する columnHelper.connect(); EventAdapter adp = new EventAdapter(view.getKeywordFld(), view.getTable()); // 自動IME ボタン view.getAutoIme() .addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JCheckBox check = (JCheckBox) e.getSource(); boolean selected = check.isSelected(); Project.setBoolean("autoIme", selected); if (selected) { // 選択されたらIME ON view.getKeywordFld().addFocusListener(AutoKanjiListener.getInstance()); } else { // されなければ OFF view.getKeywordFld().addFocusListener(AutoRomanListener.getInstance()); } } }); // Sort アイテム view.getSortItem() .addItemListener( new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { JComboBox cb = (JComboBox) e.getSource(); sortItem = cb.getSelectedIndex(); Project.setInt("sortItem", sortItem); } } }); // カレンダによる日付検索を設定する PopupListener pl = new PopupListener(view.getKeywordFld()); // コンテキストメニューを設定する view.getTable().addMouseListener(new ContextListener()); keyBlocker = new KeyBlocker(view.getKeywordFld()); // ----------------------------------------------- // Copy 機能を実装する // ----------------------------------------------- KeyStroke copy = KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()); copyAction = new AbstractAction("コピー") { @Override public void actionPerformed(ActionEvent ae) { copyRow(); } }; view.getTable().getInputMap().put(copy, "Copy"); view.getTable().getActionMap().put("Copy", copyAction); // minagawa^ 仮保存カルテ取得対応 view.getTmpKarteButton() .addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { getTmpKarte(); } }); // minagawa$ // //----------------------------------------------- // // 家族カルテ機能 DnD ^ // //----------------------------------------------- // view.getTable().setDragEnabled(true); // view.getTable().setTransferHandler(new PatientSearchTransferHandler()); }
/** GUI コンポーネントを初期化する。 */ private void initComponents() { // View view = new PatientSearchView(); setUI(view); // ColumnSpecHelperにテーブルを設定する columnHelper.setTable(view.getTable()); // ------------------------------------------ // View のテーブルモデルを置き換える // ------------------------------------------ String[] columnNames = columnHelper.getTableModelColumnNames(); String[] methods = columnHelper.getTableModelColumnMethods(); Class[] cls = columnHelper.getTableModelColumnClasses(); tableModel = new ListTableModel<PatientModel>(columnNames, 0, methods, cls) { @Override public Object getValueAt(int row, int col) { Object ret = null; if (col == ageColumn && ageDisplay) { PatientModel p = getObject(row); if (p != null) { int showMonth = Project.getInt("ageToNeedMonth", 6); ret = AgeCalculater.getAgeAndBirthday(p.getBirthday(), showMonth); } } else { ret = super.getValueAt(row, col); } return ret; } }; view.getTable().setModel(tableModel); // masuda^ table sorter 組み込み sorter = new ListTableSorter(tableModel); view.getTable().setModel(sorter); sorter.setTableHeader(view.getTable().getTableHeader()); // masuda$ // カラム幅更新 columnHelper.updateColumnWidth(); // minagawa^ lsctest view.getTable().getColumnModel().getColumn(stateColumn).setIdentifier(COLUMN_IDENTIFIER_STATE); // minagawa$ // masuda^ // レンダラを設定する // view.getTable().setDefaultRenderer(Object.class, new OddEvenRowRenderer()); // 連ドラ、梅ちゃん先生 PatientListTableRenderer renderer = new PatientListTableRenderer(); renderer.setTable(view.getTable()); renderer.setDefaultRenderer(); // masuda$ // ソートアイテム sortItem = Project.getInt("sortItem", 0); // s.oh^ 2014/08/13 コントロールサイズ調整 String nimbus = "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"; String laf = UIManager.getLookAndFeel().getClass().getName(); if (!laf.equals(nimbus)) { view.getSortItem().setPreferredSize(new Dimension(90, 20)); } // s.oh$ view.getSortItem().setSelectedIndex(sortItem); // Auto IME Windows の時のみ if (!ClientContext.isMac()) { // デフォルトは true boolean autoIme = Project.getBoolean("autoIme", true); view.getAutoIme().setSelected(autoIme); } else { // MAC は disabled // view.getAutoIme().setEnabled(false); view.getAutoIme().setVisible(false); } // 行高 if (ClientContext.isWin()) { view.getTable().setRowHeight(ClientContext.getMoreHigherRowHeight()); } else { view.getTable().setRowHeight(ClientContext.getHigherRowHeight()); } String method = ageDisplay ? AGE_METHOD[0] : AGE_METHOD[1]; ListTableModel tModel = getTableModel(); tModel.setProperty(method, ageColumn); List<ColumnSpec> columnSpecs = columnHelper.getColumnSpecs(); for (int i = 0; i < columnSpecs.size(); i++) { ColumnSpec cs = columnSpecs.get(i); String test = cs.getMethod(); if (test.toLowerCase().endsWith("birthday")) { cs.setMethod(method); break; } } //// s.oh^ 2014/10/22 Icon表示 // view.getSearchLabel().setIcon(ClientContext.getImageIconArias("icon_search_large")); //// s.oh$ // s.oh^ 2014/04/16 メニュー制御 view.getTable().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // s.oh$ }
// masuda^ // ステータスラベルに検索件数を表示 private void updateStatusLabel() { int count = tableModel.getObjectCount(); String msg = String.valueOf(count) + "件"; // this.getContext().getStatusLabel().setText(msg); view.getCountLbl().setText(msg); }