プロパティー・ページは、設定ページに非常に似ています。基本的な違いは、設定ページがプラグイン自体と関連付けされているのに対して、プロパティー・ページは特定のリソースに関連付けされているという点です。
ユーザーは、 org.eclipse.ui.propertyPages 拡張ポイントを使用することで、 プロパティー・ページをリソースに追加できます。 リソースのプロパティー・ページは、「リソース・ナビゲーター (Resource Nabigator)」ビューの「プロパティー (Properties)」メニューを使用して起動されます。 このメニューは、単一のリソースが選択されたときに選択可能です。
README ツールは、2 つのプロパティー・ページを追加します。
<extension
point = "org.eclipse.ui.propertyPages">
<page
id="org.eclipse.ui.examples.readmetool.FilePage"
name="Readme Tool"
objectClass="org.eclipse.core.resources.IFile"
class="org.eclipse.ui.examples.readmetool.ReadmeFilePropertyPage"
nameFilter="*.readme">
</page>
<page
id="org.eclipse.ui.examples.readmetool.FilePage2"
name="More Readme Info"
objectClass="org.eclipse.core.resources.IFile"
class="org.eclipse.ui.examples.readmetool.ReadmeFilePropertyPage2"
nameFilter="*.readme">
</page>
</extension>
これらのページは共に、.readme ファイル拡張子が付いた IFile 型のオブジェクトに対して追加されます。
プロパティー・ページは、プロパティー・ページの階層またはカテゴリー化が存在しないことを除いて、設定ページに非常に似ています。次のダイアログでは、README プロパティー・ページは共に、ページのメイン・リストに表示されます。
ワークベンチがプロパティー・ページを作成して起動する時は、ワークベンチは選択されたリソースをそのページに設定します。ページは getElement() メソッドを使用して、 そのエレメント IAdaptable を取得できます。
プロパティー・ページを作成するパターンは、設定ページを作成するパターンと同様です。このため、異なっている部分のみを解説します。プロパティー・ページは、そのエレメントの情報を表示します。この情報は、 関連する情報を照会または計算するために、そのエレメントにアクセスすることによって取得できます。 情報はリソースのプロパティーに保管され、そこから検索することもできます。
ReadmeFilePropertyPage は、そのエレメントを使用して、そのページの情報のほとんどを計算します。以下のコードの断片的は、セクションの数が計算されてラベルに表示される方法を示しています。
...
IResource resource = (IResource) getElement();
...
IAdaptable sections = getSections(resource);
if (sections instanceof AdaptableList) {
AdaptableList list = (AdaptableList)sections;
label = createLabel(panel, String.valueOf(list.size()));
...
プロパティーが計算されると、値を保管するための対応するロジックは必要ありません。これは、ユーザーがこの値を更新することができないためです。
プロパティー・ページは、1 つのリソースのアプリケーション固有の プロパティーを 表示および設定するために、一般的に使用されます。(セッションおよび永続プロパティーの解説は、『リソース・プロパティー』を参照してください。) プロパティー・ページはそのリソースを認識しているため、リソース API をこのページで使用して、 制御値を初期化、またはプロパティー・ページのユーザー選択に基づく新規プロパティー値を設定できます。
以下のコードの断片は、プロパティー・ページのエレメントのプロパティーによって初期化されるチェック・ボックス値を表示します。
private void initializeValues() {
...
IResource resource = (IResource) getElement();
label.setText(resource.getPersistentProperty("MyProperty"));
...
}
プロパティーにチェック・ボックス値を保管するための対応するコードは以下のようになっています。
private void storeValues() {
...
IResource resource = (IResource) getElement();
resource.setPersistentProperty("MyProperty",
label.getText());
...
}