RCPモードのポップアップメニューについて その2
ポップアップメニューについて id:y-komoriさんからコメントを頂きました。ありがとうございます。こちらに転記します。
id:y-komori 2008/06/04 23:57
遅レスですみません・・・とりあえず、ポップアップメニューについて。
おおむね良いと思います。
問題は ViewPart の右上に表示するメニューの定義ですね。id を特殊な値にするという仕様は、使う側にとって忘れがち(「あれ、どのidにすればいいんだっけ?」という感じで・・・)なので、ほかにどうしようもない時以外は避けたいと思います。
のように viewPart 要素に menu 属性を追加するというのはどうでしょうか? tree や table のポップアップメニュー定義と同じ感じで覚えられて良いと思うのですが。
なるほど。了解です。viewPartにmenu属性を追加します。
id:y-komori 2008/06/05 00:06
五月雨ですみません。つづいて、サブメニューを持つメニューのアイコン表示不可について。
これは、Eclipse 本体のメニューを見ても、サブメニューを持ってるメニューでアイコン表示されているものはないですねぇ。Eclipseの仕様なのかしら?
どの段階で仕様になっているのか(SWTレベルでだめ? JFaceでだめ? ・・・)、一度確認したいですね。
Eclipseのメニュー周りは、どうも実装が中途半端な気がします。hoverIcon もJFace レベルで効かないし・・・
そうですね。Eclipse or JFaceの仕様な感じがします。サブメニューのアイコンはペンディングで。
menuのスキーマ
menuがcontrolの子要素にならないようにtrunkを戻しました。
control要素にmenu属性を追加した場合、AbstractControlRendererのsetMenuメソッドでヌルポで落ちます。RCP版ではmenuをRCPがレンダリングするため、MenuManagerRendererを保持していないためですが、MenuManagerRendererがnullならば何もしない分岐を追加してもよいですか。
表示可否の制御
PropertyTesterのエクステンションを使えば任意のロジックで表示可否ができます。UrumaでGenericPropertyTesterを用意し、アクションに@IsMenuShowアノテーションがあるメソッドをコールしようと思います。メソッドバインディングの実装方針ですが、MethodBindingSupportはEventListenerDefを前提にしているので、IsMenuShowDefのように新しいDefを追加するとアブストラクトクラスまですべてIsMenuShowDef用を作らないといけないため、改修とりファクタが大きいですが合わせたほうがよいですか。合わせなくても実装は可能です。現状手元ではひとまず後者で実装しています。