Cet exemple montre comment ajouter une nature de projet personnalisée à un sous-projet. La présence ou l'absence de la nature du projet peut ensuite permettre de contrôler la visibilité des éléments de menu.
Pour ajouter l'exemple de nature du projet au sous-projet, cliquez avec le bouton droit de la souris sur le sous-projet et sélectionnez l'action Actions de l'échantillon d'API > Ajouter une nature de projet.
Au niveau conceptuel, les natures de sous-projet dans Rational Developer for System z sont semblables à IProjectNature dans le produit Eclipse de base. Elles permettent de faire la distinction entre des sous-projets distants basés sur la fonctionnalité activée pour chaque sous-projet.
Pour définir une nature de projet personnalisée pour un sous-projet distant, vous devez créer une classe qui implémente l'interface ILogicalSubProjectNature. La classe SampleNature contient alors le code suivant :
public class SampleNature implements ILogicalSubProjectNature {
......
}
L'interface ILogicalSubProjectNature est relativement simple. Dans SampleNature, vous ajoutez simplement une zone privée project pour la propriété du projet.
Vous pouvez trouver le code source complet dans SampleNature.java.
Pour terminer la définition de la nature du projet, déclarez la classe SampleNature dans le manifeste du plug-in comme suit :
<extension
id=“samplenature”
name=“
point=“com.ibm.ftt.projects.core.natures”>
<nature class=“com.ibm.ftt.api.samples.natures.SampleNature”/>
</extension>
Ce fragment de code définit une nature de projet avec l'ID com.ibm.ftt.api.samples.samplenature, obtenue par l'ajout de l'ID d'extension samplenature à l'ID du plug-in de définition com.ibm.ftt.api.samples.
L'élément de menu Ajouter une nature de projet est implémenté par la classe AddSubProjectNatureAction. Sa méthode run(IAction) ajoute la SampleNature via la transmission de l'ID de la nature à la méthode addNatureId(String) de ILogicalSubProject.
try {
getSubProject().addNatureId("com.ibm.ftt.api.samples.samplenature");
} catch (CoreException e) {
// TODO: in production code exception should be handled for real
e.printStackTrace();
}
Vous pouvez trouver le code source complet dans AddSubProjectNatureAction.java.
L'action est ajoutée via les mécanismes d'ajout standard d'Eclipse.
<objectContribution
adaptable=“false”
objectClass=“com.ibm.ftt.projects.core.logical.ILogicalSubProject”
id=“com.ibm.ftt.api.samples.addnature”>
<action
label=“
class=“com.ibm.ftt.api.samples.natures.AddSubProjectNatureAction”
id=“com.ibm.ftt.api.samples.addnatureaction”/>
</objectContribution>
L'élément de menu Supprimer la nature du projet est implémenté par la classe RemoveSubProjectNatureAction. Sa méthode run(IAction) supprime la SampleNature via la transmission de l'ID de la nature à la méthode removeNatureId(String) de ILogicalSubProject.
try {
getSubProject().removeNatureId(“com.ibm.ftt.api.samples.samplenature”);
} catch (CoreException e) {
// TODO: in production code exception should be handled for real
e.printStackTrace();
}
Vous pouvez trouver le code source complet dans RemoveSubProjectAction.java.
L'action est ajoutée via les mécanismes d'ajout standard d'Eclipse, de la même façon que pour l'élément de menu Ajouter une nature de projet, avec en plus l'utilisation de filtres d'action. A cause de ces derniers, l'action Supprimer la nature du projet apparaît uniquement si la SampleNature a été ajoutée au projet en question.
<objectContribution
adaptable=“false”
objectClass=“com.ibm.ftt.projects.core.logical.ILogicalSubProject”
id=“com.ibm.ftt.api.samples.removenature”>
<filter
value=“com.ibm.ftt.api.samples.samplenature”
name=“projectNature”/>
<action
label=“
class=“com.ibm.ftt.api.samples.natures.RemoveSubProjectNatureAction”
id=“com.ibm.ftt.api.samples.removenatureaction”/>
</objectContribution>