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」カテゴリの記事
- 運用18年目のまとめ(2026.02.07)
- IME on/off の切換 - その5(2026.01.05)
- IME on/off の切換 - その4(2025.12.23)
- IME on/off の切換 - その3(2025.12.20)
- OpenDolphin: Java 25 / WildFly 38 への移行(2025.11.09)


