MBSCustomPageでprojectTypeを知りたい
前のページで選択したプロジェクトタイプに応じて,ウイザードの挙動を変えたいということは,よくある(よね?)
ページそのものの有効/無効は,ここに書くまでもない.特定のプロジェクトタイプの時だけ,コンボボックスを変えたい.
つまり,後のページで,CProjectPlatformPage の設定内容を知りたい,ということ.
ここで,CProjectPlatformPageと書いてしまったから,優秀な人ははもう解決できるかもしれない.私は優秀ではないので,
ここにメモをしておく.
最も無難そうな(後でコンパイルエラー無しのバグに悩まされなさそうな)解は,以下の通り.
IWizardPage page = MBSCustomPageManager.getPageData(CProjectPlatformPage.PAGE_ID).getWizardPage(); IProjectType type = ((CProjectPlatformPage)page).getSelectedProjectType();
もちろん,pageがCProjectPlatformPageのインヘリタンスかどうか,きっちり調べておくべき.
もうちょっとMBSCustomPageManagerの中身探ると,以下のような解も見えてくる.
MBSCustomPageManager.getPageProperty(CProjectPlatformPage.PAGE_ID, CProjectPlatformPage.PROJECT_TYPE);
こちらのほうが見た目がシンプルで個人的には好き.しかし,将来に渡って安全性が確保されるだろうか.CDTは前回のアップデートでプラグイン開発者を悶絶させるような非互換修正を山盛りでやってくれた前科があるので,一抹の不安は残る.
変更を知るには?
で,変更されたことを知るためのlistenerクラスはあるか? …私が調べた範囲では,残念ながら,ないらしい.PaintListenerをフックするなどad hocな手段で逃げるのが解として考えられる.変更を知りたい要求はあると思うので,そのうちaddPropertyChangeListener()とかが,どこかに付くのかもしれない.もしくは私が無知なだけで,既にどこかに美しい解を提供する仕組みがあるのかもしれない.