Les pages de propriétés sont très similaires aux pages des préférences. La principale différence réside dans le fait que les pages de propriétés sont associées à une ressource particulière, alors que les préférences sont associées au plug-in lui-même.
Vous pouvez ajouter une page de propriétés à une ressource en utilisant le point d'extension org.eclipse.ui.propertyPages. Une page de propriétés de ressource est appelée à l'aide du menu Propriétés dans la vue du navigateur de la ressource. Ce menu est disponible lorsqu'une seule ressource est sélectionnée.
L'outil readme ajoute deux pages de propriétés.
<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>
Les deux pages contribuent aux objets de type IFile avec une extension de fichier .readme.
Les pages de propriétés ressemblent beaucoup aux pages de préférences, sauf qu'il n'y a pas de hiérarchie, ni de catégorisation des pages de propriétés. Dans la boîte de dialogue ci-dessous, les deux pages de propriétés du readme apparaissent dans la liste principale des pages.
Lorsque le plan de travail crée et lance une page de propriétés, il définit la ressource sélectionnée dans la page. Cette dernière peut utiliser la méthode getElement() pour obtenir son élément, un IAdaptable.
Le schéma de création des pages de propriétés est similaire à celui des pages de préférences, aussi nous ne nous attacherons qu'à ce qui est différent. Les pages de propriétés affichent des informations sur leur élément. Ces informations peuvent être obtenues en accédant à l'élément afin de demander ou de calculer les informations appropriées. Les informations peuvent être également stockées et extraites des propriétés de la ressource.
ReadmeFilePropertyPage calcule la plupart de ses informations à l'aide de l'élément. L'extrait ci-dessous montre comment le nombre de sections est calculé et affiché dans un libellé.
...
IResource resource = (IResource) getElement();
...
IAdaptable sections = getSections(resource);
if (sections instanceof AdaptableList) {
AdaptableList list = (AdaptableList)sections;
label = createLabel(panel, String.valueOf(list.size()));
...
Lorsqu'une propriété est calculée, point n'est besoin de logique correspondante pour sauvegarder la valeur, du fait que l'utilisateur ne peut pas mettre à jour cette valeur.
Les pages de propriétés sont couramment utilisées pour l'affichage et la définition des propriétés d'une ressource spécifiques à l'application. Pour plus d'informations sur les propriétés de session et persistantes, reportez-vous aux Propriétés des ressources. Comme la page des propriétés connaît sa ressource, l'API des ressources peut être utilisée dans la page pour initialiser les valeurs de contrôle ou pour définir de nouvelles valeurs de propriété, en fonction des sélections de l'utilisateur dans la page des propriétés.
L'extrait de code ci-dessous montre l'initialisation de la valeur d'une case à cocher à partir d'une propriété dans un élément de page de propriétés.
private void initializeValues() {
...
IResource resource = (IResource) getElement();
label.setText(resource.getPersistentProperty("MyProperty"));
...
}
Le code correspondant à la sauvegarde de la valeur de la case à cocher dans la propriété ressemble à ce qui suit :
private void storeValues() {
...
IResource resource = (IResource) getElement();
resource.setPersistentProperty("MyProperty",
label.getText());
...
}