第3回 HSQLDBをEclipseから扱うプラグイン

プラグインで設定を行う各種項目

 長尾君はプラグインで設定を行う各種項目について説明を始めた。

長尾君 「このHSQLDBプラグインでは、Databaseの名称、パスおよびポート番号の3つの項目を設定するんだ。それらの項目をEclipse上にて入力を行えるようにするとともにその内容を保存できるようにしよう」

項目 内容
HSQLDB Database名称 起動を行うデータベースの名称
HSQLDB Databaseパス 起動を行うデータベースの定義ファイルが存在するパス
HSQLDBポート HSQLDBで使用するポート番号

田中君 「3つの項目を設定できるようにするんだね。まず、Eclipseで項目設定ってどのように行うのかな?」
長尾君 「田中君も知っていると思うけど、Eclipseでは[ウィンドウ]→[設定]メニューから[設定ダイアログ]が表示されるよね。ここに[HSQLDB]を追加するんだ」

Eclipse設定ダイアログに
[HSQLDB]欄を追加

長尾君 「まずはEclipseの[設定ダイアログ]に対して[HSQLDB]欄を表示できるようにしよう.。マニフェストファイル[MANIFEST.MF]の拡張タブから、[追加]ボタンをクリックして[新規拡張]ダイアログを表示させよう」

[新規拡張]ダイアログ

長尾君 「[org.eclipse.ui.preferencePages]拡張ポイントを選択したら[終了]ボタンをクリックして、[拡張]タブに拡張ポイントが追加されているか確認しよう」

拡張ポイントが追加されました

長尾君 「さらに、追加した拡張ポイント[org.eclipse.ui.preferencePages]を右クリックして表示されるポップアップメニューから、[新規]→[page]と選択してpreferencePageを追加しよう」


コラム preferencePageについて
preferencePageとはEclipse設定画面を定義している拡張ポイントです。この拡張ポイントから設定画面を作成して、保存したい内容の定義を行います。設定した値については、プリファレンスストア(詳しくは後述)と呼ばれる領域に保存されることによって、Eclipseにて値を保持することができます。
今回定義した拡張ポイント[org.eclipse.ui.preferencePages]の詳細は、Eclipseのオンラインヘルプの[Platformプラグイン・デベロッパー・ガイド]→[解説]→[拡張ポイント参照]をご覧ください。

長尾君 「追加したpreferencePageのプロパティは以下のように設定を行おう」

プロパティ名称 説明および内容
Id (※) このアクションに対するプラグインで一意の値を設定します。 [HSQLDBPlugin. HSQLPreferencePage]と設定してください
name (※) Eclipse設定画面に表示される標題です。
HSQLDB]と設定してください
class(※) 設定画面のJava実装クラスを指定します。詳しくは後述します
category 設定画面上にて、設定項目を入れ子構造にする場合、ここには親のidを設定します。今回は使用しません

長尾君 「これらプロパティを設定したら、プロパティ設定画面の[class]のリンクをクリックして、Javaクラス設定画面を表示させよう」

Javaクラス設定画面

長尾君 「この画面でクラスを新規作成できることは覚えているよね」
田中君 「もちろんだよ。この場合は、必要となる親クラスやインターフェイスが自動設定されるんだよね」
長尾君 「そのとおりだよ。ここではパッケージ名は[hsqldb.preferences](1)、親クラスに[org.eclipse.jface.preference.PreferencePage](3)を持ち、[org.eclipse.ui.IWorkbenchPreferencePage](4)インターフェイスを実装するクラス、[HSQLPreferencePage](2)を作成しよう」

HSQLPreferencePageクラス
package hsqldb.preferences;

import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;

public class HSQLPreferencePage extends PreferencePage implements
      IWorkbenchPreferencePage {
    public HSQLPreferencePage() {
      super();
      // TODO 自動生成されたコンストラクター・スタブ
    }
    public HSQLPreferencePage(String title) {
      super(title);
      // TODO 自動生成されたコンストラクター・スタブ
    }
    public HSQLPreferencePage(String title, ImageDescriptor image) {
      super(title, image);
      // TODO 自動生成されたコンストラクター・スタブ
    }
    protected Control createContents(Composite parent) {
      // TODO 自動生成されたメソッド・スタブ
      return null;
    }
    public void init(IWorkbench workbench) {
      // TODO 自動生成されたメソッド・スタブ
    }
}

長尾君 「HSQLPreferencePageクラスにはいろいろなメソッドが定義されているけど、その中のコンストラクタに対して以下のソースを入力しよう」

HSQLPreferencePageクラス
  public HSQLPreferencePage() {
    setDescription("HSQLDB に関する設定です。");
    setPreferenceStore(HSQLDBPlugin.getDefault().getPreferenceStore());
  }
//以下省略

長尾君 「setDescriptionメソッドは、引数の文字列を設定することによって、この設定画面に対する説明文を表示することができるメソッドなんだ」
田中君 「setPreferenceStoreメソッドではどんなことを行っているの?」
長尾君 「プラグインでは、設定した内容はプリファレンスストア(PreferenceStore)と呼ばれる領域に保存されるんだ。そのプリファレンスストアの内容の取得とHSQLPreferencePageへの設定を行っているのさ」
長尾君 「先ほど作成した[HSQLDBPlugin]クラスのスタティックメソッドの[getDefault]を実行することによって、プラグインのインスタンスを取得できるんだ。さらに取得したプラグインの[getPreferenceStore]メソッドを実行することによってプリファレンスストアを取得することができるんだ。これによって、Eclipseの設定画面で設定した内容を取得できるようになるんだ」
田中君 「HSQLPreferencePageがインスタンス化される際に、プラグインが持っているプリファレンスストアの内容を設定していると考えればいいんだね?」
長尾君 「そのとおり!」

コラム:プリファレンスストアの保存場所について
プリファレンスストアの内容は
[workspace\.metadata\plugins\org.eclipse.core.runtime\.settings]フォルダにプラグインID.prefs というファイル名で保存されます。このファイルはEclipseにて管理を行うので、通常は意識することはありません。

長尾君 「ここまで実装したら、設定画面の動作確認を行おう。[設定ダイアログ]を表示させて、[HSQLDB]欄が追加されるとともに、説明文『HSQLDBに関する設定です。』が表示されているか確認しよう」


田中君 「ちゃんと表示されたよ」
長尾君 「[デフォルトの復元]と[適用]ボタンは自動的に作成されるから、いまのところ意識する必要はないよ」
田中君 「この画面に、入力画面(UI)を作成するんだね」
長尾君 「そうだよ、このUIを作るにはSWTというツールキットを活用するのだけど、田中君はSWTって知っている??」
田中君 「……すみません。まったく知りません」
長尾君 「そっか、じゃあ、明日までに勉強しておいて!」
田中君 「そんなぁ(泣)」

 次回はSWTと呼ばれるツールキットを活用して、HSQLDB設定画面のUIを作成します。お楽しみに!

3/3

Index
第3回 HSQLDBをEclipseから扱うプラグイン
  Page1
HSQLDBプラグインの機能
  Page2
プラグイン・プロジェクトからプラグイン作成を開始
Page3
プラグインで設定を行う各種項目



Java Solution全記事一覧



Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間