プラグイン作って覚えたことを淡々と記録するよ(ヘルプ編とおまけ)

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と別プロセスで起動できるようにしたいと思ってる(やり方模索中)。

おまけ(クリップボードにコピー)

Maven Repo Searchプラグインを組んでる時に覚えたので,ついでにメモっておく。

CopyPasteManager copyPasteManager = CopyPasteManager.getInstance();
copyPasteManager.setContents(new StringSelection("コピーしたい文字列を指定"));

上記のコードを,それらしいイベントで実行するとよろし。