<?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>Modular Mind &#187; Tips</title>
	<atom:link href="http://www.modumind.com/category/tips/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.modumind.com</link>
	<description>Eclipse RCP and OSGi training - online or onsite</description>
	<lastBuildDate>Thu, 18 Feb 2010 19:07:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Decoupling Eclipse RCP products from feature versions</title>
		<link>http://www.modumind.com/2009/10/06/decoupling-products-from-feature-versions/</link>
		<comments>http://www.modumind.com/2009/10/06/decoupling-products-from-feature-versions/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 21:33:46 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Rich Client Platform]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://www.modumind.com/?p=1114</guid>
		<description><![CDATA[I just spent some time updating the sample projects I provide to help Eclipse RCP developers get started with PDE Build. One of the main reasons for the update was to decouple the product configurations from specific feature versions, and I thought it was worth a post to talk about this.
What&#8217;s the problem?
By default, product [...]]]></description>
			<content:encoded><![CDATA[<p>I just spent some time updating the <a href="/2007/06/06/getting-started-with-pde-build/">sample</a> <a href="/2008/08/04/updated-pde-build-and-test-example/">projects</a> I provide to help Eclipse RCP developers get started with PDE Build. One of the main reasons for the update was to decouple the product configurations from specific feature versions, and I thought it was worth a post to talk about this.</p>
<p><strong>What&#8217;s the problem?</strong></p>
<p>By default, product configurations are hard-wired to specific feature versions. And if you decide to upgrade to a new version of the <code>org.eclipse.rcp</code> feature, for example, then your product configuration will break. You won&#8217;t be able to create valid run configurations based on your product and your builds will fail as well. </p>
<p>Luckily, we now get feedback in the Product Configuration Editor informing us that something is amiss.<br />
<img src="http://www.modumind.com/wp-content/uploads/2009/10/products-and-features-1.png" alt="products-and-features-1" title="products-and-features-1" width="521" height="356" class="aligncenter size-full wp-image-1121" /><br />
So what can we do about this? Well one approach is to re-wire your product to the new version of the feature. You can do this by deleting and re-adding the feature, or you can also click the <strong>Properties</strong> button and modify the feature version manually. But this is a brittle approach, as you need to remember to update your configuration every time a feature version changes. </p>
<p><strong>A better way</strong></p>
<p>It&#8217;s now possible to decouple products from feature versions by replacing the feature version numbers with <code>0.0.0</code>. In the future, <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=279465">a blank feature version will also be interpreted as <code>0.0.0</code></a> but as of Eclipse 3.5.1 the number must be added.</p>
<p>Also, there is a <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=279480">currently a defect in the Product Configuration Editor</a> that results in a feature version entry of <code>0.0.0</code> being ignored. Of course, this won&#8217;t matter once blank versions are interpreted correctly, but for now it&#8217;s a problem. The solution is to open the product configuration file in a text or XML editor and change it manually.<br />
<img src="http://www.modumind.com/wp-content/uploads/2009/10/products-and-features-2.png" alt="products-and-features-2" title="products-and-features-2" width="550" height="240" class="aligncenter size-full wp-image-1129" /><br />
The good news is that you only need to do this once. Your product will now accept the feature versions you supply in your target platform without complaint. Of course if you want to maintain the wiring between products and feature versions, by all means do that. But it&#8217;s nice to know we can decouple these pieces if we wish.</p>
<a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F06%2Fdecoupling-products-from-feature-versions%2F&amp;linkname=Decoupling%20Eclipse%20RCP%20products%20from%20feature%20versions" title="DZone" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F06%2Fdecoupling-products-from-feature-versions%2F&amp;linkname=Decoupling%20Eclipse%20RCP%20products%20from%20feature%20versions" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F06%2Fdecoupling-products-from-feature-versions%2F&amp;linkname=Decoupling%20Eclipse%20RCP%20products%20from%20feature%20versions" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F06%2Fdecoupling-products-from-feature-versions%2F&amp;linkname=Decoupling%20Eclipse%20RCP%20products%20from%20feature%20versions" title="Digg" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F06%2Fdecoupling-products-from-feature-versions%2F&amp;linkname=Decoupling%20Eclipse%20RCP%20products%20from%20feature%20versions" title="Evernote" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F06%2Fdecoupling-products-from-feature-versions%2F&amp;linkname=Decoupling%20Eclipse%20RCP%20products%20from%20feature%20versions" title="Facebook" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/friendfeed?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F06%2Fdecoupling-products-from-feature-versions%2F&amp;linkname=Decoupling%20Eclipse%20RCP%20products%20from%20feature%20versions" title="FriendFeed" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/friendfeed.png" width="16" height="16" alt="FriendFeed"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F06%2Fdecoupling-products-from-feature-versions%2F&amp;linkname=Decoupling%20Eclipse%20RCP%20products%20from%20feature%20versions" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F06%2Fdecoupling-products-from-feature-versions%2F&amp;linkname=Decoupling%20Eclipse%20RCP%20products%20from%20feature%20versions" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/squidoo?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F06%2Fdecoupling-products-from-feature-versions%2F&amp;linkname=Decoupling%20Eclipse%20RCP%20products%20from%20feature%20versions" title="Squidoo" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/squidoo.png" width="16" height="16" alt="Squidoo"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F06%2Fdecoupling-products-from-feature-versions%2F&amp;linkname=Decoupling%20Eclipse%20RCP%20products%20from%20feature%20versions" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F06%2Fdecoupling-products-from-feature-versions%2F&amp;linkname=Decoupling%20Eclipse%20RCP%20products%20from%20feature%20versions" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F06%2Fdecoupling-products-from-feature-versions%2F&amp;linkname=Decoupling%20Eclipse%20RCP%20products%20from%20feature%20versions" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/yahoo_bookmarks?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F06%2Fdecoupling-products-from-feature-versions%2F&amp;linkname=Decoupling%20Eclipse%20RCP%20products%20from%20feature%20versions" title="Yahoo Bookmarks" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/yahoo.png" width="16" height="16" alt="Yahoo Bookmarks"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F06%2Fdecoupling-products-from-feature-versions%2F&amp;linkname=Decoupling%20Eclipse%20RCP%20products%20from%20feature%20versions">Share/Save</a>]]></content:encoded>
			<wfw:commentRss>http://www.modumind.com/2009/10/06/decoupling-products-from-feature-versions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Common Navigator Framework Tip #1 &#8211; Know when to use it</title>
		<link>http://www.modumind.com/2009/10/02/common-navigator-framework-tip-1-know-when-to-use-it/</link>
		<comments>http://www.modumind.com/2009/10/02/common-navigator-framework-tip-1-know-when-to-use-it/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 20:24:22 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Rich Client Platform]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://www.modumind.com/?p=1093</guid>
		<description><![CDATA[Of all the posts I&#8217;ve written on this blog, those on the Common Navigator Framework have been among the most popular. This is a little surprising to me, as I don&#8217;t hear CNF mentioned very frequently. My guess is that this framework is quietly becoming an essential part of Eclipse RCP.
Because of this, I&#8217;ve decided [...]]]></description>
			<content:encoded><![CDATA[<p>Of all the posts I&#8217;ve written on this blog, <a href="/2007/04/20/using-the-common-navigator-framework-in-an-rcp-application/">those</a> <a href="/2007/04/25/common-navigator-tutorial-1-hello-world/">on the</a> <a href="http://wiki.eclipse.org/index.php/Common_Navigator_Framework">Common Navigator Framework</a> have been among the most popular. This is a little surprising to me, as I don&#8217;t hear CNF mentioned very frequently. My guess is that this framework is quietly becoming an essential part of Eclipse RCP.</p>
<p>Because of this, I&#8217;ve decided to write a set of posts discussing some of the CNF tips that I&#8217;ve found valuable over the years. And I think the best place to start is <em>knowing when to use it</em>. The Common Navigator Framework is complicated because it is trying to solve a complicated problem. It will only make your life easier if you&#8217;re using it for the purpose it&#8217;s designed for. So what is that purpose?</p>
<p><strong>Modularity and extensibility</strong></p>
<p>Well first, CNF was <em>not</em> created to make the development of navigators easier. If you have fairly normal navigator requirements in your application, CNF is probably not for you and you&#8217;ll save yourself a lot of headaches by omitting it.</p>
<p>Instead, CNF is designed to create navigators that support <em>modularity</em> and <em>extensibility</em>. With CNF, various OSGi bundles in your RCP application can contribute navigator content at runtime.<br />
<img src="http://www.modumind.com/wp-content/uploads/2009/10/cnf-tips-1.png" alt="cnf-tips-1" title="cnf-tips-1" width="550" height="202" class="aligncenter size-full wp-image-1097" /><br />
CNF allows your bundles to declaratively contribute content to a navigator, and this is not a simple exercise. As users of CNF, we need to wire together navigators and their content in sophisticated parent/child relationships, and then overlay on top of this structure a set of actions, filters, drag/drop handlers, etc. </p>
<p><strong>Does it have to be so hard?</strong></p>
<p>Some of you might be thinking modularity is supposed to help us to <em>simplify</em> our applications. Why does this stuff have to be so darned hard? Well this is true to a point. Modularity allows us to <a href="/2009/05/04/why-is-osgi-important/">take information hiding to an entirely new level</a> and to the extent that we can hide complexity, our applications become simpler. </p>
<p>But when dealing with modular UIs in particular, the difficultly arises when we work with the <em>joints</em> or <em>pivot-points</em> between modules. In these specific cases, there is always complexity because we have to define in detail how our modules relate to each other.</p>
<p>So the next time you&#8217;re struggling with a complex CNF extension point, ask yourself whether you really need this functionality. If you do, then embrace CNF for what it is: a complex solution to a complex problem. </p>
<a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F02%2Fcommon-navigator-framework-tip-1-know-when-to-use-it%2F&amp;linkname=Common%20Navigator%20Framework%20Tip%20%231%20%26%238211%3B%20Know%20when%20to%20use%20it" title="DZone" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F02%2Fcommon-navigator-framework-tip-1-know-when-to-use-it%2F&amp;linkname=Common%20Navigator%20Framework%20Tip%20%231%20%26%238211%3B%20Know%20when%20to%20use%20it" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F02%2Fcommon-navigator-framework-tip-1-know-when-to-use-it%2F&amp;linkname=Common%20Navigator%20Framework%20Tip%20%231%20%26%238211%3B%20Know%20when%20to%20use%20it" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F02%2Fcommon-navigator-framework-tip-1-know-when-to-use-it%2F&amp;linkname=Common%20Navigator%20Framework%20Tip%20%231%20%26%238211%3B%20Know%20when%20to%20use%20it" title="Digg" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F02%2Fcommon-navigator-framework-tip-1-know-when-to-use-it%2F&amp;linkname=Common%20Navigator%20Framework%20Tip%20%231%20%26%238211%3B%20Know%20when%20to%20use%20it" title="Evernote" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F02%2Fcommon-navigator-framework-tip-1-know-when-to-use-it%2F&amp;linkname=Common%20Navigator%20Framework%20Tip%20%231%20%26%238211%3B%20Know%20when%20to%20use%20it" title="Facebook" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/friendfeed?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F02%2Fcommon-navigator-framework-tip-1-know-when-to-use-it%2F&amp;linkname=Common%20Navigator%20Framework%20Tip%20%231%20%26%238211%3B%20Know%20when%20to%20use%20it" title="FriendFeed" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/friendfeed.png" width="16" height="16" alt="FriendFeed"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F02%2Fcommon-navigator-framework-tip-1-know-when-to-use-it%2F&amp;linkname=Common%20Navigator%20Framework%20Tip%20%231%20%26%238211%3B%20Know%20when%20to%20use%20it" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F02%2Fcommon-navigator-framework-tip-1-know-when-to-use-it%2F&amp;linkname=Common%20Navigator%20Framework%20Tip%20%231%20%26%238211%3B%20Know%20when%20to%20use%20it" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/squidoo?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F02%2Fcommon-navigator-framework-tip-1-know-when-to-use-it%2F&amp;linkname=Common%20Navigator%20Framework%20Tip%20%231%20%26%238211%3B%20Know%20when%20to%20use%20it" title="Squidoo" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/squidoo.png" width="16" height="16" alt="Squidoo"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F02%2Fcommon-navigator-framework-tip-1-know-when-to-use-it%2F&amp;linkname=Common%20Navigator%20Framework%20Tip%20%231%20%26%238211%3B%20Know%20when%20to%20use%20it" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F02%2Fcommon-navigator-framework-tip-1-know-when-to-use-it%2F&amp;linkname=Common%20Navigator%20Framework%20Tip%20%231%20%26%238211%3B%20Know%20when%20to%20use%20it" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F02%2Fcommon-navigator-framework-tip-1-know-when-to-use-it%2F&amp;linkname=Common%20Navigator%20Framework%20Tip%20%231%20%26%238211%3B%20Know%20when%20to%20use%20it" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/yahoo_bookmarks?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F02%2Fcommon-navigator-framework-tip-1-know-when-to-use-it%2F&amp;linkname=Common%20Navigator%20Framework%20Tip%20%231%20%26%238211%3B%20Know%20when%20to%20use%20it" title="Yahoo Bookmarks" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/yahoo.png" width="16" height="16" alt="Yahoo Bookmarks"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F10%2F02%2Fcommon-navigator-framework-tip-1-know-when-to-use-it%2F&amp;linkname=Common%20Navigator%20Framework%20Tip%20%231%20%26%238211%3B%20Know%20when%20to%20use%20it">Share/Save</a>]]></content:encoded>
			<wfw:commentRss>http://www.modumind.com/2009/10/02/common-navigator-framework-tip-1-know-when-to-use-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Choosing a technical trainer</title>
		<link>http://www.modumind.com/2009/09/15/choosing-a-technical-trainer/</link>
		<comments>http://www.modumind.com/2009/09/15/choosing-a-technical-trainer/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 17:22:16 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Meta]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[training]]></category>

		<guid isPermaLink="false">http://www.modumind.com/?p=1004</guid>
		<description><![CDATA[
Many people attend technical training classes each year, learning everything from Microsoft Word to the latest, greatest programming language. These courses can be either extremely valuable or a complete waste of time, but in any case they are almost always expensive. Wouldn&#8217;t it be nice to know you&#8217;re getting your money&#8217;s worth? 
The good news [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.modumind.com/wp-content/uploads/2009/09/training.jpg" alt="training" title="training" width="463" height="259" class="alignnone size-full wp-image-1029" /><br />
Many people attend technical training classes each year, learning everything from Microsoft Word to the latest, greatest programming language. These courses can be either extremely valuable or a complete waste of time, but in any case they are almost always expensive. Wouldn&#8217;t it be nice to know you&#8217;re getting your money&#8217;s worth? </p>
<p>The good news is that choosing a technical trainer is like choosing any other service provider. A little due diligence up front can greatly increase your chances of having a good experience. Being a trainer myself, I was curious to see if there were any good articles I could recommend to guide potential clients through this process. Unfortunately my searches led me to sites for either personal trainers or dog trainers. Definitely not what I was looking for! </p>
<p>So here are my thoughts on choosing a technical trainer. I should say up front that I have an ulterior motive in writing this article. I want to see the quality of technical training improve, and the best way for that to happen is <em>to demand more of trainers</em>. If we all exercise more due diligence in selecting technical trainers, training providers will be forced to improve their offerings.</p>
<p><strong>Creating the short-list</strong></p>
<p><img src="http://www.modumind.com/wp-content/uploads/2009/09/checklist-150x150.jpg" alt="checklist" title="checklist" width="150" height="150" class="alignright size-thumbnail wp-image-1023" />The first step in a trainer search is obviously to create a list of potential candidates. Most likely this will involve an internet search that will result in a short-list of trainers. So what should you be looking for when browsing websites at this stage of the process?</p>
<ul>
<li><em>Does the site have a professional look and feel?</em> This is kind of a no-brainer in any search, but its especially important for trainers. At its core, training is about organizing and communicating information. If a trainer&#8217;s website is confusing, hard to navigate, or just plain ugly, it&#8217;s likely that the training materials will be as well.</li>
<li><em>Does the site reflect a core competency in the area in which you need training?</em> If a trainer provides courses in everything from C++ to Microsoft Word, you might want to look somewhere else. Oftentimes these one-stop-shops are really just brokers who will try to find an actual trainer once you&#8217;ve indicated some interest. It may take a bit more effort to make a direct connection with a trainer, but you&#8217;ll probably have a better experience if you do.</li>
<li><em>Does the site contain articles or blog posts relevant to the training area?</em> Many do not and I wouldn&#8217;t exclude a trainer for that reason. But if articles do exist, they can be a good window into the trainer&#8217;s mind. If articles do exist, examine them for clarity and thoughtful presentation. This can be especially useful when you&#8217;re considering hiring a &#8220;guru&#8221; to do training. While it&#8217;s always tempting to hire an acknowledged expert in the field, some gurus make good trainers and some do not.</li>
</ul>
<p><strong>Getting to know the trainers &#8211; asking the right questions</strong></p>
<p><img src="http://www.modumind.com/wp-content/uploads/2009/09/question-mark-150x150.jpg" alt="question-mark" title="question-mark" width="150" height="150" class="alignright size-thumbnail wp-image-1025" />Once you have a short list of trainers at hand, it&#8217;s time to get to know each of them. What should you be looking for? Well, the value of the training you receive will depend on the quality of <em>the trainer</em> and <em>the training materials</em>. You should try to find out as much as possible about both.</p>
<p>First, the trainer. You may have noticed that I&#8217;ve been consistently referring to <em>trainers</em> as opposed to <em>training providers</em>. It&#8217;s important to understand that even if you&#8217;re talking to a large training provider, what you are really selecting is a specific trainer. Ask up front who the trainer will be, and if that does not go over well you may want to look elsewhere.</p>
<p>If on the other hand you are presented with a specific trainer, ask if you can interview this person. If you have a technical expert available, you may want to have them sit in on the interview to assess the trainer&#8217;s knowledge. In any case, though, you should be looking for communication skills. Does the trainer speak simply and clearly? Is he or she eager to explain things in a way you can understand? Would you want to listen to this person talk for days at a time?</p>
<p>And the training materials? These are critical to the success of the training course, and you should ask for samples that you can evaluate &#8211; some slides and a few pages of the manual and labs if relevant. Examine these samples for clarity and visual interest. Are they filled with text that the trainer will probably read verbatim or do they present visually interesting explanations? Text-heavy slides can lead very quickly to student fatigue and make the training less effective. Are the text and images presented in a professional manner and would they be easy to look at when projected? Again, would you want to look at these slides for a few days straight?</p>
<p>You&#8217;ll obviously receive other information about the training course, such as pricing and availability. But one thing you should always request is a list of recent references. This is such an important topic, I&#8217;ve saved if for last.</p>
<p><strong>Calling the references</strong></p>
<p><img src="http://www.modumind.com/wp-content/uploads/2009/09/phone-150x150.jpg" alt="phone" title="phone" width="150" height="150" class="alignright size-thumbnail wp-image-1027" />References should be an important part of your selection process. When you are provided with a list of references, <em>call them</em>. Please, please call them. There is no better way to get an accurate picture of what a trainer is really like.</p>
<p>I&#8217;ve found that many people do not call references either because they don&#8217;t want to impose or they think the process does not provide good information. If you feel this way, I urge you to reconsider. Most clients are happy to talk and the process can be extremely valuable if you approach it correctly. </p>
<p>The first suggestion I&#8217;d make is to <em>talk to people who were actually in the course</em>. Many references you receive will be for a manager who arranged the training, and that&#8217;s fine. These references can provide great high-level information about the course, students reactions, and the success of subsequent projects. But it&#8217;s a good idea to ask for a few student references as well. There&#8217;s no substitute for talking to someone who was in the room.</p>
<p>Second, make sure that the references you&#8217;re talking to were taught by the specific instructor that will be teaching your students. Talking to references who had other trainers is of little value.</p>
<p>Finally, go beyond the &#8220;were you happy with the trainer&#8221; questions. A good approach to references is to get them talking about their experiences in very concrete ways. The best way to go about this is to ask specific questions. Here are some examples:</p>
<ul>
<li>Do you think the course materials were well designed and easy to follow?</li>
<li>Were there students in the course who felt things were moving too fast or too slow?</li>
<li>Did the trainer make any changes to the course to better meet your needs?</li>
<li>Were there labs? If so, were they helpful and did most of the students finish them successfully? One thing to look for here is if the trainer fell back to doing the labs on behalf of the students, while everyone simply looked on.</li>
<li>Was the trainer able to go beyond the material to talk about advanced topics?</li>
<li>If the trainer did not have the answer to a question, did he or she promptly follow up with the answer?</li>
<li>Has the trainer been responsive to follow up questions after the course completed?</li>
</ul>
<p><strong>It&#8217;s all about the students</strong></p>
<p>In the end, the quality of a training course can only be measured by the effect it has on students&#8217; life and work. When selecting a technical trainer, it&#8217;s important to always think about the needs of the students and to do whatever it takes to make sure they will benefit from the training. </p>
<p>Expect more from your technical trainers and I think you&#8217;ll be pleasantly surprised with the results.</p>
<a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F15%2Fchoosing-a-technical-trainer%2F&amp;linkname=Choosing%20a%20technical%20trainer" title="DZone" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F15%2Fchoosing-a-technical-trainer%2F&amp;linkname=Choosing%20a%20technical%20trainer" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F15%2Fchoosing-a-technical-trainer%2F&amp;linkname=Choosing%20a%20technical%20trainer" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F15%2Fchoosing-a-technical-trainer%2F&amp;linkname=Choosing%20a%20technical%20trainer" title="Digg" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F15%2Fchoosing-a-technical-trainer%2F&amp;linkname=Choosing%20a%20technical%20trainer" title="Evernote" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F15%2Fchoosing-a-technical-trainer%2F&amp;linkname=Choosing%20a%20technical%20trainer" title="Facebook" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/friendfeed?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F15%2Fchoosing-a-technical-trainer%2F&amp;linkname=Choosing%20a%20technical%20trainer" title="FriendFeed" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/friendfeed.png" width="16" height="16" alt="FriendFeed"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F15%2Fchoosing-a-technical-trainer%2F&amp;linkname=Choosing%20a%20technical%20trainer" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F15%2Fchoosing-a-technical-trainer%2F&amp;linkname=Choosing%20a%20technical%20trainer" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/squidoo?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F15%2Fchoosing-a-technical-trainer%2F&amp;linkname=Choosing%20a%20technical%20trainer" title="Squidoo" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/squidoo.png" width="16" height="16" alt="Squidoo"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F15%2Fchoosing-a-technical-trainer%2F&amp;linkname=Choosing%20a%20technical%20trainer" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F15%2Fchoosing-a-technical-trainer%2F&amp;linkname=Choosing%20a%20technical%20trainer" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F15%2Fchoosing-a-technical-trainer%2F&amp;linkname=Choosing%20a%20technical%20trainer" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/yahoo_bookmarks?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F15%2Fchoosing-a-technical-trainer%2F&amp;linkname=Choosing%20a%20technical%20trainer" title="Yahoo Bookmarks" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/yahoo.png" width="16" height="16" alt="Yahoo Bookmarks"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F15%2Fchoosing-a-technical-trainer%2F&amp;linkname=Choosing%20a%20technical%20trainer">Share/Save</a>]]></content:encoded>
			<wfw:commentRss>http://www.modumind.com/2009/09/15/choosing-a-technical-trainer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Managing Eclipse RCP launch arguments</title>
		<link>http://www.modumind.com/2009/09/08/managing-eclipse-rcp-launch-arguments/</link>
		<comments>http://www.modumind.com/2009/09/08/managing-eclipse-rcp-launch-arguments/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 20:05:46 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Rich Client Platform]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://www.modumind.com/?p=935</guid>
		<description><![CDATA[In my last post I discussed how to best manage run configurations for Eclipse RCP applications.  But there was one related topic I wanted to discuss in more detail, and that is how to manage launch arguments.
What are launch arguments?
Launch arguments are arguments that are added to the command line when you execute your [...]]]></description>
			<content:encoded><![CDATA[<p>In my last post I discussed <a href="/2009/09/03/run-configurations-and-eclipse-rcp/">how to best manage run configurations for Eclipse RCP applications</a>.  But there was one related topic I wanted to discuss in more detail, and that is how to manage launch arguments.</p>
<p><strong>What are launch arguments?</strong></p>
<p>Launch arguments are arguments that are added to the command line when you execute your application. These arguments come in two flavors:</p>
<ul>
<li><em>Program arguments</em> &#8211; Arguments that are Eclipse-specific. For example, the <code>-clean</code> argument will clear the configuration area on startup.</li>
<li><em>VM arguments</em> &#8211; Arguments that make sense to the Java VM. For example, the <code>-Xmx</code> argument allows you to set the maximum heap size for the VM.</li>
</ul>
<p>Both of these argument types can be set on the <strong>Arguments</strong> tab in the Run Configurations dialog.<br />
<img src="http://www.modumind.com/wp-content/uploads/2009/09/launch-arguments-1.png" alt="launch-arguments-1" title="launch-arguments-1" width="512" height="471" class="aligncenter size-full wp-image-938" /></p>
<p><strong>Launch arguments and the target platform</strong></p>
<p>We oftentimes want to apply the same launch arguments to all of our run configurations, and one way to handle that is to specify them on your <em>target platform</em>. On the <strong>Target Platform</strong> preference page there is a section where you can add whatever arguments you wish.<br />
<img src="http://www.modumind.com/wp-content/uploads/2009/09/launch-arguments-2.png" alt="launch-arguments-2" title="launch-arguments-2" width="508" height="555" class="aligncenter size-full wp-image-941" /><br />
The arguments associated with a target platform will be added to run configurations <em>generated from the Manifest Editor</em>. They will <em>not</em> be added to configurations generated by the Product Configuration Editor. Also, because the Manifest Editor link does not regenerate a configuration each time, you will need to explicitly delete a configuration if you want to recreate it using new target platform arguments.</p>
<p><strong>Launch arguments and products</strong></p>
<p>A second way to manage arguments is to add them using the <strong>Launching</strong> tab of the Product Configuration Editor.<br />
<img src="http://www.modumind.com/wp-content/uploads/2009/09/launch-arguments-3.png" alt="launch-arguments-3" title="launch-arguments-3" width="550" height="537" class="aligncenter size-full wp-image-943" /><br />
When you add arguments in this way, two things will happen:</p>
<ol>
<li>The arguments will be added to your run configurations <em>if you launch using the link in the Product Configuration Editor</em>. Because this link regenerates the run configuration each time, consistent use of the link guarantees that your configuration is in synch with your product definition.</li>
<li>The arguments will also be added to your deployed application in the form of an INI file. This is a nice feature, but it means that you need to be careful when adding arguments that are only useful during development. For example, you may want to use <code>-clean</code> to clear the configuration area when you&#8217;re developing, but you probably do not want to ship this argument to your customers.</li>
</ol>
<p><strong>Launch arguments best practices</strong></p>
<p>My approach is to add arguments using the Product Configuration Editor and to always launch my applications using the link in that editor. This guarantees that my run configurations are always in synch with my product definition. I also take care to not add arguments that would be detrimental to a deployed application. Some, such as <code>-consoleLog</code>, I consider harmless in a deployed app and I just leave those in. </p>
<p>If for some reason I absolutely have to add an argument that should not be deployed, I usually clean it out of the INI file during the build process. It&#8217;s pretty rare for me to have to do this, though.</p>
<a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F08%2Fmanaging-eclipse-rcp-launch-arguments%2F&amp;linkname=Managing%20Eclipse%20RCP%20launch%20arguments" title="DZone" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F08%2Fmanaging-eclipse-rcp-launch-arguments%2F&amp;linkname=Managing%20Eclipse%20RCP%20launch%20arguments" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F08%2Fmanaging-eclipse-rcp-launch-arguments%2F&amp;linkname=Managing%20Eclipse%20RCP%20launch%20arguments" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F08%2Fmanaging-eclipse-rcp-launch-arguments%2F&amp;linkname=Managing%20Eclipse%20RCP%20launch%20arguments" title="Digg" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F08%2Fmanaging-eclipse-rcp-launch-arguments%2F&amp;linkname=Managing%20Eclipse%20RCP%20launch%20arguments" title="Evernote" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F08%2Fmanaging-eclipse-rcp-launch-arguments%2F&amp;linkname=Managing%20Eclipse%20RCP%20launch%20arguments" title="Facebook" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/friendfeed?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F08%2Fmanaging-eclipse-rcp-launch-arguments%2F&amp;linkname=Managing%20Eclipse%20RCP%20launch%20arguments" title="FriendFeed" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/friendfeed.png" width="16" height="16" alt="FriendFeed"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F08%2Fmanaging-eclipse-rcp-launch-arguments%2F&amp;linkname=Managing%20Eclipse%20RCP%20launch%20arguments" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F08%2Fmanaging-eclipse-rcp-launch-arguments%2F&amp;linkname=Managing%20Eclipse%20RCP%20launch%20arguments" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/squidoo?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F08%2Fmanaging-eclipse-rcp-launch-arguments%2F&amp;linkname=Managing%20Eclipse%20RCP%20launch%20arguments" title="Squidoo" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/squidoo.png" width="16" height="16" alt="Squidoo"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F08%2Fmanaging-eclipse-rcp-launch-arguments%2F&amp;linkname=Managing%20Eclipse%20RCP%20launch%20arguments" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F08%2Fmanaging-eclipse-rcp-launch-arguments%2F&amp;linkname=Managing%20Eclipse%20RCP%20launch%20arguments" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F08%2Fmanaging-eclipse-rcp-launch-arguments%2F&amp;linkname=Managing%20Eclipse%20RCP%20launch%20arguments" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/yahoo_bookmarks?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F08%2Fmanaging-eclipse-rcp-launch-arguments%2F&amp;linkname=Managing%20Eclipse%20RCP%20launch%20arguments" title="Yahoo Bookmarks" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/yahoo.png" width="16" height="16" alt="Yahoo Bookmarks"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F08%2Fmanaging-eclipse-rcp-launch-arguments%2F&amp;linkname=Managing%20Eclipse%20RCP%20launch%20arguments">Share/Save</a>]]></content:encoded>
			<wfw:commentRss>http://www.modumind.com/2009/09/08/managing-eclipse-rcp-launch-arguments/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Run Configurations and Eclipse RCP</title>
		<link>http://www.modumind.com/2009/09/03/run-configurations-and-eclipse-rcp/</link>
		<comments>http://www.modumind.com/2009/09/03/run-configurations-and-eclipse-rcp/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 20:34:53 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Rich Client Platform]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://www.modumind.com/?p=876</guid>
		<description><![CDATA[When developing Eclipse RCP applications we execute our code in the IDE using a run configuration. A run configuration is basically a collection of properties that defines how our application should be run, and these properties include:

What application or product to launch, specified by id
Which bundles to make available at runtime
What program (Eclipse-specific) or VM [...]]]></description>
			<content:encoded><![CDATA[<p>When developing Eclipse RCP applications we execute our code in the IDE using a <em>run configuration</em>. A run configuration is basically a collection of properties that defines how our application should be run, and these properties include:</p>
<ol>
<li>What application or product to launch, specified by id</li>
<li>Which bundles to make available at runtime</li>
<li>What program (Eclipse-specific) or VM arguments to use</li>
</ol>
<p>And while run configurations are relatively straightforward, there can be some confusion about how to create and manage them. Hopefully this post will help.</p>
<p><strong>Creating a run configuration</strong></p>
<p>There are three ways to create a run configuration:</p>
<ol>
<li>By hand (yuck!)</li>
<li>Clicking the <strong>Launch an Eclipse application</strong> link on the <strong>Overview</strong> tab of the Manifest Editor.</li>
<li>Clicking the <strong>Launch an Eclipse application</strong> link on the <strong>Overview</strong> tab of the Product Configuration Editor.</li>
</ol>
<p>Let&#8217;s ignore creating a run configuration by hand. If you prefer that approach, more power to you! But most of us find it easier to generate run configurations by clicking the editor links mentioned above.</p>
<p>Where some confusion arises is that the two editors in question generate run configurations in different ways. Let&#8217;s look at each editor in turn.</p>
<p><strong>Creating a run configuration with the Manifest Editor</strong></p>
<p>It&#8217;s possible to generate a run configuration by clicking on the <strong>Launch an Eclipse application</strong> link in the <strong>Testing</strong> section of the Manifest Editor. We can also accomplish this by clicking the equivalent toolbar button. Both options are highlighted by the red squares in the image below.<br />
<img src="http://www.modumind.com/wp-content/uploads/2009/09/manifest-run-config.png" alt="manifest-run-config" title="manifest-run-config" width="550" height="538" class="aligncenter size-full wp-image-882" /><br />
But what really happens when you click the link or button? Behind the scenes, the following logic is performed:</p>
<ol>
<li>The <em>bundle associated with the manifest being edited</em> is searched for an application or product extension. If one is found, that extension will be used when creating the run configuration.</li>
<li>The current run configurations are searched, and if an existing configuration exists for the particular application or product id, then that configuration will simply be reused.</li>
<li>If no matching run configuration is found, then a new one will be created. The available bundle list is created by traversing the dependency graph for the bundle associated with the manifest being edited. The arguments are taken from the current target platform for the workspace.</li>
</ol>
<p>And what happens if you launch from a bundle that does <em>not</em> contain an application or product? Then the application will be set to Eclipse itself and a new instance of Eclipse will be launched with your bundles added into the mix.</p>
<p>This can be a source of great confusion for Eclipse RCP developers, and this is one reason that I discourage use of the Manifest Editor to create run configurations. On the other hand, it&#8217;s usually obvious if you&#8217;ve selected the wrong manifest. Your first tip that something is amiss will be the appearance of the Eclipse splash screen. If you&#8217;re not seeing your own splash screen, you&#8217;ve probably launched from the wrong manifest.</p>
<p><strong>Creating a run configuration with the Product Configuration Editor</strong></p>
<p>Because it&#8217;s very easy to create incorrect run configurations using the Manifest Editor, I usually suggest that developers use the Product Configuration Editor instead. The options look very similar in this editor (unfortunately at times they look <em>too</em> similar), and you can see them highlighted in red below.<br />
<img src="http://www.modumind.com/wp-content/uploads/2009/09/product-run-config.png" alt="product-run-config" title="product-run-config" width="543" height="581" class="aligncenter size-full wp-image-894" /><br />
But while the options look similar in both editors, there are slight differences in behavior. Specifically, the Product Configuration Editor uses the following logic:</p>
<ol>
<li>First, a new run configuration is <em>always</em> generated. No attempt is made to search existing run configurations for a match, and if one already exists <em>it will be overwritten</em>. This can be particularly important if you&#8217;ve made manual changes to your run configurations.</li>
<li>The product id will obviously be taken from the product configuration file, as will the available bundles (<strong>Dependencies</strong> tab) and arguments (<strong>Launching</strong> tab). Note that arguments associated with your target platform are <em>not</em> used in this case.
</ol>
<p><strong>What is the best approach?</strong></p>
<p>As you&#8217;ve probably surmised, I suggest using the Product Configuration to create run configurations. Here are the two biggest reasons:</p>
<ul>
<li>It&#8217;s easier to make a mistake with the Manifest Editor by selecting a manifest in the wrong bundle.</li>
<li>Using the bundle list generated by a product configuration ensures the same bundles will be built into your deployed application. When using the Manifest Editor, it&#8217;s very easy to get into a situation where your app works in the IDE, but not after it is built and deployed.</li>
</ul>
<p>As an aside, it&#8217;s possible to generate your run configuration from the Product Configuration Editor and then run it later by clicking the <strong>Run</strong> button in the main toolbar or selecting it in the Run Configurations dialog. This will obviously not cause your existing configuration to get overwritten.</p>
<p>I choose not to do this because I prefer to treat my product configuration as the only real location for runtime properties. I&#8217;ll come back to this issue in a subsequent post, as this discussion has gone a bit long!</p>
<a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F03%2Frun-configurations-and-eclipse-rcp%2F&amp;linkname=Run%20Configurations%20and%20Eclipse%20RCP" title="DZone" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F03%2Frun-configurations-and-eclipse-rcp%2F&amp;linkname=Run%20Configurations%20and%20Eclipse%20RCP" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F03%2Frun-configurations-and-eclipse-rcp%2F&amp;linkname=Run%20Configurations%20and%20Eclipse%20RCP" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F03%2Frun-configurations-and-eclipse-rcp%2F&amp;linkname=Run%20Configurations%20and%20Eclipse%20RCP" title="Digg" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F03%2Frun-configurations-and-eclipse-rcp%2F&amp;linkname=Run%20Configurations%20and%20Eclipse%20RCP" title="Evernote" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F03%2Frun-configurations-and-eclipse-rcp%2F&amp;linkname=Run%20Configurations%20and%20Eclipse%20RCP" title="Facebook" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/friendfeed?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F03%2Frun-configurations-and-eclipse-rcp%2F&amp;linkname=Run%20Configurations%20and%20Eclipse%20RCP" title="FriendFeed" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/friendfeed.png" width="16" height="16" alt="FriendFeed"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F03%2Frun-configurations-and-eclipse-rcp%2F&amp;linkname=Run%20Configurations%20and%20Eclipse%20RCP" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F03%2Frun-configurations-and-eclipse-rcp%2F&amp;linkname=Run%20Configurations%20and%20Eclipse%20RCP" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/squidoo?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F03%2Frun-configurations-and-eclipse-rcp%2F&amp;linkname=Run%20Configurations%20and%20Eclipse%20RCP" title="Squidoo" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/squidoo.png" width="16" height="16" alt="Squidoo"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F03%2Frun-configurations-and-eclipse-rcp%2F&amp;linkname=Run%20Configurations%20and%20Eclipse%20RCP" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F03%2Frun-configurations-and-eclipse-rcp%2F&amp;linkname=Run%20Configurations%20and%20Eclipse%20RCP" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F03%2Frun-configurations-and-eclipse-rcp%2F&amp;linkname=Run%20Configurations%20and%20Eclipse%20RCP" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/yahoo_bookmarks?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F03%2Frun-configurations-and-eclipse-rcp%2F&amp;linkname=Run%20Configurations%20and%20Eclipse%20RCP" title="Yahoo Bookmarks" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/yahoo.png" width="16" height="16" alt="Yahoo Bookmarks"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F03%2Frun-configurations-and-eclipse-rcp%2F&amp;linkname=Run%20Configurations%20and%20Eclipse%20RCP">Share/Save</a>]]></content:encoded>
			<wfw:commentRss>http://www.modumind.com/2009/09/03/run-configurations-and-eclipse-rcp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating an Eclipse RCP target platform</title>
		<link>http://www.modumind.com/2009/09/01/creating-an-eclipse-rcp-target-platform/</link>
		<comments>http://www.modumind.com/2009/09/01/creating-an-eclipse-rcp-target-platform/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 19:54:14 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Rich Client Platform]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://www.modumind.com/?p=828</guid>
		<description><![CDATA[The PDE team has given RCP developers some great new features in Eclipse 3.5. It&#8217;s now much easier to create and manage target platforms for Eclipse RCP applications. In this post, I&#8217;ll outline one simple workflow that should work in most cases.
But first, if you&#8217;re interested in what a target platform is or why you [...]]]></description>
			<content:encoded><![CDATA[<p>The PDE team has given RCP developers some great new features in Eclipse 3.5. It&#8217;s now much easier to create and manage target platforms for Eclipse RCP applications. In this post, I&#8217;ll outline one simple workflow that should work in most cases.</p>
<p>But first, if you&#8217;re interested in what a target platform is or why you might want to create one, check out these previous posts.</p>
<ul>
<li><a href="/2008/04/21/why-create-a-custom-target-platform/">Why create a target platform?</a></li>
<li><a href="http://www.modumind.com/2008/04/29/rcp-target-platform-tips/">RCP target platform tips</a></li>
</ul>
<p>So now that you understand why we should create a target platform, what&#8217;s the best way to do it?</p>
<p><strong>Create a target definition file</strong></p>
<p>Eclipse target platforms can be created and selected directly in the <strong>Target Platform</strong> preferences page, but a better approach is to define your target platform using a <em>target definition</em> file. A target definition file outlines what should be included in your target platform and where the features and bundles can be located. More importantly, target definition files can be checked in to your version control repository and shared among the members of your team.</p>
<p>So how do we create one? You see here a sample RCP application that was generated with the Hello World template. Let&#8217;s add a target definition to this project.<br />
<img src="http://www.modumind.com/wp-content/uploads/2009/09/sample-project.png" alt="sample-project" title="sample-project" width="257" height="199" class="aligncenter size-full wp-image-829" /></p>
<p>Right-click on the project name and select <strong>New > Other</strong>. Then choose <strong>Plug-in Development > Target Definition</strong> in the wizard selection dialog.<br />
<img src="http://www.modumind.com/wp-content/uploads/2009/09/new-target-definition.png" alt="new-target-definition" title="new-target-definition" width="547" height="599" class="aligncenter size-full wp-image-839" /><br />
The wizard page prompts you to select a file name, and I&#8217;m going to choose <em>samplercp.target</em> to match my project name. Remember, it&#8217;s a good idea to have a separate target platform for each project you work on.</p>
<p><strong>Define your target platform</strong></p>
<p>Now that we have a target definition file in our project, we can select what to include in our target platform. We do that by identifying one or more <em>locations</em> that may contain features or bundles. Eclipse 3.5 supports four types of locations (directories, installations, features, and software sites). </p>
<p>In this workflow, I&#8217;ll be using a software site which means that the features and bundles will be downloaded from a repository and stored locally under my workspace <code>.metadata</code> folder. </p>
<p>For an RCP application, we typically want to set our target platform to the <em>Eclipse RCP SDK</em> which is made up of two features:</p>
<ul>
<li><code>org.eclipse.rcp</code></li>
<li><code>org.eclipse.rcp.source</code></li>
</ul>
<p>Let&#8217;s add these features to our target platform. Start by clicking <strong>Add</strong> in the Target Definition Editor (this editor should have opened automatically after you created the target definition file). Then select <strong>Software Site</strong> on the  <strong>Add Content</strong> dialog and click <strong>Next</strong>.<br />
<img src="http://www.modumind.com/wp-content/uploads/2009/09/target-platform-add-content.png" alt="target-platform-add-content" title="target-platform-add-content" width="557" height="451" class="aligncenter size-full wp-image-845" /><br />
The next page of the wizard is where the real work is done. We&#8217;re going to specify a repository location where the Eclipse RCP SDK can be retrieved. </p>
<ul>
<li>First, select the Galileo repository from the <strong>Work with</strong> drop-down.</li>
<li>Next, deselect the <strong>Group by Category</strong> checkbox. For some reason, the Eclipse RCP SDK does not appear anywhere in the category listing. You would think it would be included under the <strong>EclipseRT Target Platform Components</strong> category, but no such luck.</li>
<li>Finally, place a check next to the <strong>Eclipse RCP SDK</strong> entry in the list and click <strong>Finish</strong></li>
</ul>
<p><img src="http://www.modumind.com/wp-content/uploads/2009/09/target-platform-add-content2.png" alt="target-platform-add-content2" title="target-platform-add-content2" width="578" height="787" class="aligncenter size-full wp-image-848" /><br />
As soon as you click finish, Eclipse PDE will start the process of downloading the RCP SDK to your machine. Your target definition file should look like this:<br />
<img src="http://www.modumind.com/wp-content/uploads/2009/09/target-defintion-complete.png" alt="target-defintion-complete" title="target-defintion-complete" width="550" height="470" class="aligncenter size-full wp-image-860" /></p>
<p><strong>Activate your new target platform</strong></p>
<p>The final step is to activate your target platform by clicking the <strong>Set as Target Platform</strong> link in the upper-right corner of the Target Definition Editor. Then you&#8217;re all set! And make sure to check in your target definition so everyone on your team can share the fruits of your hard work ;-)</p>
<a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F01%2Fcreating-an-eclipse-rcp-target-platform%2F&amp;linkname=Creating%20an%20Eclipse%20RCP%20target%20platform" title="DZone" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F01%2Fcreating-an-eclipse-rcp-target-platform%2F&amp;linkname=Creating%20an%20Eclipse%20RCP%20target%20platform" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F01%2Fcreating-an-eclipse-rcp-target-platform%2F&amp;linkname=Creating%20an%20Eclipse%20RCP%20target%20platform" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F01%2Fcreating-an-eclipse-rcp-target-platform%2F&amp;linkname=Creating%20an%20Eclipse%20RCP%20target%20platform" title="Digg" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F01%2Fcreating-an-eclipse-rcp-target-platform%2F&amp;linkname=Creating%20an%20Eclipse%20RCP%20target%20platform" title="Evernote" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F01%2Fcreating-an-eclipse-rcp-target-platform%2F&amp;linkname=Creating%20an%20Eclipse%20RCP%20target%20platform" title="Facebook" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/friendfeed?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F01%2Fcreating-an-eclipse-rcp-target-platform%2F&amp;linkname=Creating%20an%20Eclipse%20RCP%20target%20platform" title="FriendFeed" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/friendfeed.png" width="16" height="16" alt="FriendFeed"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F01%2Fcreating-an-eclipse-rcp-target-platform%2F&amp;linkname=Creating%20an%20Eclipse%20RCP%20target%20platform" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F01%2Fcreating-an-eclipse-rcp-target-platform%2F&amp;linkname=Creating%20an%20Eclipse%20RCP%20target%20platform" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/squidoo?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F01%2Fcreating-an-eclipse-rcp-target-platform%2F&amp;linkname=Creating%20an%20Eclipse%20RCP%20target%20platform" title="Squidoo" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/squidoo.png" width="16" height="16" alt="Squidoo"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F01%2Fcreating-an-eclipse-rcp-target-platform%2F&amp;linkname=Creating%20an%20Eclipse%20RCP%20target%20platform" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F01%2Fcreating-an-eclipse-rcp-target-platform%2F&amp;linkname=Creating%20an%20Eclipse%20RCP%20target%20platform" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F01%2Fcreating-an-eclipse-rcp-target-platform%2F&amp;linkname=Creating%20an%20Eclipse%20RCP%20target%20platform" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/yahoo_bookmarks?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F01%2Fcreating-an-eclipse-rcp-target-platform%2F&amp;linkname=Creating%20an%20Eclipse%20RCP%20target%20platform" title="Yahoo Bookmarks" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/yahoo.png" width="16" height="16" alt="Yahoo Bookmarks"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F09%2F01%2Fcreating-an-eclipse-rcp-target-platform%2F&amp;linkname=Creating%20an%20Eclipse%20RCP%20target%20platform">Share/Save</a>]]></content:encoded>
			<wfw:commentRss>http://www.modumind.com/2009/09/01/creating-an-eclipse-rcp-target-platform/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Adding Eclipse IDE menu options to your RCP applications</title>
		<link>http://www.modumind.com/2009/08/17/adding-eclipse-ide-menu-options-to-your-rcp-applications/</link>
		<comments>http://www.modumind.com/2009/08/17/adding-eclipse-ide-menu-options-to-your-rcp-applications/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 20:33:37 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Rich Client Platform]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://www.modumind.com/?p=706</guid>
		<description><![CDATA[Note: The post below is actually incorrect, which is a good thing in my opinion. It is indeed possible to use the command framework to add the standard Eclipse IDE menu options. Rather than take down the post, which I think is unethical, please read the post and then the note at the end for [...]]]></description>
			<content:encoded><![CDATA[<p><em>Note: The post below is actually incorrect, which is a good thing in my opinion. It is indeed possible to use the command framework to add the standard Eclipse IDE menu options. Rather than take down the post, which I think is unethical, please read the post and then the note at the end for clarification.</em></p>
<p>One of the many things that Eclipse RCP provides is a set of standard menu options that are used by the Eclipse IDE itself. These include standard menu options such as <strong>Exit</strong>, <strong>Save</strong>, <strong>Cut/Copy/Paste</strong>, but also workbench specific options such as <strong>Reset Perspective</strong> and <strong>Show Views</strong>. </p>
<p>In short, almost all of the menu options you see in the Eclipse IDE are available for use in your RCP applications. And I tell most teams starting out with Eclipse RCP to go through the Eclipse IDE menu and make a list of those options that make sense for their application.</p>
<p>So how can we add these menu options to our applications?</p>
<p><strong>Using actions</strong></p>
<p>Traditionally, Eclipse IDE menu options have been added as <em>actions</em> in the <code>ActionBarAdvisor</code>. The Eclipse actions can be referenced as constants in the <code>ActionFactory</code> class, and adding a menu option looks like this:</p>
<pre class="brush: java">
IAction saveAction = ActionFactory.SAVE.create(window);
fileMenu.add(saveAction)
</pre>
<p><strong>Using commands</strong></p>
<p>During the last few years, most Eclipse RCP developers have transitioned from actions to <em>commands</em>. Commands, and their associated handlers and menus, provide a clean separation between UI and non-UI concerns. As part of the transition to commands, Eclipse RCP now provides us with the Eclipse IDE menu options as a set of extensions defined in the <code>org.eclipse.ui</code> bundle.</p>
<p><img src="http://www.modumind.com/wp-content/uploads/2009/08/command-extensions.png" alt="command-extensions" title="command-extensions" width="367" height="451" class="aligncenter size-full wp-image-708" /></p>
<p>The commands point to handlers that implement the behavior associated with menu options. We could, if we like, create <code>org.eclipse.ui.menus</code> extensions that refer directly to these commands. This would allow us to define our entire menu using declarative syntax.</p>
<p><strong>Which approach should we use?</strong></p>
<p>So the question is, should we choose the command-based approach? The answer (for Eclipse IDE menu options only) is no. Using the <code>org.eclipse.ui.menus</code> extension point to add Eclipse IDE menu options is problematic in that we lose access to look and feel attributes. Specifically, the <code>ActionFactory</code> constants provide us with the following menu attributes:</p>
<ul>
<li>label</li>
<li>tooltip</li>
<li>image (enabled and disabled)</li>
<li>help context</li>
</ul>
<p>Not only that, but the actions provide us with these values as externalized strings with support for internationalization. So while actions are really the old way of doing things, the <code>ActionFactory</code>/<code>ActionBarAdvisor</code> combo is still the preferred way of utilizing Eclipse IDE menu options.</p>
<p><strong>When should I use commands?</strong></p>
<p>Well you should definitely be using the command-based approach for your own menu options. Also the Eclipse IDE commands are still useful if you want to link <em>your own</em> menu options to them. You may want to reference the standard Eclipse IDE options in view menus, cheat sheets, dialogs, etc.</p>
<p>Finally, you should know that the actions produced by the <code>ActionFactory</code> are actually bridged to commands and handlers behind the scenes. This means that even though you are using actions to define the menu options, you can still provide your own handlers for them.</p>
<p><em>Clarification: What I missed when writing this post was that the Eclipse IDE commands contain localized text which will show up in your menu if you leave the menu label blank. Also, images will appear in the menu, and these are contributed via the <code>org.eclipse.ui.commandImages</code> extension point. </p>
<p>I&#8217;m still not clear on how tooltips or help contexts are handled, but you can get almost all the way there with the command framework. So in my opinion, the best practice for new Eclipse RCP applications would be to use the command framework for all menu options and discontinue usage of the <code>ActionBarAdvisor</code>.</p>
<p>Thanks to Lars Vogel for the correction!</em></p>
<p><em>Clarification #2: Having looked into this further, it appears that some of the standard Eclipse IDE menu options require that the <code>ActionFactory</code> action be created and registered before the commands will work. You don&#8217;t actually need to use the actions to create the menu options in the <code>ActionBarAdvisor</code>, though. For more information on this, see <a href="http://bugs.eclipse.org/270007">this Bugzilla entry</a>.</em></p>
<a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F08%2F17%2Fadding-eclipse-ide-menu-options-to-your-rcp-applications%2F&amp;linkname=Adding%20Eclipse%20IDE%20menu%20options%20to%20your%20RCP%20applications" title="DZone" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F08%2F17%2Fadding-eclipse-ide-menu-options-to-your-rcp-applications%2F&amp;linkname=Adding%20Eclipse%20IDE%20menu%20options%20to%20your%20RCP%20applications" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F08%2F17%2Fadding-eclipse-ide-menu-options-to-your-rcp-applications%2F&amp;linkname=Adding%20Eclipse%20IDE%20menu%20options%20to%20your%20RCP%20applications" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F08%2F17%2Fadding-eclipse-ide-menu-options-to-your-rcp-applications%2F&amp;linkname=Adding%20Eclipse%20IDE%20menu%20options%20to%20your%20RCP%20applications" title="Digg" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F08%2F17%2Fadding-eclipse-ide-menu-options-to-your-rcp-applications%2F&amp;linkname=Adding%20Eclipse%20IDE%20menu%20options%20to%20your%20RCP%20applications" title="Evernote" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F08%2F17%2Fadding-eclipse-ide-menu-options-to-your-rcp-applications%2F&amp;linkname=Adding%20Eclipse%20IDE%20menu%20options%20to%20your%20RCP%20applications" title="Facebook" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/friendfeed?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F08%2F17%2Fadding-eclipse-ide-menu-options-to-your-rcp-applications%2F&amp;linkname=Adding%20Eclipse%20IDE%20menu%20options%20to%20your%20RCP%20applications" title="FriendFeed" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/friendfeed.png" width="16" height="16" alt="FriendFeed"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F08%2F17%2Fadding-eclipse-ide-menu-options-to-your-rcp-applications%2F&amp;linkname=Adding%20Eclipse%20IDE%20menu%20options%20to%20your%20RCP%20applications" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F08%2F17%2Fadding-eclipse-ide-menu-options-to-your-rcp-applications%2F&amp;linkname=Adding%20Eclipse%20IDE%20menu%20options%20to%20your%20RCP%20applications" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/squidoo?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F08%2F17%2Fadding-eclipse-ide-menu-options-to-your-rcp-applications%2F&amp;linkname=Adding%20Eclipse%20IDE%20menu%20options%20to%20your%20RCP%20applications" title="Squidoo" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/squidoo.png" width="16" height="16" alt="Squidoo"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F08%2F17%2Fadding-eclipse-ide-menu-options-to-your-rcp-applications%2F&amp;linkname=Adding%20Eclipse%20IDE%20menu%20options%20to%20your%20RCP%20applications" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F08%2F17%2Fadding-eclipse-ide-menu-options-to-your-rcp-applications%2F&amp;linkname=Adding%20Eclipse%20IDE%20menu%20options%20to%20your%20RCP%20applications" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F08%2F17%2Fadding-eclipse-ide-menu-options-to-your-rcp-applications%2F&amp;linkname=Adding%20Eclipse%20IDE%20menu%20options%20to%20your%20RCP%20applications" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/yahoo_bookmarks?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F08%2F17%2Fadding-eclipse-ide-menu-options-to-your-rcp-applications%2F&amp;linkname=Adding%20Eclipse%20IDE%20menu%20options%20to%20your%20RCP%20applications" title="Yahoo Bookmarks" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/yahoo.png" width="16" height="16" alt="Yahoo Bookmarks"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F08%2F17%2Fadding-eclipse-ide-menu-options-to-your-rcp-applications%2F&amp;linkname=Adding%20Eclipse%20IDE%20menu%20options%20to%20your%20RCP%20applications">Share/Save</a>]]></content:encoded>
			<wfw:commentRss>http://www.modumind.com/2009/08/17/adding-eclipse-ide-menu-options-to-your-rcp-applications/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Video and Eclipse</title>
		<link>http://www.modumind.com/2009/03/03/video-and-eclipse/</link>
		<comments>http://www.modumind.com/2009/03/03/video-and-eclipse/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 18:56:20 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Rich Client Platform]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://rcpquickstart.com/?p=400</guid>
		<description><![CDATA[For an upcoming project I need to be able to show Flash videos inside of an RCP application. Java has never been known for its multimedia functionality so I didn&#8217;t have very high hopes.
Fortunately, with Java Media Components things seem to be moving in the right direction. JMC is an API that allows you to [...]]]></description>
			<content:encoded><![CDATA[<p>For an upcoming project I need to be able to show Flash videos inside of an RCP application. Java has never been known for its multimedia functionality so I didn&#8217;t have very high hopes.</p>
<p>Fortunately, with Java Media Components things seem to be moving in the right direction. JMC is an API that allows you to play media files using the video functionality of the underlying operating system (there is work being done to provide cross-platform codecs along with the API, but it&#8217;s unclear how extensive this will be). JMC is distributed as part of the <a href="http://javafx.com/">JavaFX</a> platform, but it can function independently inside of a regular Swing application.</p>
<p>Using this <a href="http://www.informit.com/articles/article.aspx?p=1326515">recent article</a> as a guide, I managed to create an Eclipse plug-in that contributes a very rudimentary video player view to Eclipse or any other RCP application. If you&#8217;d like to try it yourself, <a href="http://idisk.mac.com/pjpaulin-public/rcpquickstart/video-player.zip">click here for the source code</a> (exported project). Note that the current code only works on Windows.</p>
<p><img src="/wp-content/uploads/2009/03/video-player.png" alt="Video playing inside the Eclipse IDE" title="Video playing inside the Eclipse IDE" width="450" height="365" class="aligncenter size-full wp-image-401" /></p>
<p>Above you can see a Flash video of <a href="http://abc.go.com/primetime/wipeout/">Wipeout</a> playing inside of my Eclipse IDE. Wipeout is my 5-year old daughter&#8217;s favorite show (if people are falling down, she&#8217;s laughing), so after 20 years as a software developer I&#8217;ve finally written some code she&#8217;d be interested in!</p>
<p>One thing to note is that JMC relies on the codecs installed on your machine. There have been some complaints that JMC is not finding or utilizing the codecs most people have installed, and hopefully this situation will improve. If you find that you&#8217;re getting <code>MediaUnsupportedException</code> errors when opening files, you may want to install a codec pack. The <a href="http://www.cccp-project.net/">CCCP</a> pack seems to work for most people.</p>
<a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F03%2F03%2Fvideo-and-eclipse%2F&amp;linkname=Video%20and%20Eclipse" title="DZone" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F03%2F03%2Fvideo-and-eclipse%2F&amp;linkname=Video%20and%20Eclipse" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F03%2F03%2Fvideo-and-eclipse%2F&amp;linkname=Video%20and%20Eclipse" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F03%2F03%2Fvideo-and-eclipse%2F&amp;linkname=Video%20and%20Eclipse" title="Digg" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F03%2F03%2Fvideo-and-eclipse%2F&amp;linkname=Video%20and%20Eclipse" title="Evernote" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F03%2F03%2Fvideo-and-eclipse%2F&amp;linkname=Video%20and%20Eclipse" title="Facebook" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/friendfeed?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F03%2F03%2Fvideo-and-eclipse%2F&amp;linkname=Video%20and%20Eclipse" title="FriendFeed" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/friendfeed.png" width="16" height="16" alt="FriendFeed"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F03%2F03%2Fvideo-and-eclipse%2F&amp;linkname=Video%20and%20Eclipse" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F03%2F03%2Fvideo-and-eclipse%2F&amp;linkname=Video%20and%20Eclipse" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/squidoo?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F03%2F03%2Fvideo-and-eclipse%2F&amp;linkname=Video%20and%20Eclipse" title="Squidoo" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/squidoo.png" width="16" height="16" alt="Squidoo"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F03%2F03%2Fvideo-and-eclipse%2F&amp;linkname=Video%20and%20Eclipse" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F03%2F03%2Fvideo-and-eclipse%2F&amp;linkname=Video%20and%20Eclipse" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F03%2F03%2Fvideo-and-eclipse%2F&amp;linkname=Video%20and%20Eclipse" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/yahoo_bookmarks?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F03%2F03%2Fvideo-and-eclipse%2F&amp;linkname=Video%20and%20Eclipse" title="Yahoo Bookmarks" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/yahoo.png" width="16" height="16" alt="Yahoo Bookmarks"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F03%2F03%2Fvideo-and-eclipse%2F&amp;linkname=Video%20and%20Eclipse">Share/Save</a>]]></content:encoded>
			<wfw:commentRss>http://www.modumind.com/2009/03/03/video-and-eclipse/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Adding the Progress View to your RCP application</title>
		<link>http://www.modumind.com/2009/02/16/adding-the-progress-view-to-your-rcp-application/</link>
		<comments>http://www.modumind.com/2009/02/16/adding-the-progress-view-to-your-rcp-application/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 21:12:54 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Rich Client Platform]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://rcpquickstart.com/?p=380</guid>
		<description><![CDATA[Last week Prakash G.R. wrote an excellent post on Using progress bars. This is definitely a post that I&#8217;ll be referring my students to in the future. There is still one missing piece to the progress bar puzzle, though, and that is how to add the Progress View itself to your application.
You might think that [...]]]></description>
			<content:encoded><![CDATA[<p>Last week Prakash G.R. wrote an excellent post on <a href="http://blog.eclipse-tips.com/2009/02/using-progress-bars.html">Using progress bars</a>. This is definitely a post that I&#8217;ll be referring my students to in the future. There is still one missing piece to the progress bar puzzle, though, and that is how to add the Progress View itself to your application.</p>
<p>You might think that this view would appear on its own when requested through the UI, and in my opinion this is the way things should be (this has been discussed in past <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=48277">Bugzilla entries</a>). For instance, your users may see a job running in the status bar of your RCP application, like this:</p>
<p><img src="/wp-content/uploads/2009/02/progress11.png" alt="progress11" title="progress11" width="245" height="22" class="aligncenter size-full wp-image-382" /></p>
<p>When the user clicks on the conveyor belt icon, they would expect to see a detailed progress view allowing them to cancel the job, like this:</p>
<p><img src="/wp-content/uploads/2009/02/progress2.png" alt="progress2" title="progress2" width="450" height="161" class="aligncenter size-full wp-image-383" /></p>
<p>So how do you get this working? The answer is not what you might think. Normally, you would add a view by finding the view class and creating a new view extension. But for the Progress View, things are a bit different. The <code>ProgressView</code> class itself is internal and is not intended to be referenced directly. It is exposed, however, through an <a href="http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/class-use/ExtensionFactory.html">extension factory</a>. The XML to create the view extension looks like this:</p>
<pre class="brush: xml">
   &lt;extension
         point=&quot;org.eclipse.ui.views&quot;&gt;
      &lt;view
            name=&quot;Progress View&quot;
            icon=&quot;icons/pview.gif&quot;
            category=&quot;org.eclipse.ui&quot;
            class=&quot;org.eclipse.ui.ExtensionFactory:progressView&quot;
            id=&quot;org.eclipse.ui.views.ProgressView&quot;&gt;
      &lt;/view&gt;
   &lt;/extension&gt;
</pre>
<p>The last piece we need to make this work is the view icon, which can be found in the <code>org.eclipse.ui.ide</code> plug-in (not part of the RCP SDK). The actual file in this plug-in is <code>icons/full/eview16/pview.gif</code>. You&#8217;ll need to copy this icon into your own plug-in and reference it in the view extension.</p>
<p>So while not extremely straightforward, it&#8217;s not that difficult either. Interestingly, there are a variety of other things you can add to your application through the same extension factory mechanism. If you&#8217;d like to find out more, check out the constants in the <a href="http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/class-use/ExtensionFactory.html">ExtensionFactory</a> class.</p>
<a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F02%2F16%2Fadding-the-progress-view-to-your-rcp-application%2F&amp;linkname=Adding%20the%20Progress%20View%20to%20your%20RCP%20application" title="DZone" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F02%2F16%2Fadding-the-progress-view-to-your-rcp-application%2F&amp;linkname=Adding%20the%20Progress%20View%20to%20your%20RCP%20application" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F02%2F16%2Fadding-the-progress-view-to-your-rcp-application%2F&amp;linkname=Adding%20the%20Progress%20View%20to%20your%20RCP%20application" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F02%2F16%2Fadding-the-progress-view-to-your-rcp-application%2F&amp;linkname=Adding%20the%20Progress%20View%20to%20your%20RCP%20application" title="Digg" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F02%2F16%2Fadding-the-progress-view-to-your-rcp-application%2F&amp;linkname=Adding%20the%20Progress%20View%20to%20your%20RCP%20application" title="Evernote" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F02%2F16%2Fadding-the-progress-view-to-your-rcp-application%2F&amp;linkname=Adding%20the%20Progress%20View%20to%20your%20RCP%20application" title="Facebook" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/friendfeed?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F02%2F16%2Fadding-the-progress-view-to-your-rcp-application%2F&amp;linkname=Adding%20the%20Progress%20View%20to%20your%20RCP%20application" title="FriendFeed" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/friendfeed.png" width="16" height="16" alt="FriendFeed"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F02%2F16%2Fadding-the-progress-view-to-your-rcp-application%2F&amp;linkname=Adding%20the%20Progress%20View%20to%20your%20RCP%20application" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F02%2F16%2Fadding-the-progress-view-to-your-rcp-application%2F&amp;linkname=Adding%20the%20Progress%20View%20to%20your%20RCP%20application" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/squidoo?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F02%2F16%2Fadding-the-progress-view-to-your-rcp-application%2F&amp;linkname=Adding%20the%20Progress%20View%20to%20your%20RCP%20application" title="Squidoo" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/squidoo.png" width="16" height="16" alt="Squidoo"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F02%2F16%2Fadding-the-progress-view-to-your-rcp-application%2F&amp;linkname=Adding%20the%20Progress%20View%20to%20your%20RCP%20application" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F02%2F16%2Fadding-the-progress-view-to-your-rcp-application%2F&amp;linkname=Adding%20the%20Progress%20View%20to%20your%20RCP%20application" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F02%2F16%2Fadding-the-progress-view-to-your-rcp-application%2F&amp;linkname=Adding%20the%20Progress%20View%20to%20your%20RCP%20application" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/yahoo_bookmarks?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F02%2F16%2Fadding-the-progress-view-to-your-rcp-application%2F&amp;linkname=Adding%20the%20Progress%20View%20to%20your%20RCP%20application" title="Yahoo Bookmarks" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/yahoo.png" width="16" height="16" alt="Yahoo Bookmarks"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.modumind.com%2F2009%2F02%2F16%2Fadding-the-progress-view-to-your-rcp-application%2F&amp;linkname=Adding%20the%20Progress%20View%20to%20your%20RCP%20application">Share/Save</a>]]></content:encoded>
			<wfw:commentRss>http://www.modumind.com/2009/02/16/adding-the-progress-view-to-your-rcp-application/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Perspective Layouts &#8211; Programmatic vs Declarative</title>
		<link>http://www.modumind.com/2008/12/11/perspective-layouts-programmatic-vs-declarative/</link>
		<comments>http://www.modumind.com/2008/12/11/perspective-layouts-programmatic-vs-declarative/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 21:59:24 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Rich Client Platform]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://rcpquickstart.com/?p=303</guid>
		<description><![CDATA[One issue that developers new to RCP face is whether to add UI elements programmatically or declaratively. In my experience, most initially choose the programmatic approach because it seems more familiar. You know, why mess with extension points when you can just code it up and be done with it.
But it&#8217;s almost always better to [...]]]></description>
			<content:encoded><![CDATA[<p>One issue that developers new to RCP face is whether to add UI elements programmatically or declaratively. In my experience, most initially choose the programmatic approach because it seems more familiar. You know, why mess with extension points when you can just code it up and be done with it.</p>
<p>But it&#8217;s almost always better to do things declaratively through extension points, the main reason being that doing so allows you leverage the power of RCP as a <a href="/wp-content/uploads/2008/08/07/how-to-brand-eclipse-rcp/">modular user interface framework</a>. To illustrate this, let&#8217;s look at our options for laying out perspectives.</p>
<p><strong>Programmatic Layout = Centralized / Hard Coded</strong></p>
<p>Here is the simplest code needed to add a view to a perspective programmatically. To do so, we implement the <code>IPerspectiveFactory</code> interface and add a view using its string id.</p>
<pre class="brush: java">
public class MyPerspectiveFactory implements IPerspectiveFactory {

	public void createInitialLayout(IPageLayout layout) {
		layout.addView(MyView.ID, IPageLayout.BOTTOM, 0.5f, layout.getEditorArea());
	}

}
</pre>
<p>The problem here is that we&#8217;ve coupled our perspective to the view being added. This view may exist in the same plug-in as the perspective, but often it does not. If the view is in a different plug-in, we have to declare a dependency on that plug-in just to add the view. It&#8217;s possible to reduce the coupling somewhat by replacing <code>MyView.ID</code> with the actual string id itself, but hidden dependencies based on string equivalency are arguably even more smelly.</p>
<p>In the end, a programmatic perspective layout results in a hard-coded and centralized architecture looking like this.</p>
<p><img src="/wp-content/uploads/2008/12/perspective-layouts-central.png" alt="perspective-layouts-central" title="perspective-layouts-central" width="450" height="291" class="aligncenter size-full wp-image-324" /></p>
<p><strong>Declarative Layout = Decentralized / Modular</strong></p>
<p>The declarative approach based on extension points resolves these issues. To layout a perspective declaratively we extend the <code>org.eclipse.ui.perspectiveExtensions</code> extension point.</p>
<pre class="brush: xml">
   &lt;extension
         point=&quot;org.eclipse.ui.perspectiveExtensions&quot;&gt;
      &lt;perspectiveExtension
            targetID=&quot;com.mycompany.myperspective&quot;&gt;
         &lt;view
               id=&quot;com.mycompany.myview&quot;
               minimized=&quot;false&quot;
               ratio=&quot;0.5&quot;
               relationship=&quot;left&quot;
               relative=&quot;org.eclipse.ui.editorss&quot;&gt;
         &lt;/view&gt;
      &lt;/perspectiveExtension&gt;
   &lt;/extension&gt;
</pre>
<p>Using this approach, each plug-in adds the views that it knows about, resulting in a decentralized architecture where the plug-ins containing the views are now in control.</p>
<p><img src="/wp-content/uploads/2008/12/perspective-layouts-decentr.png" alt="perspective-layouts-decentr" title="perspective-layouts-decentr" width="450" height="291" class="aligncenter size-full wp-image-328" /></p>
<p>Note that we have not eliminated all coupling, as the perspective extensions still need to refer to the perspective by its string id, but this is not as bad as it sounds. Perspectives are much more static than views &#8211; you typically define them and make few changes afterwards. Views, on the other hand are often moved from one plug-in to another or have their purpose (and potentially their id) redefined. Decentralizing control allows you to make these kinds of changes without breaking the perspective layout.</p>
<p><strong>Conclusion</strong></p>
<p>Adding UI elements declaratively is definitely the way to go. It gives you much more flexibility (e.g. you can add views to perspectives you didn&#8217;t create) and also allows you to leverage the modular nature of the framework.</p>
<p>Sure, there will always be cases where a declarative approach cannot be taken, particularly when some part of an API is not yet surfaced in the related extension point. But in the absence of such a need, I urge RCP developers to always turn first to the extension point mechanisms and fall back to programmatic approaches as a last resort. As your application evolves over time, you&#8217;ll really come to enjoy the flexibility and increased reusability that a declarative approach makes possible.</p>
<a href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fwww.modumind.com%2F2008%2F12%2F11%2Fperspective-layouts-programmatic-vs-declarative%2F&amp;linkname=Perspective%20Layouts%20%26%238211%3B%20Programmatic%20vs%20Declarative" title="DZone" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a> <a href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fwww.modumind.com%2F2008%2F12%2F11%2Fperspective-layouts-programmatic-vs-declarative%2F&amp;linkname=Perspective%20Layouts%20%26%238211%3B%20Programmatic%20vs%20Declarative" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fwww.modumind.com%2F2008%2F12%2F11%2Fperspective-layouts-programmatic-vs-declarative%2F&amp;linkname=Perspective%20Layouts%20%26%238211%3B%20Programmatic%20vs%20Declarative" title="Delicious" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fwww.modumind.com%2F2008%2F12%2F11%2Fperspective-layouts-programmatic-vs-declarative%2F&amp;linkname=Perspective%20Layouts%20%26%238211%3B%20Programmatic%20vs%20Declarative" title="Digg" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fwww.modumind.com%2F2008%2F12%2F11%2Fperspective-layouts-programmatic-vs-declarative%2F&amp;linkname=Perspective%20Layouts%20%26%238211%3B%20Programmatic%20vs%20Declarative" title="Evernote" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.modumind.com%2F2008%2F12%2F11%2Fperspective-layouts-programmatic-vs-declarative%2F&amp;linkname=Perspective%20Layouts%20%26%238211%3B%20Programmatic%20vs%20Declarative" title="Facebook" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/friendfeed?linkurl=http%3A%2F%2Fwww.modumind.com%2F2008%2F12%2F11%2Fperspective-layouts-programmatic-vs-declarative%2F&amp;linkname=Perspective%20Layouts%20%26%238211%3B%20Programmatic%20vs%20Declarative" title="FriendFeed" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/friendfeed.png" width="16" height="16" alt="FriendFeed"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fwww.modumind.com%2F2008%2F12%2F11%2Fperspective-layouts-programmatic-vs-declarative%2F&amp;linkname=Perspective%20Layouts%20%26%238211%3B%20Programmatic%20vs%20Declarative" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/google.png" width="16" height="16" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fwww.modumind.com%2F2008%2F12%2F11%2Fperspective-layouts-programmatic-vs-declarative%2F&amp;linkname=Perspective%20Layouts%20%26%238211%3B%20Programmatic%20vs%20Declarative" title="Reddit" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a> <a href="http://www.addtoany.com/add_to/squidoo?linkurl=http%3A%2F%2Fwww.modumind.com%2F2008%2F12%2F11%2Fperspective-layouts-programmatic-vs-declarative%2F&amp;linkname=Perspective%20Layouts%20%26%238211%3B%20Programmatic%20vs%20Declarative" title="Squidoo" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/squidoo.png" width="16" height="16" alt="Squidoo"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fwww.modumind.com%2F2008%2F12%2F11%2Fperspective-layouts-programmatic-vs-declarative%2F&amp;linkname=Perspective%20Layouts%20%26%238211%3B%20Programmatic%20vs%20Declarative" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/technorati_favorites?linkurl=http%3A%2F%2Fwww.modumind.com%2F2008%2F12%2F11%2Fperspective-layouts-programmatic-vs-declarative%2F&amp;linkname=Perspective%20Layouts%20%26%238211%3B%20Programmatic%20vs%20Declarative" title="Technorati Favorites" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/technorati.png" width="16" height="16" alt="Technorati Favorites"/></a> <a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.modumind.com%2F2008%2F12%2F11%2Fperspective-layouts-programmatic-vs-declarative%2F&amp;linkname=Perspective%20Layouts%20%26%238211%3B%20Programmatic%20vs%20Declarative" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/yahoo_bookmarks?linkurl=http%3A%2F%2Fwww.modumind.com%2F2008%2F12%2F11%2Fperspective-layouts-programmatic-vs-declarative%2F&amp;linkname=Perspective%20Layouts%20%26%238211%3B%20Programmatic%20vs%20Declarative" title="Yahoo Bookmarks" rel="nofollow" target="_blank"><img src="http://www.modumind.com/wp-content/plugins/add-to-any/icons/yahoo.png" width="16" height="16" alt="Yahoo Bookmarks"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.modumind.com%2F2008%2F12%2F11%2Fperspective-layouts-programmatic-vs-declarative%2F&amp;linkname=Perspective%20Layouts%20%26%238211%3B%20Programmatic%20vs%20Declarative">Share/Save</a>]]></content:encoded>
			<wfw:commentRss>http://www.modumind.com/2008/12/11/perspective-layouts-programmatic-vs-declarative/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>
