<?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>ZeServeur &#187; workspace</title>
	<atom:link href="http://zeserveur.fr/blog/tag/workspace/feed" rel="self" type="application/rss+xml" />
	<link>http://zeserveur.fr/blog</link>
	<description>La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information…</description>
	<lastBuildDate>Sat, 06 Mar 2010 11:46:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>RCP Workspace</title>
		<link>http://zeserveur.fr/blog/2009/05/02/rcp-workspace</link>
		<comments>http://zeserveur.fr/blog/2009/05/02/rcp-workspace#comments</comments>
		<pubDate>Sat, 02 May 2009 09:07:28 +0000</pubDate>
		<dc:creator>zetom</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[rcp]]></category>
		<category><![CDATA[workspace]]></category>

		<guid isPermaLink="false">http://zeserveur.fr/blog/?p=38</guid>
		<description><![CDATA[Un workspace Eclipse est le répertoire où toutes les métadonnées des fichiers de préférences sont stockées (sous la forme de fichiers spécifiques Eclipse). Dans une application RCP, il se situe à la racine de l&#8217;application, dans le répertoire workspace.
Le problème en RCP, c&#8217;est que la plupart du temps, on a pas &#171;&#160;réellement&#160;&#187; besoin de ce [...]]]></description>
			<content:encoded><![CDATA[<p>Un workspace Eclipse est le répertoire où toutes les métadonnées des fichiers de préférences sont stockées (sous la forme de fichiers spécifiques Eclipse). Dans une application RCP, il se situe à la racine de l&#8217;application, dans le répertoire <em>workspace</em>.</p>
<p>Le problème en RCP, c&#8217;est que la plupart du temps, on a pas &laquo;&nbsp;réellement&nbsp;&raquo; besoin de ce répertoire (face à un client, &laquo;&nbsp;plugins&nbsp;&raquo;, &laquo;&nbsp;feature&nbsp;&raquo; et &laquo;&nbsp;configuration&nbsp;&raquo;, ça se justife&#8230; mais là ?!).</p>
<p>L&#8217;idée est donc de court-circuiter la création de ce répertoire pour le définir &laquo;&nbsp;à la main&nbsp;&raquo; lors du runtime.</p>
<p><span id="more-38"></span></p>
<h3>Le paramètre magique</h3>
<p>Il suffit tout simplement d&#8217;ajouter un paramètre à la ligne de command d&#8217;Eclipse pour lui indiquer que l&#8217;on va nous même lui spécifier l&#8217;emplacement du workspace.<br />
Evidemment, il faut le positionner dès le lancement de l&#8217;application sinon Eclipse va sortir en exception en indiquant qu&#8217;aucun workspace n&#8217;a été positionné.</p>
<p>Ce fameux &laquo;&nbsp;Program Argument&nbsp;&raquo; s&#8217;appelle <em>-data @noDefault</em>.</p>
<p>De manière à ce que l&#8217;application RCP prenne en compte toute seule ce changement, il suffit de l&#8217;indiquer dans votre <em>.product</em> (Onglet &laquo;&nbsp;Launching&nbsp;&raquo;):</p>
<p><img class="aligncenter size-full wp-image-39" title=".product arguments" src="http://zeserveur.fr/blog/wp-content/uploads/2009/05/args.jpg" alt=".product arguments" width="332" height="176" /></p>
<p>Il peut également être utile de le positionner dans les paramètres de lancement du Run:</p>
<p><img class="aligncenter size-full wp-image-40" title="args_tab" src="http://zeserveur.fr/blog/wp-content/uploads/2009/05/args_tab.gif" alt="args_tab" width="522" height="131" /></p>
<h3>Modification du répertoire</h3>
<p>Maintenant qu&#8217;Eclipse est déchargé de l&#8217;initialisation du workspace, on va simplement lui indiquer où se répertoire se trouve maitenant.</p>
<p>Pour être sûr que ce paramétrage fonctionne sous Linux &amp; Merdow$, on va le créer dans le répertoire temporaire; ce dernier se récupère via les propriétés Java: <code>System.getProperty("java.io.tmpdir")</code></p>
<p>Comme je l&#8217;ai dit précédemment, il faut faire cela très tôt&#8230; on va donc le faire dans notre classe<br />
<em>Application</em> (qui implémente <em>org.eclipse.equinox.app.IApplication</em>):</p>
<div class="geshi no java">
<ol>
<li class="li1">
<div class="de1"><span class="coMULTI">/**</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* {@inheritDoc}</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;*/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">public</span> <span class="kw3">Object</span> start<span class="br0">&#40;</span><span class="kw2">final</span> IApplicationContext pContext<span class="br0">&#41;</span> <span class="kw2">throws</span> <span class="kw3">Exception</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// set location to the temporary folder</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; Platform.<span class="me1">getInstanceLocation</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">set</span><span class="br0">&#40;</span><span class="kw2">new</span> <span class="kw3">URL</span><span class="br0">&#40;</span><span class="st0">&quot;file&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw2">null</span>, <span class="kw3">System</span>.<span class="me1">getProperty</span><span class="br0">&#40;</span><span class="st0">&quot;java.io.tmpdir&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw2">false</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#91;</span>&#8230;<span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<h3>Et c&#8217;est tout&#8230;</h3>
<p>Voilà, maintenant notre application RCP n&#8217;est plus parasitée par ce répertoire&#8230;<strong>Articles Similaires</strong>
<ul class="similar-posts">
<li><a href="http://zeserveur.fr/blog/2009/05/25/junit-eclipse-rcp-et-test-de-plugins" rel="bookmark" title="25/05/2009">JUnit, Eclipse RCP et Test de plugins</a></li>
<li><a href="http://zeserveur.fr/blog/2009/09/08/eclipse-et-le-buddy-classloading" rel="bookmark" title="08/09/2009">Eclipse et le &laquo;&nbsp;Buddy Class Loading&nbsp;&raquo;&#8230;</a></li>
<li><a href="http://zeserveur.fr/blog/2009/07/19/emf-swt-et-databinding" rel="bookmark" title="19/07/2009">EMF, SWT et Databinding</a></li>
<li><a href="http://zeserveur.fr/blog/2009/02/12/eclipse-34-le-delta-pack" rel="bookmark" title="12/02/2009">Eclipse 3.4 &#038; le delta pack</a></li>
<li><a href="http://zeserveur.fr/blog/2009/08/17/forum-eclipse" rel="bookmark" title="17/08/2009">Forum Eclipse</a></li>
</ul>
<p><!-- Similar Posts took 68.643 ms --></p>
]]></content:encoded>
			<wfw:commentRss>http://zeserveur.fr/blog/2009/05/02/rcp-workspace/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
