ヘルプシステムの利用
Eclipseにはユーザーにヘルプを提供するための数々の方法が提供されています。例えば、検索機能がついた通常のヘルプ、MS Office製品に多い[F1]キーを押すことによって起動するコンテキスト・ヘルプ、起動時に製品の概要を表示するイントロ、製品の使い方をステップ・バイ・ステップで説明するチートシートがあります。
コンテキスト・ヘルプ
コンテキスト・ヘルプはボタンやラベル、メニューなどのウィジェットコンポーネントに対して、[F1]が押された場合に表示するヘルプをマッピングすることで実現します。具体的には、IWorkbenchHelpSystem
インターフェイスを利用して対応するコンテキスト・ヘルプを定義していきます。
コンテキスト・ヘルプ拡張の定義
まずは拡張として、どんなコンテキスト・ヘルプを用意するかを定義します。拡張ポイント「org.eclipse.help.contexts」に拡張contextsを追加します。
・・・ <extension point="org.eclipse.help.contexts"> <contexts file="context.xml"/> </extension> ・・・
ここで、拡張に「context.xml」というxmlファイルを指定しています。このxmlファイルはヘルプの目次を定義するファイルです。簡単な書き方は次のとおりです。
<?xml version="1.0" encoding="UTF-8"?> <contexts> <!-- コンテキストの定義 --> <context id="view"> <!-- 説明文を記述 --> <description>ビューはRCPアプリケーションの基本です </description> <!-- 関連するヘルプトピックを記述 --> <topic href="html/view.html" label="ビュー" /> </context> <context id="action"> <description>RCPアプリケーションでのアクション</description> <topic href="html/normalAction.html" label="通常アクション" /> <topic href="html/retargetAction.html" label="再指定可能アクション" /> </context> </contexts>
コンポーネントとの対応
次に、コンポーネントと表示するヘルプのIDをマッピングしていきます。ここで、ヘルプのIDはプラグインID + コンテキストxmlで定義したcontextのIDとなることに注意してください。
対応を定義するインターフェイスであるIWorkbenchHelpSystem
はIWorkbench
インターフェイスから取得することができます。
@Override public void setFocus() { getSite().getWorkbenchWindow().getWorkbench().getHelpSystem(). setHelp(viewer.getControl(), "rcp.with.contextHelp.view"); viewer.getControl().setFocus(); }
protected void makeActions(final IWorkbenchWindow window) { exitAction = ActionFactory.QUIT.create(window); register(exitAction); window.getWorkbench().getHelpSystem().setHelp( exitAction, "rcp.with.contextHelp.action"); }
ヘルプの表示
最初にサンプル・ビューを選択して[F1]キーを押してみましょう。
次に、[File]メニューを開いて[終了]アクションを選択している状態で、[F1]キーを押してみましょう。
それぞれ、異なるヘルプが表示されたことと思います。
アクション/メニュー一覧
最後に、Eclipseで用意されている数々のアクションと、メニューについて説明します。まず、アクションは大きく分けて2種類のアクションが用意されています。これは普通のアクションと再指定可能アクションです。
再指定可能アクション
例えば、「開く」というアクションを実行した場合、どのようなことが起こるかは選択しているUIによって異なります。ツリーを選択していたらツリーの子供を表示することになるかもしれせんし、ブラウザを選択していたら、URLを開くことかもしれません。
このように、アクティブなビュー・エディターによって動作が異なるが意味的には一緒であるアクションを再指定可能アクションと呼びます。例えば、コピーを例に再指定可能アクションの流れを見ると、次のようになります。
- コピーアクションが選択される
- コピーアクションの選択がEclipseに通知される
- Eclipseが現在選択されているパートを取得する。
- ID:org.eclipse.ui.edit.copyが登録されているかどうか問い合わせる
- 登録されているアクションを実行する
ActionFactory
再指定可能アクションを含む多くのアクションは、ActionFactory
クラスに集中的に宣言されています。Eclipseで事前に用意されているアクションを利用する場合は、このActionFactory
クラスを利用します。
private IWorkbenchAction exitAction; @Override protected void makeActions(final IWorkbenchWindow window) { exitAction = ActionFactory.QUIT.create(window); register(exitAction); } @Override protected void fillMenuBar(IMenuManager menuBar) { MenuManager fileMenu = new MenuManager( "&File",IWorkbenchActionConstants.M_FILE); menuBar.add(fileMenu); fileMenu.add(exitAction); }
ActionFactory
クラスには、代表的なものとして次のようなアクションが定義されています。
フィールド名 | 説明 |
COPY | コピーを行う再指定可能アクション。 |
CUT | 切り取りを行う再指定可能アクション。 |
PASTE | 貼り付けを行う再指定可能アクション。 |
UNDO | アンドゥを行う再指定可能アクション。 |
REDO | リドゥを行う再指定可能アクション。 |
PROPERTY | プロパティ表示を行う再指定可能アクション。 |
NEW | 新規作成ウィザードを起動するアクション。 |
IMPORT | インポートウィザードを起動するアクション。 |
EXPORT | エクスポートウィザードを起動するアクション。 |
NEW_EDITOR | エディタを開くアクション。 |
SAVE | アクティブなエディタを保存するアクション。 |
CLOSE | アクティブなエディタを閉じるアクション。 |
同様に、再利用可能なメニューはContributionItemFactory
にも定義されています。
フィールド名 | 説明 |
NEW_WIZARD_SHORTLIST | 新規作成ウィザードのショートカットメニュー。 |
PERSPECTIVES_SHORTLIST | パースペクティブ切り替えのショートカットメニュー。 |
VIEWS_SHORTLIST | ビュー表示のショートカットメニュー。 |
完全なアクションのリストは添付されているサンプルコードを参照してください。
まとめ
RCPにはユーザービリティを向上させるための数々のコンポーネントがあり、XMLファイルの編集やわずかなコード追加で再利用することができます。Eclipse RCPを採用する大きなメリットとしては、既に多くのユーザーに利用されている汎用コンポーネントを低コストで自分のアプリケーションに導入できる点に尽きると思います。
参考資料
- Eclipse.org
- 『Eclipse Rich Client Platform : Designing, Coding, And Packaging Java Applications』 Jeff Mcaffer・Jean-michel Lemieux 著、Addison-Wesley Pub、2005年10月