Undo の充実 (2) TextComponentUndoManager
これまで KarteEditor の JTextPane に TextComponentUndoManager を付けて undo ができるようにしてあったが,機能的には入力を1段階戻すだけの単純なものであった。
そのため,例えばスタンプを DnD で移動した場合,【ドロップしたスタンプを書き込む】【位置や改行などの調節】【元のスタンプを削除する】という一連の操作が行われるので,これを undo すると,undo 1回毎に【元のスタンプが復活】【改行などの調節が戻る】【ドロップしたスタンプが消える】と戻っていくことになる。できれば DnD の操作はまとめて1回で undo したいところである。また,英単語を打つ場合【english word】と打った後に undo すると,【english wor】【english wo】【english w】と1文字ずつ戻ることになる。ここはできれば,単語毎にまとめて消えて欲しいところである。
そこで,まず TextComponentUndoManager に Timer を組み込んで,短時間 (30 msec 以内) に連続しておきた操作は,1つにまとめてから UndoManager に登録するようにした。これによって DnD は1回の undo で戻るようになり,ATOK の漢字変換後の入力も,変換して入力した分が1回の undo で戻るようになった。また,アルファベット入力の場合は, 前の入力をチェックして,アルファベットだった場合は前の undo 情報にマージするようにして,word 単位の undo ができるようにした。
« Undo の充実 (1) StampHolder/SchemaHolder | トップページ | Undo の充実 (3) AtokListener »
「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)