ダイアログの設定

org.eclipse.jface.dialogs パッケージは、キー付きの値を保管し、取り出すためのユーティリティー・クラス DialogSettings を提供しています。このクラスを使用すると、キー名に関連付けられているプリミティブ・データ型とストリング値を保管し、取り出すことができます。設定値は、XML ファイルを使用してロードおよび保管されます。

AbstractUIPlugin は、プラグインのディレクトリー内の XML ファイルに保管されているプラグイン全体のダイアログの設定値をサポートします。ダイアログの設定ファイルがプラグイン・ディレクトリーに見つからない場合は、空の DialogSettings が作成されます。プラグインがシャットダウンするときに、そのプラグインに追加されたすべての設定値が XML ファイルに保管され、次回そのプラグインが開始したときに取り出されます。

ダイアログの設定値には、プラグイン・コードの任意の場所からアクセスすることができます。以下のコードのスニペットは、readme ツールのダイアログの設定値を取得する方法を示しています。

      IDialogSettings settings = ReadmePlugin.getDefault().getDialogSettings();

値は、get および put メソッドを使用して保管および取得することができます。 get メソッドは、アクセスされるプリミティブ型の後に指定されます。保管および取得できるのは、boolean、long、double、float、int、array、および string 型の値です。以下のコードのスニペットは、ダイアログ内のコントロールの値をダイアログの設定値を使用して初期化する方法を示しています。

   protected Control createDialogArea(Composite parent) {
      IDialogSettings settings = ReadmePlugin.getDefault().getDialogSettings();
      checkbox = new Button(parent,SWT.CHECK);
      checkbox.setText("Generate sample section titles");
      // initialize the checkbox according to the dialog settings
      checkbox.setSelection(settings.getBoolean("GenSections"));
   }

設定値は、「OK」ボタンが押された後に保管されます。

   protected void okPressed() {
      IDialogSettings settings = ReadmePlugin.getDefault().getDialogSettings();
      // store the value of the generate sections checkbox
      settings.put("GenSections", checkbox.getSelection());
      super.okPressed();
   }

ダイアログの境界設定

一般的に、ダイアログ設定の定義および解釈は、プラグインにより行われます。ただし、ダイアログの最後のサイズと位置を記憶し、次の起動時にダイアログをそのサイズと位置で開けるようにするために使用される、JFace ダイアログ・フレームワーク内部で定義されるいくつかの固有のダイアログ設定キーがあります。このフレームワークはダイアログのサイズと位置を照会および保管するための作業を行いますが、ユーザーは、ダイアログの境界情報を保管するのに使用される IDialogSettings インスタンスを提供するメソッドを実装する必要があります。以下のスニペットは、SectionsDialog がどのようにこのフィーチャーを活用できるかを示しています。

   protected IDialogSettings getDialogBoundsSettings() {
	   return ReadmePlugin.getDefault().getDialogSettings();
   }

このメソッドを実装すると、SectionsDialog のサイズと位置が、プラグインのダイアログ設定内の事前定義されたキーに保管され、ダイアログが以前の位置で開かれるようになります。