Comment créer une nouvelle nature de projet ?
04/06/2009 2 Comments
Ce billet entame une série de billets de type howto que je compte rédiger autour d’Eclipse en tant que plateforme de développement et non plus comme IDE.
Disons que c’est une sorte d’aide mémoire, pour moi certainement, et pour vous aussi je l’espère.
Le style sera un peu minimaliste : je vais aller directement à l’essentiel et au pratique, sans détailler la théorie de la chose : je vais montrer comment faire telle chose, pas ce qu’elle est ou à quoi elle sert.
Commençons par un point simple : Comment créer une nouvelle nature de projet ?
1. Définir la classe de la nature
Dans le plug-in qui va définir cette nature, modifier le manifest (META-INF/MANIFEST.MF) pour ajouter le bundle org.eclipse.core.resources (qui définit l’interface IProjectNature ainsi que le point d’extension org.eclipse.core.resources.natures) et org.eclipse.core.runtime (qui définit CoreException) :
Require-Bundle: org.eclipse.core.resources,
org.eclipse.core.runtime
Créez ensuite une classe qui implémente org.eclipse.core.resources.IProjectNature :
package com.developpez.djo.howto.nature;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectNature;
import org.eclipse.core.runtime.CoreException;
public class DummyNature implements IProjectNature {
public static final String NATURE_ID = "com.developpez.djo.howto.nature.dummyNature";
private IProject project;
public void configure() throws CoreException {
}
public void deconfigure() throws CoreException {
}
public IProject getProject() {
return project;
}
public void setProject(IProject project) {
this.project = project;
}
}
Notez le champ NATURE_ID que j’ai mis en public car ça va servir pour récupérer l’identifiant de la nature lors de son affectation à un projet par exemple.
2. Déclarer la nature dans plugin.xml
Il faut ensuite déclarer la nature dans plugin.xml :
<extension
id="dummyNature"
name="Ma nature de projets"
point="org.eclipse.core.resources.natures">
<runtime>
<run
class="com.developpez.djo.howto.nature.DummyNature">
</run>
</runtime>
</extension>
N.B. (casse gueule)
Là il vous faut être attention : dans l’attribut id, il faut mettre seulement la partie de l’identifiant de la nature qui vient après l’identifiant du plugin.
Par exemple, dans ce cas ci, le plugin qui définit la nature a comme identifiant “com.developpez.djo.howto” (déclare dans le manifest) :
Bundle-SymbolicName: com.developpez.djo.howto.nature;singleton:=true
L’identifiant complet de la nature est calculé de cette façon :
<nom-symbloique-du-bundle> . <id-de-la-nature-tel-que-saisi-dans-plugin.xml>
com.developpez.djo.howto.nature . dummyNature
Ce qui donne : com.developpez.djo.howto.nature.dummyNature, et c’est cette valeur là qu’il faut mettre dans le champ NATURE_ID.
3. Associer une image (overlay) à la nature
Pour associer une image à la nature (c’est un overlay qui sera affiché au dessus de l’icône du dossier bleu d’un projet), il faut passer par un autre point d’extension qui est “org.eclipse.ui.ide.projectNatureImages” qui se trouve dans le plug-in “org.eclipse.ui.ide”. il vous faut donc ajouter ce plugin dans la section Require-Bundle du manifest (quoi que j’ai remarqué que même si j’ajoute pas une dépendance vers ce plugin, ça fonctionne quand même), et ensuite, dans plugin.xml, ajoutez :
<extension
point="org.eclipse.ui.ide.projectNatureImages">
<image
icon="icons/dummy-nature.png"
id="com.developpez.djo.howto.nature.dummyNature.img"
natureId="com.developpez.djo.howto.nature.dummyNature">
</image>
</extension>
Dans icon, utilisez le nom relatif d’une icône (de petite taille de préférence, genre 8×8). Dans id, renseigner n’importe quoi du moment que ça reste unique et un identifiant valide. Personnellement, j’ajoute “.img” à l’id de la nature. Enfin, dans natureId, renseigner l’identifiant complet de la nature.
N.B. (casse gueule)
N’oubliez pas d’inclure le dossier icons dans le binary build.
4. Source
Projet Eclipse (dans un jar) : com.developpez.djo.howto.nature.source_1.0.0.jar
Pingback: Howto create a new project nature in Eclipse « Jawher's Blog
Bonjour,
j’ai lu votre article , j’ai téléchargé le projet et je l’ai decompressé dans les plugins d’eclipse puis j’ai lancé eclipse pour tester le plugin mais j’ai rien remarqué !
en fait j’ai pas compris où va apparaitre la modification apportée par le plugin .
ce que je vais faire dans ma tâche c’est un plugin qui me permettra d’ajouter un nouveau type de projet lors de la création :
- Ajouter un type de projet dans la boite de dialogue de création de projet. Avec en plus la possibilité de mettre ce nouveau type de projet dans une “catégorie” (comme pour java par exemple on a dans la boite de dialogue java -> annotaion, Enum, class, interface …)
merci de m’aider je débute avec les plug ins java et pour le moment je trouve pas de solutions