OpenDolphin

2017年3月10日 (金)

受付マシンを Windows 10 にアップグレード

OpenDolphin を大幅に変更したのに伴って,受付用の Windows バージョンも mac バージョンに合わせて書き直した。受付では Windows 7 を使っていたが,この機会に Windows 10 にアップグレードした。昨年の無料アップグレード期間のうちに,がんばって別のハードディスクにアップグレードしておいたので,ハードディスクを取り替えるだけで Windows 10 マシンになった。

Win1

Win2

2017年3月 9日 (木)

Independence from Quaqua

思い返せば,OpenDolphin 改造の最初の段階が Quaqua の導入であった。それ以来ずっと使用していて,本家が更新されなくなってからは自分で細々とメンテナンスをしていたが,今回少しがんばって Quaquaから独立した。

Mac の java は,JTabbedPane に wrap モードがない。スタンプ箱のようにタブ項目がたくさんある場合,wrap がない方がデザイン的にはすっきりするが,実用的にはタブは最初から全部見えた方がいいと思う。この JTabbedPane の wrap 表示が Quaqua 導入の目的の1つであった(下の画像の左)。その後,mac native design に似せた tabbed pane らしきものを独自に作ったため(下の画像の右),quaqua の JTabbedPane は使わなくなっていた。

Diagnosis2    Diagnow

もう一つ quaqua の機能で大きかったのが JSheet であった。これもそれっぽいものを java で作って置き換えた。Modal にするのに undecorated JDialog を使ったら,owner window が inactive になってしまってちょっとみっともない。Modal な JWindow ができればよいのだが,今後の検討課題とする。

Jsheet

その他のいろいろな見た目の細かいところも,UI と renderer を作って対応した。

  • JTable,JList,JTree のストライプ表示,selection color の active / inactive 切換

    Treeactive Treeinactive

  • JButton の default button 文字色の active / inactive 切換

    Buttonactive Buttonnonactive

  • JTextField の枠

    Textfield

2017年3月 7日 (火)

WaitingListImpl の年齢と生年月日を分離

受付リストの生年月日表示を,年齢と生年月日に分けた。
上が分離前,下が分離後。ちょっと見やすくなったかもしれないが微妙。

Age

2017年2月23日 (木)

TransferHandler#getVisualRepresentation から setDragImage へ

Java 1.6 の時代から,Drag & Drop の際に,ドラッグ中のイメージを表示するのに,PatchedTransferHandler を使って,getVisualRepresentation を使用していた。
 しかし,最近 PatchedTransferHandler が頻繁に InvalidDnDOperationException ("Drag and drop in progress" exception) を出すようになったため,TransferHandler のソースを読んで解決策を探っていたところ,TransferHandler#setDragImage なるメソッドがあることに気付いた。調べてみたら Java 1.7 からこんな素敵なメソッドが標準で用意されていたのであった。早速,これを使ってソースリファクタリングして,PatchedTransferHandler は引退となった。
 なお,Windows では TransferHandler#setDragImageOffset の offset 方向が Mac と逆になるのに気付いて,そんなところにも文化の違いがあるのだなと思った。
 ちなみに,最近はダブルクリックCodeHelper での入力が多く,Drag & Drop はほとんど使わなくなってしまっている。

2017年2月 7日 (火)

カレンダーの改造

カレンダーのコードを大幅に改造した。
  • 年月は,インスペクタのタイトル部分に西暦と,薄くバックグランドで和暦も出すようにした。1ヶ月送り(Mdfb2Mdfb1)だけでなく,1週送り(Mdb2Mdb1)もできるようにした。ボタンクリックだけでなく,マウスホイールでも1週毎にスクロールできるようにした。イベントを表すバックグランドは円で出すようにした。

    Calendar1

    3週戻したところ。ピンクは受診日。

    Calendar2_2

  • 休日データベースを更新して,自院の休日も出るようにした(自分だけ使うものなので当然ハードコード)。ToolTip で休日名も出るようにした。

    Obon_3

  • Mdejectで1年分のカレンダーが出るようにした。

    Oneyear_2

  • インスペクタのカレンダー(LiteCalendarPanel/CalendarCardPanel系)と CareMapDocument のカレンダー(SimpleCalendarPanel系)が,別々のシステムになっていたのを,今回作成したカレンダーパッケージで統一した。

    Caremap_2

2017年2月 6日 (月)

DiagnosisInspector の ToolTipText

DiagnosisInspector で開始日/終了日を,年号で ToolTip 表示するようにした。

Tooltips

ToolTip 情報を見ながら書類を書いているときなどに ToolTip が消えてしまうとストレスたまるので,ToolTip を自動で消えないようにした。
// ToolTip を自然に消えないようにする
ToolTipManager manager = ToolTipManager.sharedInstance();
manager.setDismissDelay(Integer.MAX_VALUE);

2017年1月31日 (火)

Dock のアイコンに待ち人数表示

カルテ画面に待ち人数のバッジ表示をするようにしていたが,これをドックのアイコンにも表示するようにした。
// Dock のアイコンにバッジを出す
com.apple.eawt.Application app = com.apple.eawt.Application.getApplication();
app.setDockIconBadge(waitingCount == 0? null: String.valueOf(waitingCount));

Screenshot

2017年1月23日 (月)

デザインの結構大幅な変更

  • メインウインドウに常に検索フィールドが出るようにした。検索フィールド(CompletableSearcField)は,バックグランドに薄く「患者検索」という文字が出るようになっていて,この文字は検索語を入力すると消える。
    ほとんど出番がなくなった更新ボタンは,ステータスバーの左端に持っていった。

    Mainwindow

  • 患者検索フィールドに入力すると,自動的に患者検索パネルに切り替わる。
    検索語を入力するとフィールドの右端に X がでて,ここをクリックすると検索語がクリアされるようになっている。

    Mainwindow2

  • インスペクタ画面。アイコンをシックな白黒アイコン(DefaultIcon ver 2.0)に変えた。
    ツールパネルに病名検索フィールドを付けた。

    Inspector

  • 病名スタンプをここから検索して入力することができる。コードヘルパーのスタンプ検索入力を知ってから,入力スタイルが一変してしまった。入力するものが決まっているときは,検索入力の方がずっと速い。一方,迷いながら入力するような時はスタンプ箱の方が便利である。

    Inspector1   Inspector2_2

  • メニューとスタンプ箱のアイコンも白黒のシックなものにした。

    Menu   Stampbox

2017年1月18日 (水)

Code Helper の改造

Code Helper というのは,カルテ入力中,文頭から登録したキーワード(tx, rp 等)を打って ctrl + return でスタンプ箱の内容がポップアップメニューとして表示されるという機能である。この使い方しかしていなかったのだが,リファクタリング中にコードを読んでいて,実は Code Helper の機能はこれだけではないことが分かって驚いた。なんと,入力文字列がキーワードに一致しない場合,そのテキストを検索文字として解釈し,スタンプ箱からスタンプを検索して,ポップアップメニューにまとめて表示してくれるという機能が組み込まれていたのだ。OpenDolphin を使い始めて 9年になるが,まだ知らない機能があったとは。
 オリジナルでは,"^text.*" の検索をするようになっていたが,これを ".*text.*" に変えて,さらに大文字・小文字を無視するようにした。また,SOA pane で病名にも対応するように改造した。

Codehelper_2

右上:P pane で「創処置」と入れると創処置を含むポップアップメニューが出る(これは今まで知らなかったオリジナルの機能)。右下:「hs」と入力すると,大文字小文字は無視して「hs]を含んでいるスタンプを全て表示する。左上:SOA pane で dx を入れると病名ポップアップが表示される。左下:SOA pane での検索は,テキストスタンプだけでなく病名も検索し,ポップアップに表示する。

2017年1月15日 (日)

BasicInfoInspecter の表示

BasicInfoInspecter でカナ名も出すことにした。名前が長いと欠けてしまうので,deriveFont で無理矢理詰め込む処理を組み込んだ。

Jugem

// 名前が長い場合は,カナ名を圧縮する
if (kanjiName.length() + kanaName.length() > 15) {
  float sy = (float) (15.5 - kanjiName.length()) / kanaName.length();
  Font font = nameLabel.getFont().deriveFont(AffineTransform.getScaleInstance(sy, 1));
  kanaLabel.setFont(font);
}

より以前の記事一覧

その他のカテゴリー