<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>@Repository(&#34;djo&#34;) &#187; Platform</title>
	<atom:link href="https://blog.developpez.com/djo-mos/pcategory/eclipse/platform/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/djo-mos</link>
	<description></description>
	<lastBuildDate>Sun, 27 Sep 2009 00:05:37 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Comment créer une nouvelle nature de projet ?</title>
		<link>https://blog.developpez.com/djo-mos/p7704/eclipse/platform/comment_creer_une_nouvelle_nature_de_pro</link>
		<comments>https://blog.developpez.com/djo-mos/p7704/eclipse/platform/comment_creer_une_nouvelle_nature_de_pro#comments</comments>
		<pubDate>Thu, 04 Jun 2009 01:06:07 +0000</pubDate>
		<dc:creator><![CDATA[djo.mos]]></dc:creator>
				<category><![CDATA[Platform]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Ce billet entame une série de billets de type howto que je compte rédiger autour d&#8217;Eclipse en tant que plateforme de développement et non plus comme IDE. Disons que c&#8217;est une sorte d&#8217;aide mémoire, pour moi certainement, et pour vous aussi je l&#8217;espère. Le style sera un peu minimaliste : je vais aller directement à l&#8217;essentiel et au pratique, sans détailler la théorie de la chose : je vais montrer comment faire telle chose, pas [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Ce billet entame une série de billets de type <em>howto</em> que je compte rédiger autour d&rsquo;Eclipse en tant que plateforme de développement et non plus comme IDE.<br />
Disons que c&rsquo;est une sorte d&rsquo;aide mémoire, pour moi certainement, et pour vous aussi je l&rsquo;espère.</p>
<p>Le style sera un peu minimaliste : je vais aller directement à l&rsquo;essentiel et au pratique, sans détailler la théorie de la chose : je vais montrer comment faire telle chose, pas ce qu&rsquo;elle est ou à quoi elle sert.</p>
<p>Commençons par un point simple : Comment créer une nouvelle nature de projet ?</p>
<p><span id="more-194"></span></p>
<h1 style="text-align: left">1. Définir la classe de la nature</h1>
<p>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&rsquo;interface IProjectNature ainsi que le point d&rsquo;extension org.eclipse.core.resources.natures) et org.eclipse.core.runtime (qui définit CoreException) :</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Require-Bundle: org.eclipse.core.resources, <br />
&nbsp;org.eclipse.core.runtime</div></div>

</pre>
</blockquote>
<p>Créez ensuite une classe qui implémente org.eclipse.core.resources.IProjectNature :</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">package com.developpez.djo.howto.nature; <br />
&nbsp;<br />
import org.eclipse.core.resources.IProject; <br />
import org.eclipse.core.resources.IProjectNature; <br />
import org.eclipse.core.runtime.CoreException; <br />
&nbsp;<br />
public class DummyNature implements IProjectNature { <br />
&nbsp; public static final String NATURE_ID = &quot;com.developpez.djo.howto.nature.dummyNature&quot;; <br />
&nbsp;<br />
&nbsp; private IProject project; <br />
&nbsp;<br />
&nbsp; public void configure() throws CoreException { <br />
&nbsp;<br />
&nbsp; } <br />
&nbsp;<br />
&nbsp; public void deconfigure() throws CoreException { <br />
&nbsp;<br />
&nbsp; } <br />
&nbsp;<br />
&nbsp; public IProject getProject() { <br />
&nbsp; &nbsp; return project; <br />
&nbsp; } <br />
&nbsp;<br />
&nbsp; public void setProject(IProject project) { <br />
&nbsp; &nbsp; this.project = project; <br />
&nbsp; } <br />
}</div></div>

</pre>
</blockquote>
<p>Notez le champ NATURE_ID que j&rsquo;ai mis en public car ça va servir pour récupérer l&rsquo;identifiant de la nature lors de son affectation à un projet par exemple.</p>
<h1 style="text-align: left">2. Déclarer la nature dans plugin.xml</h1>
<p>Il faut ensuite déclarer la nature dans plugin.xml :<br />
 name=&nbsp;&raquo;Ma nature de projets&nbsp;&raquo;</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;extension <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;id=&quot;dummyNature&quot; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;name=&quot;Ma nature de projets&quot; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;point=&quot;org.eclipse.core.resources.natures&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;runtime&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;run <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;class=&quot;com.developpez.djo.howto.nature.DummyNature&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/run&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;/runtime&gt; <br />
&lt;/extension&gt;</div></div>

</pre>
</blockquote>
<h2 style="text-align: left">N.B. (casse gueule)</h2>
<p>Là il vous faut être attention : dans l&rsquo;attribut id, il faut mettre seulement la partie de l&rsquo;identifiant de la nature qui vient après l&rsquo;identifiant du plugin.<br />
Par exemple, dans ce cas ci, le plugin qui définit la nature a comme identifiant &laquo;&nbsp;com.developpez.djo.howto&nbsp;&raquo; (déclare dans le manifest) :</p>
<blockquote><pre><code class="codecolorer text default"><span class="text">Bundle-SymbolicName: com.developpez.djo.howto.nature;singleton:=true</span></code></pre>
</blockquote>
<p>L&rsquo;identifiant complet de la nature est calculé de cette façon :</p>
<pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;nom-symbloique-du-bundle&gt; . &lt;id-de-la-nature-tel-que-saisi-dans-plugin.xml&gt; <br />
com.developpez.djo.howto.nature &nbsp;. dummyNature</div></div>

</pre>
<p>Ce qui donne : com.developpez.djo.howto.nature.dummyNature, et c&rsquo;est cette valeur là qu&rsquo;il faut mettre dans le champ NATURE_ID.</p>
<h1 style="text-align: left">3. Associer une image (overlay) à la nature</h1>
<p>Pour associer une image à la nature (c&rsquo;est un overlay qui sera affiché au dessus de l&rsquo;icône du dossier bleu d&rsquo;un projet), il faut passer par un autre point d&rsquo;extension qui est &laquo;&nbsp;org.eclipse.ui.ide.projectNatureImages&nbsp;&raquo; qui se trouve dans le plug-in &laquo;&nbsp;org.eclipse.ui.ide&nbsp;&raquo;. il vous faut donc ajouter ce plugin dans la section Require-Bundle du manifest (quoi que j&rsquo;ai remarqué que même si j&rsquo;ajoute pas une dépendance vers ce plugin, ça fonctionne quand même), et ensuite, dans plugin.xml, ajoutez :</p>
<blockquote><pre>

<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;extension <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;point=&quot;org.eclipse.ui.ide.projectNatureImages&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;image <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; icon=&quot;icons/dummy-nature.png&quot; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; id=&quot;com.developpez.djo.howto.nature.dummyNature.img&quot; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; natureId=&quot;com.developpez.djo.howto.nature.dummyNature&quot;&gt; <br />
&nbsp; &nbsp; &nbsp; &lt;/image&gt; <br />
&lt;/extension&gt;</div></div>

</pre>
</blockquote>
<p>Dans icon, utilisez le nom relatif d&rsquo;une icône (de petite taille de préférence, genre 8&#215;8). Dans id, renseigner n&rsquo;importe quoi du moment que ça reste unique et un identifiant valide. Personnellement, j&rsquo;ajoute &laquo;&nbsp;.img&nbsp;&raquo; à l&rsquo;id de la nature. Enfin, dans natureId, renseigner l&rsquo;identifiant complet de la nature.</p>
<h2 style="text-align: left">N.B. (casse gueule)</h2>
<p>N&rsquo;oubliez pas d&rsquo;inclure le dossier icons dans le binary build.</p>
<h1 style="text-align: left">4. Source</h1>
<p>Projet Eclipse (dans un jar) : <a href="http://ftp-developpez.com/djo-mos/data/blog/howto-eclipse-platform/com.developpez.djo.howto.nature.source_1.0.0.jar">com.developpez.djo.howto.nature.source_1.0.0.jar</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
