SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Eclipse RCPプログラミング

Eclipse RCPプログラミング 2:用意されたコンポーネントの利用

イントロ、ヘルプ、進捗、更新の実現


  • X ポスト
  • このエントリーをはてなブックマークに追加

ヘルプシステムの利用

 Eclipseにはユーザーにヘルプを提供するための数々の方法が提供されています。例えば、検索機能がついた通常のヘルプ、MS Office製品に多い[F1]キーを押すことによって起動するコンテキスト・ヘルプ、起動時に製品の概要を表示するイントロ、製品の使い方をステップ・バイ・ステップで説明するチートシートがあります。

コンテキスト・ヘルプ

 コンテキスト・ヘルプはボタンやラベル、メニューなどのウィジェットコンポーネントに対して、[F1]が押された場合に表示するヘルプをマッピングすることで実現します。具体的には、IWorkbenchHelpSystemインターフェイスを利用して対応するコンテキスト・ヘルプを定義していきます。

コンテキスト・ヘルプ拡張の定義

 まずは拡張として、どんなコンテキスト・ヘルプを用意するかを定義します。拡張ポイント「org.eclipse.help.contexts」に拡張contextsを追加します。

「plugin.xml」の定義
・・・
<extension
        point="org.eclipse.help.contexts">
    <contexts file="context.xml"/>
</extension>
・・・

 ここで、拡張に「context.xml」というxmlファイルを指定しています。このxmlファイルはヘルプの目次を定義するファイルです。簡単な書き方は次のとおりです。

コンテキスト定義(context.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となることに注意してください。

 対応を定義するインターフェイスであるIWorkbenchHelpSystemIWorkbenchインターフェイスから取得することができます。

サンプル・ビューへのヘルプの追加(View.java)
@Override
public void setFocus() {
    getSite().getWorkbenchWindow().getWorkbench().getHelpSystem().
        setHelp(viewer.getControl(), "rcp.with.contextHelp.view");
    viewer.getControl().setFocus();
}
終了アクションへのヘルプの追加(ApplicationActionBarAdvisor.java)
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を開くことかもしれません。

 このように、アクティブなビュー・エディターによって動作が異なるが意味的には一緒であるアクションを再指定可能アクションと呼びます。例えば、コピーを例に再指定可能アクションの流れを見ると、次のようになります。

  1. コピーアクションが選択される
  2. コピーアクションの選択がEclipseに通知される
  3. Eclipseが現在選択されているパートを取得する。
  4. ID:org.eclipse.ui.edit.copyが登録されているかどうか問い合わせる
  5. 登録されているアクションを実行する

ActionFactory

 再指定可能アクションを含む多くのアクションは、ActionFactoryクラスに集中的に宣言されています。Eclipseで事前に用意されているアクションを利用する場合は、このActionFactoryクラスを利用します。

アクションの宣言と追加(ActionBarAdvisorクラス)
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ビュー表示のショートカットメニュー。
アクションとメニュー
 表は、Eclipseで用意されているアクションとメニューのほんの一部です。
 完全なアクションのリストは添付されているサンプルコードを参照してください。

まとめ

 RCPにはユーザービリティを向上させるための数々のコンポーネントがあり、XMLファイルの編集やわずかなコード追加で再利用することができます。Eclipse RCPを採用する大きなメリットとしては、既に多くのユーザーに利用されている汎用コンポーネントを低コストで自分のアプリケーションに導入できる点に尽きると思います。

参考資料

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Eclipse RCPプログラミング連載記事一覧
この記事の著者

NTTデータ先端技術株式会社 志田 隆弘(シダ タカヒロ)

<NTTデータ先端技術株式会社について>データベース、ネットワーク、OS、ミドルウェアの基盤技術を武器にシステムの技術面でのコンサルテーションや最新製品の調査を行う専門家集団。<筆者について>Ja-Jakartaプロジェクトの末席にこっそりと参加しています。たまにJavaなイベントに出没します。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/353 2006/07/12 17:38

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング