第15回 テキストエディターのタブ化

公開日:2018-10-14 更新日:2019-05-14

1. 内容

1. 概要

テキストエディターのタブ化とリフレクションを使った独自イベント処理の追加を行いました。

2. 動画



3. 補足

1. EventManagerクラス

独自イベント処理を行うクラスです。
イベント名をキーにして、イベントハンドラー(イベントを受け取るクラス)をリストで保持します。
イベントの発生依頼が来た場合には、イベントハンドラーに対して、
イベント名と同じメソッド名のメソッドを呼び出します。

2. ファイルオープンからタブ追加までの流れ

ファイルが開かれたら、メインフォームがプラグイン生成イベントを発生させます。
次に、このイベントをタブで受け取り、プラグインをタブに配置します。

ポイントは、フォーム側でタブを直接操作するのではなく、イベントで通知する点です。
今回はタブでプラグイン生成イベントを受け取っていますが、
タブ以外のコントロールに変更した場合でも、
フォーム側を変更することなく、コントロールを入れ替えるだけで対応できます。

3. ファイルクローズからタブ削除までの流れ

タブを閉じる時には、右クリックメニューから閉じる場合と、メインメニューから閉じる場合があります。
この2つの流れを共通化させるため、今回はプラグイン終了イベントを使用しています。

まず、閉じるメニューがクリックされた場合、対象のプラグインを終了させます。
すると、プラグイン終了イベントが発生するため、
このイベントをタブが受け取って、対象となるタブを削除するようにしています。
これにより、タブ以外のコントロールに変えても、メインメニューの閉じる処理の変更は不要となります。
メインメニューは、あくまでも対象となるプラグインの削除だけを行えば良くなります。

4. 画面

画像1

画像2

5. 今後の課題

1. 見出しリストの表示

テキストの左側に見出しリストを表示して、クリックされたら本文中の見出しのある位置にカーソルを移動できるようにします。

2. 左側の余白の不具合対応

BOMが入っている場合などに、左側の余白がおかしくなる不具合の対応。なおらんのかもしれへん。

3. grep

指定されたキーワードを含むファイルを検索して一覧で表示する。
そして、一覧でダブルクリックされたら、そのファイルを開くようにする。

4. その他

ファイルツリー・リストを付けた3ペイン構成にする、プラグインでテキストの加工を行えるようにする、プラグインでカレンダーをつけて日記をつけられるようにする、などなど。

ダウンロード

ver実行ファイルソース
1.1.1
2018/10/14
ncm_1_1_1.zipncm_1_1_1_src.zip