プラグイン作って覚えたことを淡々と記録するよ(ヘルプ編とおまけ)
Derbyプラグインを作ったのは良いんだけど,SQL(特にDDL)に疎くて今ひとつストレスがたまる。そんなわけで,せめてDerbyのリファレンスマニュアルをIDEAのヘルプに仕込めないか調べてみた。
ヘルプの組み込み
IDEAへの設定自体は結構,簡単。ヘルプコンテンツはJavaHelp形式を用いるらしく,プラグイン・アーカイブにhelpディレクトリを作り,そこにJavaHelp形式のJarファイルを放り込んでおく。
<some-plugin> |-help/ | |-help.jar ... ファイル名は何でも良いみたい。 |-lib |-plugin.jar
次に,plugin.xmlにヘルプが存在することを指定してあげる。
=== plugin.xml === : </project-components> <!-- helpディレクトリからの相対パスっぽい --> <!-- ↓ --> <helpset file="help.jar" path="/helpset.hs"/> <!-- ↑ --> <!-- JavaHelpのJarファイルに含まれているHelpSetのパス -->
こんだけで,IDEAのヘルプに指定したJavaHelpが追加される。
コンテキストヘルプの設定方法
こっからは試したワケじゃないので,ウソ言ってる確率高いよ。
SettingsEditorConfigurableなんかのConfigurableインターフェイスの子ども達が持っている
@Nullable @NonNls public String getHelpTopic()
は,JavaHelpのマップファイルに記述したmapIDのtarget名を指定する。
たぶん,他のJavaHelp間でtarget名が重複しないよう,各々のヘルプコンテンツでtarget名がユニークになるような工夫をしとくんだろうな。
なお,独自のボタンとかからヘルプを起動したい場合は,こんなコードを書く。
HelpManager.getInstance().invokeHelp("target名を指定");
ps.
JavaHelpを使うってところまでわかった時点で,JavaHelpのオーサリング・ツール探しの旅に出たのだが,あまり良いのに巡り会えなくて,結局ヘルプの組み込みはやってないんだよね。:-P
ついでいうと,Derbyプラグインは,IDEAと同じJVMで動かしたのが仇となり,Perm領域を圧迫するんで,できればIDEAと別プロセスで起動できるようにしたいと思ってる(やり方模索中)。