Les natures du projet permettent à un plug-in de marquer un projet en tant que type spécifique de projet. Par exemple, le JDT utilise une "nature Java" pour ajouter aux projets un comportement spécifique à Java.
Les natures sont installées sur une base par projet et sont configurées automatiquement une fois ajoutées à un projet et déconfigurées une fois supprimées. Un projet peut avoir plusieurs natures.
Pour implémenter votre propre nature, vous devez définir une extension et fournir une classe qui implémente IProjectNature.
Le point d'extension org.eclipse.core.resources.natures est utilisé pour ajouter une définition de nature de projet. Les marques ci-dessous ajoutentune nature au plug-in hypothétique com.example.natures.
<extension
point="org.eclipse.core.resources.natures"
id="mynature"
name="My Nature">
<runtime>
<run class="com.example.natures.MyNature">
</run>
</runtime>
</extension>
La classe identifiée dans l'extension doit implémenter l'interface de la plateforme IProjectNature. Cette classe implémente un comportement spécifique du plug-in pour l'association d'informations spécifiques à la nature à un projet lorsque la nature est configurée.
public class MyNature implements IProjectNature {
private IProject project;
public void configure() throws CoreException {
// Add nature-specific information
// for the project, such as adding a builder
// to a project's build spec.
}
public void deconfigure() throws CoreException {
// Remove the nature-specific information here.
}
public IProject getProject() {
return project;
}
public void setProject(IProject value) {
project = value;
}
}
Les méthodes configure() et deconfigure() sont envoyées par la plateforme lorsque des natures sont ajoutées et supprimées d'un projet. Vous pouvez implémenter la méthode configure() pour ajouter un générateur à un projet comme expliqué à la section Générateurs.
Une fois la nature définie et sa classe implémentée, vous devez l'attribuer à un projet. L'extrait ci-dessous affecte notre nouvelle nature à un projet donné.
try {
IProjectDescription description = project.getDescription();
String[] natures = description.getNatureIds();
String[] newNatures = new String[natures.length + 1];
System.arraycopy(natures, 0, newNatures, 0, natures.length);
newNatures[natures.length] = "com.example.natures.mynature";
description.setNatureIds(newNatures);
project.setDescription(description, null);
} catch (CoreException e) {
// Something went wrong
}
L'identificateur utilisé pour la nature est le nom complet qualifié (ID du plug-in + ID d'extension) de l'extension de la nature.
Les natures sont généralement ajoutées à un projet lors de sa création. En général, vous fournissez un assistant de nouveau projet personnalisé qui capture vos informations spécialisées à propos d'un projet et y affecte votre nature.