メニュー定義のインターフェース
メニューを定義するのはやっぱりオブジェクトに対して行うことにします。メニュー項目 1 つにつき 1 つのオブジェクトが対応します。
のような感じに。必要なプロパティは、
- 種別。アクションが割り当てられているか、いないか、仮想か
- アクションが割り当てられているときの、アクション名
- アクションが割り当てられていないときの、スクリプト
- アクションが割り当てられていないときの、メニューのキャプション
- 仮想でないときの、ショートカット
- 仮想であるときの、分類(1)
- 仮想であるときの、分類(2)
それから、メソッド。メニューの項目自体が、その下に階層化されたメニュー項目の親になりえるので、コレクション的な役割も持たせる必要があると思います。これはまあ、ありがちな感じに。
- Item()
- Add(), AddAction(), AddVirtual()
- Remove()
- Clear()
- Count
ところでツリー状に構成するので、すべてのルートとなる項目が 1 つ存在することになりますが、メニューバーには出ないです。当たり前だけど。
複数メニューのツリーを定義して、それぞれのルート項目をリストで持てば、実行中にまったく別体系のメニューに動的に変更できるなどという、無駄にスゴい機能を実現できるなー。
そんなもの必要なのかな。。。
たとえば 2 ちゃんねるブラウザを萌ディタ上で実装したとすると、メニューの体系がエディタ的なそれと全然異なります。そういう場合に使えばいいのかしら。
ちょっとやりすぎな感じがするので、とりあえずルートとなる項目はただ 1 つだけにしてみます。
by knife37
| 2004-11-13 21:42
| 妄想を申そう
| Top
|