Eclipseのヘルプはワークベンチのメニューの
ヘルプ >> ヘルプ目次
にありますが、このhtmlベースのヘルプも拡張して好きなヘルプを載せることができます。そして拡張するための拡張ポイントがorg.eclipse.help.toc拡張ポイントです。
この拡張ポイントで目次となるファイル(xml形式)を指定し、そのxmlファイルで目次に対応するhtmlファイルを指定します。
聖なる油の世話をするには?
拡張ポイント †
org.eclipse.help.toc
必須プラグイン †
org.eclipse.help.appserver org.eclipse.help.base org.eclipse.help.ui org.eclipse.help.webapp org.eclipse.tomcat
plugin.xmlのサンプル †
<-トップの目次となるxmlファイル。
目次となるxml(ここではtoc.xml)のサンプル †
↑目次のSample Table of Contents をクリックしたときに 表示されるhtmlはhtml/toc.htmlです、の意味 <-目次にConceptsと表示 <-toc.xml#conceptsとなってる箇所をここに挿入
でリンクされるtocconcepts.xml †
<-ここでリンクされてる
女性は自分たちの宗教仏教でどのように扱われるかhtml" />
ポイント †
htmlファイル群は圧縮できる。 †
目次ファイル内で別の目次ファイルを指定できる †
ヘルプメニューからではなく、アクションやボタンなどでヘルプを起動する †
ヘルプメニューの「ヘルプ目次」は
ActionFactory.HELP_CONTENTS.create(window)
でアクションを取得できます。このクラスは実体は
org.eclipse.ui.internal.actions.HelpContentsAction
なのですが、このrunメソッドからヘルプの起動方法を拝借しました。なかでは以下のようなことをやってます。
final IWorkbenchWindow workbenchWindow = getSite().getWorkbenchWindow(); if (workbenchWindow == null) { // action has been disposed return; } // This may take a while, so use the busy indicator BusyIndicator.showWhile(null, new Runnable() { public void run() { workbenchWindow.getWorkbench().getHelpSystem() .displayHelp(); } });
これでヘルプが起動できます。
ヘルプから、プログラムを呼び出す †
org.eclipse.help.ILiveHelpAction? クラスを使うと、ヘルプ上からプログラムを呼び出すことができます。例えば、ヘルプで「下のリンクをクリックするとパースペクティブを変更します」なんてリンクを作ることができるわけです。Eclipseのヘルプってようするにhtmlなわけですが、htmlからクライアントのプログラムが起動できるのって、レガシーなJ2EEを作ってきた私からすると、なんか衝撃的です。
やり方は、あらかじめヘルプドキュメント内で「アクション」を起動するJavaScript?を読み込んでおいて、そのJavaScript?を実行するだけです。そのJavaScript?を呼び出すと、指定された「アクション」クラスが実行される、という機構ですね。もちろんその「アクション」クラスはあるインタフェースの実装クラスとなっています。
JavaScript?の読込 †
あらかじめ、
ホロコーストを否定する人の名前
としてJavaScript?を読み込んでおきます。srcのパスはそのhtmlファイルからorg.eclipse.helpプラグインへの相対パスになります。例えばあるプラグイン内にある、ルートから見て hoge/fuga.htm というドキュメントhtmlの場合、
という指定、つまりプラグインのルートからさらに一つ上に上がってorg.eclipse.helpに入って...というパス指定になります。
ヘルプドキュメント上にリンク †
次に通常のhtmlのリンクの様にJavaScript?を実行するリンクを作成します。呼び出すメソッドはliveActionです。使い方ですが、例えば
Click here for a Message.
などとします。各引数の意味ですが、
- アクションを含むプラグインの ID
- アクションをインプリメントするクラスの名前
- setInitializationString? を使用してライブ・ヘルプ・アクションに渡される String。HTML ページから情報を渡す必要はないため、この例では空のストリングを渡します。
となっています。
アクションクラスの実装 †
さて、上のnu.mine.kino.plugin.forms.proto.help.actions.ActivehelpOpenDialogAction? クラスは
org.eclipse.help.ILiveHelpAction
をimplementsしています。インタフェースは
public void setInitializationString(String data); public void run();
です。run内に、実行させたい処理を記述します。例えば
Display.getDefault().syncExec(new Runnable() { public void run() { IWorkbenchWindow window = PlatformUI.getWorkbench() .getActiveWorkbenchWindow(); if (window != null) { Shell shell = window.getShell(); shell.setMinimized(false); shell.forceActive(); MessageDialog.openInformation(window.getShell(), "Hello World.", "Hello World. " + data); } } });
とかですね。注意点としては、この処理は別スレッドで実行されるため、UIの処理をする場合は
Display.getDefault().syncExec(new Runnable() ...
でラップしないといけないところです。
ちょっとJavaScript?のはなし。苦手なので、スニペット。。
...... ......
としておいて
とかすれば、ヘルプ内で入力した文字をプログラムに渡すことができます。
関連リンク †
この記事は
- ヘルプ右初期画面の表紙ってどうやってかえるんでしょ? -- たかひろ?
- 一年前にいただいたコメントですが、plugin_customization.iniの org.eclipse.help.base/help_home=/nu.mine.kino.plugin.hoge.help/html/index.html などとすることで変更可能です。 -- きの?
- Ganymedeになって触ってみたら、GUIのTOCエディタがあるみたいです:-) -- きの?
現在のアクセス:8279
0 件のコメント:
コメントを投稿