Syndication : Atom 1.0  RSS 2.0
Blogs des développeurs   »   @Repository("djo")

Article complet: Comment créer une nouvelle nature de projet ?

04/06/2009

Permalink 02:06:07, Catégories: Récapitulatif, Récapitulatif Eclipse, Outils, Platform, 737 mots   French (FR) , djo.mos

[Eclipse][Java] Comment créer une nouvelle nature de projet ?

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 ?

[Suite:]

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 :
name="Ma nature de projets"

<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 8x8). 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

Social Bookmarking:

                                     

Commentaires, Pingbacks:

Connectez-vous pour vous abonner à cet article:

Flux de commentaires pour cet article : Atom 1.0  RSS 2.0
Commentaire de: zeth696 [Membre]
merci de cette article qui semble parfaitement indiquer tout ce qu'il faut faire pour définir une nature de projet à eclipse.

aurais tu un exemple d'utilisation ? juste en donnant les grandes lignes comment fait tu ensuite pour ajouter les fonctionnalités comme celle d'un projet web dynamic et autres.
Permalien 04/06/2009 @ 08:58
Commentaire de: djo.mos [Membre]
zeth696> Merci :)
C'est prévu dans un futur billet : comment créer un projet et y associer une nature.
Permalien 04/06/2009 @ 12:15
Commentaire de: benwit [Membre]
Super, on va pouvoir corriger les lacunes de "com.google.appengine.eclipse.core.gaeNature" !!!
Permalien 04/06/2009 @ 14:33
Commentaire de: Hikage [Membre] · http://hikage.developpez.com
Encore et toujours des sujets plus qu'intéressant !
Merci et continue surtout !
Permalien 04/06/2009 @ 22:02
Commentaire de: djo.mos [Membre]
Merci à tous pour vos retours, ça fait vraiment plaisir et ça donne envie de continuer :)
Permalien 05/06/2009 @ 00:40
Commentaire de: hodac [Membre]
Bonjour,

je débute avec les natures de projets. Maintenant qu'on a une nature de projet, comment on fait pour qu'elle apparaisse dans le new project wizard (dans l'arbre qui permet de créer des projets java, plugins, etc...)?

en gros, je voudrais créer un wizard (WIZARD) qui s'ouvrirait en cliquant sur

file->new->project->->mon type de projet->WIZARD
Permalien 21/09/2009 @ 13:39
Commentaire de: bulldo [Membre]
Bonjour,

j'ai lu votre article , j'ai téléchargé le projet et je l'ai decompréssé dans les plugins d'eclipse puis j'ai lancé eclipse pour testé le plugin mais j'ai rien remarqué !
en fait j'ai pas compris où va apparaitre la modification apporté 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 tout comme les projet java . Meme objectif que hodac

merci de m'aider je débute avec les plug ins java et pour le moment je trouve pas de solutions
Permalien 09/07/2010 @ 10:56

Vous devez être identifié pour poster un commentaire.

Liste des blogs

@Repository("djo")

Ce blog tourne autour des nouvelles technologies dans le monde Java, tel que Wicket, Eclipse, JSF, Facelets, JPA, Spring, etc. mais aussi de choses moins classiques comme Scala par exemple !

Catégories


Rechercher

<  Février 2012  >
Lun Mar Mer Jeu Ven Sam Dim
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29        

Syndiquez ce blog XML

Articles :

Commentaires :

 
 
 
 
Partenaires

Hébergement Web