StampHolder の隠しコマンド作成
処方スタンプを選択してシフト+コマンド+C を押すと,テキストとして処方がクリップボードにコピーされる隠しコマンドを作った。
client/StampHolder.java
public void enter(ActionMap map) { ・ ・ map.get(GUIConst.ACTION_PASTE).setEnabled(false); setSelected(true); //// 隠しコマンドセット addHiddenCommand(); } public void exit(ActionMap map) { setSelected(false); //// 隠しコマンド除去 removeHiddenCommand(); } ・ ・ ////↓ 隠しコマンド private void addHiddenCommand() { // Shift+command C で,処方をテキストとしてクリップボードにコピー InputMap im = this.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.META_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK), "copyAsText"); this.getActionMap().put("copyAsText", new AbstractAction(){ public void actionPerformed(ActionEvent e) { if (getStamp().getModel().getClass().getName().equals("open.dolphin.infomodel.BundleMed")) { try { IInfoModel model = getStamp().getModel(); VelocityContext context = ClientContext.getVelocityContext(); context.put("model", model); context.put("hints", getHints()); context.put("stampName", getStamp().getModuleInfo().getStampName()); String templateFile = "open.dolphin.infomodel.BundleMed-text.vm"; StringWriter sw = new StringWriter(); BufferedWriter bw = new BufferedWriter(sw); InputStream instream = ClientContext.getTemplateAsStream(templateFile); BufferedReader reader = new BufferedReader(new InputStreamReader(instream, "SHIFT_JIS")); Velocity.evaluate(context, bw, "stmpHolder", reader); bw.flush(); bw.close(); reader.close(); // 全角数字とスペースを直す String text = sw.toString(); for (int i = 0; i < MATCHIES.length; i++) { text = text.replace(MATCHIES[i], REPLACES[i]); } Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(new StringSelection(text), null); } catch (Exception ex) { ex.printStackTrace(); } } } }); } private void removeHiddenCommand() { // Shift+command C InputMap im = this.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); im.remove(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.META_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK)); }
resources/template/open.dolphin.infomodel.BundleMed-text.java
##------------------------------------- ## RP Template ##------------------------------------- #foreach ($item in $model.getClaimItem()) #if (!$item.getCode().matches("0085[0-9]{5}") && !$item.getCode().matches("001000[0-9]{3}") && !$item.getCode().matches("810000001")) ${item.getName()} $!{item.getNumber()} $!{item.getUnit()} #else ${item.getName()} #end #end ${model.getAdminDisplayString()}
« jconsole による解析 | トップページ | OpenDolphin-1.3.0.2 ソース公開 »
「OpenDolphin」カテゴリの記事
- Java 17 への移行(7) - OpenDolphin client の対応 (2023.02.04)
- Java 17 への移行(6) - Hibernate 6 でやらかす(2023.02.03)
- Java 17 への移行(5) - OpenDolphin server の対応(2023.02.02)
- Java 17 への移行(4) - OpenSearch の準備 [ubuntu 編](2023.02.01)
- Java 17 への移行(3) - OpenSearch の準備 [mac 編](2023.01.31)