<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><!-- generator="wordpress/2.0.2" --><rss 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/" version="2.0">

<channel>
	<title>rich client 2.0</title>
	<link>http://www.richclient2.eu</link>
	<description>rich client 2.0</description>
	<pubDate>Wed, 08 Jul 2009 12:46:51 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.2</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/RichClient20" type="application/rss+xml" /><item>
		<title>Singlesourcing RAP: An aspect-orientated approach</title>
		<link>http://www.richclient2.eu/2009_07_08/singlesourcing-rap-an-aspect-orientated-approach/</link>
		<comments>http://www.richclient2.eu/2009_07_08/singlesourcing-rap-an-aspect-orientated-approach/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 12:43:19 +0000</pubDate>
		<dc:creator>Tom Seidel</dc:creator>
		
	<category>Common</category>
	<category>Eclipse RCP</category>
	<category>Eclipse</category>
		<guid isPermaLink="false">http://www.richclient2.eu/2009_07_08/singlesourcing-rap-an-aspect-orientated-approach/</guid>
		<description><![CDATA[Yesterday I was in Ettlingen at the Eclipse Application Developer Day and listened to Benjamin Muskallas track on Singlesourcing the RCP Mail Example. He explained that it needs 2 modifications of the generated RCP application to get the example running with RAP. The first was modifying some declarative data of the bundle, which is understandable; [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I was in Ettlingen at the Eclipse Application Developer Day and listened to Benjamin Muskallas track on Singlesourcing the RCP Mail Example. He explained that it needs 2 modifications of the generated RCP application to get the example running with RAP. The first was modifying some declarative data of the bundle, which is understandable; the second change required a direct edit within the RCP Code because the ActionFactory.ABOUT workbench action is (yet) not supported by RAP. The fact of editing RCP code directly is IMHO a critical point in enabling (probably already delivered) RCP applications. I want to show a way how to avoid such modifications with an aspect orientated approach, I’ve learnt on the EclipseDemo Camp in Leipzig, 3 weeks ago, from the team of ObjectTeam. They provide an extension which is compiled with a modified Eclipse Java Compiler and enables some features for modifying call hierarchies; see the <a target="_blank" href="http://www.objectteams.org/">website </a>for details.<a id="more-215"></a></p>
<p><img id="image212" alt="rap_compile_error.png" src="http://www.richclient2.eu/wp-content/uploads/2009/07/rap_compile_error.png" /><br />
Compile-Error with RAP Target</p>
<p>So I installed the ObjectTeam Development toolkit and created a bundle which has only one purpose: Overriding the #makeActions method in the ApplicationActionBarAdvisor for instantiating an About-Action which is compatible to RAP. Therefore you have to “reimplement” the whole method-body, which can be difficult, especially on complex methods which probably referencing classes that are not visible.</p>
<p><img id="image213" alt="team.png" src="http://www.richclient2.eu/wp-content/uploads/2009/07/team.png" /><br />
Code for replacing a method</p>
<p>Afterwards created a launch config, set the OT/Equinox flag and voila:</p>
<p><img id="image214" alt="result.png" src="http://www.richclient2.eu/wp-content/uploads/2009/07/result.png" /><br />
RAP Mail-Example with untouched ApplicationActionBarAdvisor</p>
<p>This approach is probably a bit complicated but has a big advantage: You don&#8217;t touch your RCP code. Happy Singlesourcing <img src='http://www.richclient2.eu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Download</h3>
<p><img src="http://www.richclient2.eu/wp-content/uploads/2006/07/importjar_wiz.png" /> <a id="p19" href="http://remus-software.org/media/other/rap_objecteams.zip">Download the Example as Eclipse-Project - OT Development Environment required (130 Kbyte)</a><a title="Team Project Set of the Source Code" href="http://www.richclient2.eu/wp-content/uploads/2008/06/team_project_set.psf"><br />
</a>
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.richclient2.eu/2009_07_08/singlesourcing-rap-an-aspect-orientated-approach/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Announcing new Eclipse-based OpenSource Project: Remus Information Management</title>
		<link>http://www.richclient2.eu/2009_06_10/announcing-new-eclipse-based-opensource-project-remus-information-management/</link>
		<comments>http://www.richclient2.eu/2009_06_10/announcing-new-eclipse-based-opensource-project-remus-information-management/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 11:15:55 +0000</pubDate>
		<dc:creator>Tom Seidel</dc:creator>
		
	<category>Eclipse</category>
		<guid isPermaLink="false">http://www.richclient2.eu/2009_06_10/announcing-new-eclipse-based-opensource-project-remus-information-management/</guid>
		<description><![CDATA[I’m very proud to announce a new Eclipse-based OpenSource project: Remus Information Management (short “RIM”) , an application for information management. The goal of this project is to provide an open platform and tooling support for any kind of data which can be structured into a unit of information. Its features like desktop-integration, search and [...]]]></description>
			<content:encoded><![CDATA[<p><img align="left" id="image209" alt="rim_white_scaled.png" src="http://www.richclient2.eu/wp-content/uploads/2009/06/rim_white_scaled.png" />I’m very proud to announce a new Eclipse-based OpenSource project: <strong>Remus Information Management</strong> (short “<strong>RIM</strong>”) , an application for information management. The goal of this project is to provide an open platform and tooling support for any kind of data which can be structured into a unit of information. Its features like desktop-integration, search and synchronization with remote data repositories should help the user to manage the mass of daily information-throughput and information-providers to distribute their data easily. The initial environment for RIM will be a desktop for fulfilling the requirements of desktop-integration and full offline capability but we’re already investigating to deliver RIM as a web-application.</p>
<table border="0">
<tr>
<td><img src="http://remus-software.org/images/stories/movie_run.png" /></td>
<td><a target="_blank" href="http://remus-software.org/media/screencasts/rim_5_minutes/rim_5_minutes.html"><strong>Watch the video “RIM in 5 minutes” to get an overview of the application and its current implemented features.</strong><br />
</a></td>
</tr>
</table>
<p><a id="more-210"></a>To achieve these goals we’ve chosen the Eclipse Platform and the RCP Framework because of its flexible and extensible behavior, customizing and extending the platform can be done with the standard eclipse mechanisms like extension points and OSGI-Services. Especially the extension of the current feature-set is an important requirement.  Whether you want to add new desktop features, new business specific information-structures or connect RIM to your own proprietary data repository the application should provide minimalistic interfaces to plug-in your functionality.</p>
<h3>Roadmap</h3>
<p>The development started 1 year ago and you can download a nightly build with a predefined set of information types and repository connectors. The first stable release is scheduled for January 2010, with a stable platform and a well-mixed set of information types and repositories, for an overview see <a href="http://remus-software.org/feature-overview">http://remus-software.org/feature-overview</a>.</p>
<h3>See RIM @ Eclipse DemoCamp Leipzig</h3>
<p>I&#8217;ll talk at the <a target="_blank" href="http://wiki.eclipse.org/Eclipse_DemoCamps_Galileo_2009/Leipzig">Eclipse DemoCamp in Leipzig</a> (June, 23rd) about RIM. If you want to know more about the project this event is a good possibility <img src='http://www.richclient2.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3>Get started</h3>
<p>We would be very happy if you could download a nightly build and try RIM. Feedback, Feature-Requests and Bugreports are much appreciated. Here are the links:</p>
<p>Website: <a href="http://remus-software.org">http://remus-software.org</a><br />
Issue-Tracker: <a href="http://remus-software.org/jira">http://remus-software.org/jira</a><br />
Nightly-Builds: <a href="http://www.remus-software.org/bamboo/browse/RCP-NIGHTLY/latest/artifact">http://www.remus-software.org/bamboo/browse/RCP-NIGHTLY/latest/artifact</a>
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.richclient2.eu/2009_06_10/announcing-new-eclipse-based-opensource-project-remus-information-management/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>What can the Team framework do for your RCP?</title>
		<link>http://www.richclient2.eu/2008_06_09/what-can-the-team-framework-do-for-your-rcp/</link>
		<comments>http://www.richclient2.eu/2008_06_09/what-can-the-team-framework-do-for-your-rcp/#comments</comments>
		<pubDate>Mon, 09 Jun 2008 10:12:41 +0000</pubDate>
		<dc:creator>Tom Seidel</dc:creator>
		
	<category>Eclipse RCP</category>
		<guid isPermaLink="false">http://www.richclient2.eu/2008_06_09/what-can-the-team-framework-do-for-your-rcp/</guid>
		<description><![CDATA[A common usecase for a RCP is to request data from a remote repository for viewing, editing, etc. You&#8217;ll find that there are many ways to do this, but have you ever thought about requesting your domain specific data via a Team implementation and store that data in your workspace? - The following article will [...]]]></description>
			<content:encoded><![CDATA[<p>A common usecase for a RCP is to request data from a remote repository for viewing, editing, etc. You&#8217;ll find that there are many ways to do this, but have you ever thought about requesting your domain specific data via a Team implementation and store that data in your workspace? - The following article will explain how this could work and provides a very simple example how you can use the mighty functionalities of a Team implementation under the hood, without exposing the complexity to the user.<a id="more-201"></a></p>
<h3>Team, Resources, Workspace, Filesystems</h3>
<p>If you use Eclipse as an IDE you know the general workspace for requesting your data (sourcecode) you want to edit. You need to create a remote repository location, checkout the data, browse through the data in your workspace, open a file, etc. It is worth mentioning that the integration of workspace data is one of the best ways to integrate a domain-specific datamodel in your RCP application and it also is the &#8220;eclipse-way&#8221; to manage data. Then there is the Resource-API with the ability to implement a virtual filesystem, an excellent ways to notify of Resource changes and finalyy you have the project-builder that allows you to built up your ows RCP - specific data model and validating the state of your model.</p>
<p>On the other hand there is the Team-API. The team API offers you the deep integration of data-synchronization with a remote data store and your IResource-based workspace data. So the Team-API is more of a framework, that handles just the workflow and the integration into a team-provider implementation such as the CVS. The Subversive project has also an implementation for SVN repositories.</p>
<div style="margin: 10px; text-align: center"><img alt="resource_team.png" id="image202" src="http://www.richclient2.eu/wp-content/uploads/2008/06/resource_team.png" /><br />
Overview Resource &#038; Team API</div>
<h3>What has this got to do with RCP?</h3>
<p>Perhaps the question is badly worded, to be more specific: &#8220;What differs in data handling regarding a Development Tool and your domain specific RCP?&#8221; - Not so much really. Instead of editing Java models (Class, Methods,&#8230;) you&#8217;re editing domain specific data. The rest stay pretty much the same. All models need to be persisted and sometimes models need to be synchronized with a remote repository. So why not using the same mechnanisms to synchronize this data with the Team-API?</p>
<h3>Complexity</h3>
<p>A common problem of Reusing Eclipse-Components is that the complexity of application workflows cannot be hidden from the user (this should be also an issue while developing e4). From a developers perspective it would be greate to have hundreds of possibilities to customize setting, from an adapter&#8217;s perspective who develops a RCP of a limited scope for a non-technical target user (I develop RCPs for marketing &#038; sales people) this is always an issue. The hitch is that in nearly every case of reusing Eclipse components you have to patch the plugins coming from Eclipse. Let&#8217;s take a simple example: Update sites in RCPs - There will never be the reqirement that an user can add Update-Sites. A typical user wouldn&#8217;t normally know what an update-site is, namely an application internal component regarding RCP development.</p>
<p>The same issue arises when you integrate the team framework. A very good method for obtaining data is to use SVN, but the user has no idea where the data originally comes from. It&#8217;s simply unacceptable that the user should have to create repository locations, navigating through trunk and branches, etc. As a RCP developer there is always a consideration of how much complexity should be passed to the user. In the most cases you have to strip the original UI a lot.</p>
<h3>The example application</h3>
<p>Meant for a prototype I&#8217;ve developed a very simple application that allows you to define via Extension points repository providers, which typically come from another remote application, which returns the user specific repositories (e.g. via WS-Call). The data itself is located within a version control system. These repositories are checkedout using an installed team provider implementation and are stored into your local workspace as a project. After checkout you can use the mighty Resource-API to manipulate the data or organize the representation of the raw data to suit your domain specific usecase.</p>
<div style="margin: 10px; text-align: center"><img id="image203" alt="rep_extension.png" src="http://www.richclient2.eu/wp-content/uploads/2008/06/rep_extension.png" /><br />
Defining Repository provider via Extension Point</div>
<div style="margin: 10px; text-align: center"><img id="image204" alt="rep_dialog.png" src="http://www.richclient2.eu/wp-content/uploads/2008/06/rep_dialog.png" /><br />
Domain specific representation of different repositories</div>
<div style="margin: 10px; text-align: center"><img id="image205" alt="rep_editing.png" src="http://www.richclient2.eu/wp-content/uploads/2008/06/rep_editing.png" /><br />
Editing my Domain specific data</div>
<h3>Conclusion</h3>
<p>Combining Resource API with Team Integration is an easy and elegant way to handle data synchronizations even for non technical RCP Applications . But it should also be mentioned that the effort fo stripping the UI is immense. In general you can not use the normal Team UI components for your non technical user-group. And then there is a fact that the controlling of accessible data is managed by the application itself or a remote system not by the user.</p>
<h3>Appendix</h3>
<p>Just to round off this article, I&#8217;d like to share a photo I took at the entrance of the Convention Center at EclipseCon for all those who missed the &#8220;Netbean-girls&#8221;.</p>
<p><a class="imagelink" title="DSC00759.JPG" href="http://www.richclient2.eu/wp-content/uploads/2008/06/DSC00759.JPG"><img id="image206" alt="DSC00759.JPG" src="http://www.richclient2.eu/wp-content/uploads/2008/06/DSC00759.thumbnail.JPG" /></a></p>
<h3>Download</h3>
<p><img src="http://www.richclient2.eu/wp-content/uploads/2008/03/import_projectset.gif" /> <a title="Team Project Set of the Source Code" href="http://www.richclient2.eu/wp-content/uploads/2008/06/team_project_set.psf">Download the CVS Team Project-Set<br />
</a><img src="http://www.richclient2.eu/wp-content/uploads/2006/07/importjar_wiz.png" /> <a id="p19" href="http://www.richclient2.eu/wp-content/uploads/2008/06/team_rcp.zip">Download the Example as RCP (23 Mbyte)</a><a title="Team Project Set of the Source Code" href="http://www.richclient2.eu/wp-content/uploads/2008/06/team_project_set.psf"><br />
</a>
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.richclient2.eu/2008_06_09/what-can-the-team-framework-do-for-your-rcp/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>EclipseCon Materials</title>
		<link>http://www.richclient2.eu/2008_03_20/eclipsecon-materials/</link>
		<comments>http://www.richclient2.eu/2008_03_20/eclipsecon-materials/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 00:07:43 +0000</pubDate>
		<dc:creator>Tom Seidel</dc:creator>
		
	<category>Eclipse</category>
		<guid isPermaLink="false">http://www.richclient2.eu/2008_03_20/eclipsecon-materials/</guid>
		<description><![CDATA[Just uploaded the presenation and the Flash-Eclipse Communication Prototype, which can be imported as an existing project into your workspace.
Thanks for attending.
Download
 Powerpoint presentation (0,7 MByte)
 Flash-Eclipse Communication Prototype Source-Code (5,5 MByte)

]]></description>
			<content:encoded><![CDATA[<p>Just uploaded the presenation and the Flash-Eclipse Communication Prototype, which can be imported as an existing project into your workspace.</p>
<p>Thanks for attending.</p>
<h3>Download</h3>
<p><img src="http://www.richclient2.eu/wp-content/uploads/2008/03/ppt.gif" /> <a title="Presentation" href="http://www.richclient2.eu/wp-content/uploads/2008/03/eclipse_con.ppt">Powerpoint presentation (0,7 MByte)<br />
</a><img src="http://www.richclient2.eu/wp-content/uploads/2006/07/importjar_wiz.png" /> <a href="http://www.richclient2.eu/wp-content/uploads/2008/03/flash_prototype.zip">Flash-Eclipse Communication Prototype Source-Code (5,5 MByte)</a>
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.richclient2.eu/2008_03_20/eclipsecon-materials/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Developing Data Centric RCP Applications Part IV – Reuse of IDE features</title>
		<link>http://www.richclient2.eu/2008_03_13/developing-data-centric-rcp-applications-part-iv-%e2%80%93-reuse-of-ide-features/</link>
		<comments>http://www.richclient2.eu/2008_03_13/developing-data-centric-rcp-applications-part-iv-%e2%80%93-reuse-of-ide-features/#comments</comments>
		<pubDate>Thu, 13 Mar 2008 16:58:06 +0000</pubDate>
		<dc:creator>Tom Seidel</dc:creator>
		
	<category>Eclipse RCP</category>
		<guid isPermaLink="false">http://www.richclient2.eu/2008_03_13/developing-data-centric-rcp-applications-part-iv-%e2%80%93-reuse-of-ide-features/</guid>
		<description><![CDATA[Let’s see, has anybody ever delved into what RCP application actually means? In most cases you might find a rather cut-down definition reduced to its Components. This impression is bolstered by the naming conventions of Eclipse Bundles and Features, for instance Eclipse SDK ships with a feature named org.eclipse.rcp, suggesting that it serves to define [...]]]></description>
			<content:encoded><![CDATA[<p>Let’s see, has anybody ever delved into what RCP application actually means? In most cases you might find a rather cut-down definition reduced to <a href="http://live.eclipse.org/node/213">its</a> <a href="http://eclipse.dzone.com/news/eclipse-platform">Components</a>. This impression is bolstered by the naming conventions of Eclipse Bundles and Features, for instance Eclipse SDK ships with a feature named org.eclipse.rcp, suggesting that it serves to define the RCP’s scope. Defining the RCP by means of the installed bundles simply goes beyond my understanding. Personally, I think the <a href="http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/arch.htm">graphic</a> in the Eclipse help pages is better for demonstrating the Eclipse Component Model. In my opinion there is no difference in quality between an Eclipse SDK application and an Eclipse <a href="http://www.eclipse.org/articles/Article-RCP-3/tutorial3.html">RCP Mail Template</a> application. These components, specifically the Workspace model and the features that come with the org.eclipse.ui.ide package (whatever the Id is meant to imply <img src='http://www.richclient2.eu/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> , can easily be integrated in a more ‘minimalist’ RCP application. When you are dealing with larger business applications, there is simply no way you can avoid using these Eclipse Platform or Eclipse Tools bundles. This seems a good time to demonstrate how to put these components to work for you in a context that is completely different from the usual JDT environment.<a id="more-199"></a></p>
<h3>Installing the Workspace Model</h3>
<p>As already mentioned in my last <a href="http://www.richclient2.eu/2008_03_07/developing-data-centric-rcp-applications-part-iii-%e2%80%93-the-model/">posting</a> we are building an application that uses OSGi bundles to distribute information, i.e. read-only information. The requirement in most cases, however, is to be able to supplement this information. Our example application allows users to append further documents to an information unit defined by an Extension Point. These are saved to the workspace and linked to the information units using the Eclipse Adapter mechanism.</p>
<p>These are the revelant points to consider here:</p>
<ol>
<li>Finished implementations of file operations and their integration in the Eclipse Framework</li>
<li>Support for asynchronity and parallelism</li>
<li>Listener for file operations, project builder</li>
<li>EFS support for alternative file systems</li>
</ol>
<div style="text-align: center"><img id="image193" alt="part4_adapter.png" src="http://www.richclient2.eu/wp-content/uploads/2008/03/part4_adapter.png" /><br />
Data model and adaption to Workspace model</div>
<h3>Markers</h3>
<p>Markers are useful extensions that come in handy to persistently associate meta data with resources, such as files contained in the Workspace. You can find this feature in the org.eclipse.ui.ide plugin. Markers are even more helpful when it comes to storing meta data that cannot be represented in the EMF model. In our example application, markers are created while we overwrite attached documents, and these markers are mapped to the pertaining data model and displayed.<br />
Decorators are used to superimpose the markers on the rendered objects of item providers generated by EMF Edit. The only drawback is that in addition to the EMF notification mechanism, you also have to implement an IResourceChangeListener, which updates the revelant model object in the viewer when the marker is created.</p>
<div style="text-align: center"><img alt="part4_marker.png" id="image196" src="http://www.richclient2.eu/wp-content/uploads/2008/03/part4_marker.png" /><br />
EMF data are mapped to resources and markers (visualized with a tooltip)</div>
<p>These markers don&#8217;t differ from the more common markers such as the compilation warning marker – as you may see if you compare them with those in the Warning View that Eclipse SDK developers are familiar with.</p>
<div style="text-align: center"><img alt="part4_warnings.png" id="image198" src="http://www.richclient2.eu/wp-content/uploads/2008/03/part4_warnings.png" /><br />
Warning View: Often seen in the Eclipse SDK</div>
<h3>More Contributions</h3>
<p>Another great advantage is that other typical platform plugins can contribute functions by registering the Adapter functions in the context of my application-specific object. A typical example is the org.eclipse.compare plugin which makes available application-specific EMF generated data objects for the adapted objects via a context menu.</p>
<div style="text-align: center"><img alt="part4_contribution.png" id="image195" src="http://www.richclient2.eu/wp-content/uploads/2008/03/part4_contribution.png" /><br />
Context menu for contributions from other bundles</div>
<p>This contribution of additional function by other plugins – a major attribute of the Eclipse platform – can clearly spoil the desired effect in reduced user interfaces. Essentially, you might have bundles contributing entries, which you want to suppress. How to implement this function interception by writing so-called <a href="http://wiki.eclipse.org/Equinox_Transforms">Transformer Hooks</a> will be explained in a later posting.</p>
<h3>Outlook</h3>
<p>In my next posting I will be primarily taking a closer look at data management at runtime. A prominent issue will be the synchronization of online data that cannot be distributed as OSGi packages. I will also talk about the Update Manager and – server-side - Extensions. By the way, feedback about the points mentioned here is always more than welcome.</p>
<h3>Download</h3>
<p><img src="http://www.richclient2.eu/wp-content/uploads/2008/03/import_projectset.gif" /> <a href="http://www.richclient2.eu/wp-content/uploads/2008/03/pdfmanager.psf">Download the CVS Team Project-Set</a></p>
<h3 />
]]></content:encoded>
			<wfw:commentRSS>http://www.richclient2.eu/2008_03_13/developing-data-centric-rcp-applications-part-iv-%e2%80%93-reuse-of-ide-features/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Developing Data Centric RCP Applications Part III – The Model</title>
		<link>http://www.richclient2.eu/2008_03_07/developing-data-centric-rcp-applications-part-iii-%e2%80%93-the-model/</link>
		<comments>http://www.richclient2.eu/2008_03_07/developing-data-centric-rcp-applications-part-iii-%e2%80%93-the-model/#comments</comments>
		<pubDate>Thu, 06 Mar 2008 22:25:33 +0000</pubDate>
		<dc:creator>Tom Seidel</dc:creator>
		
	<category>Eclipse RCP</category>
		<guid isPermaLink="false">http://www.richclient2.eu/2008_03_07/developing-data-centric-rcp-applications-part-iii-%e2%80%93-the-model/</guid>
		<description><![CDATA[If we want to provide a data structure, we need to create

a meta model using the EMF
an extension point schema.


Data Structure
After taking a closer look at the data structure, you may want to classify them as follows:

Core data (PDF files)
Core meta data (meta data describing a PDF file)
Data generated by users

Then there is the data [...]]]></description>
			<content:encoded><![CDATA[<p>If we want to provide a data structure, we need to create</p>
<ol>
<li>a meta model using the EMF</li>
<li>an extension point schema.</li>
</ol>
<p><a id="more-188"></a></p>
<h3>Data Structure</h3>
<p>After taking a closer look at the data structure, you may want to classify them as follows:</p>
<ol>
<li>Core data (PDF files)</li>
<li>Core meta data (meta data describing a PDF file)</li>
<li>Data generated by users</li>
</ol>
<p>Then there is the data needed internally for configuration purposes, such as available update sites, locally installed data vs. data to be accessed online etc.</p>
<p>Thus, the model generated with the EMF is divided up into three logical parts:</p>
<ol>
<li>Application-specific data model</li>
<li>Data model for handling content structures</li>
<li>Meta data model</li>
</ol>
<div style="text-align: center"><img alt="pdf_model.png" id="image189" src="http://www.richclient2.eu/wp-content/uploads/2008/03/pdf_model.png" /></div>
<div style="text-align: center">EMF Ecore Files</div>
<div style="text-align: center; padding-top: 10px"><img alt="pdf_exsd.png" id="image190" src="http://www.richclient2.eu/wp-content/uploads/2008/03/pdf_exsd.png" /></div>
<div style="text-align: center">Extension Point Definition</div>
<p>After generating the corresponding classes, you can go on to define the extension points which describe a specific data unit.. This data will be not be editable later and will be distributed via an update server.Note that even at this early stage you are able to generate content units based on PDE tooling. The advantage is that very early on in the process you can generate productive data, and this does not necessarily require the expert knowledge of a programmer.Furthermore, you can flexibly respond to changing data structures.</p>
<h3>EMF Edit</h3>
<p>In addition, the EMF Edit framework offers adapters that enable developers to represent the generated data model in an Eclipse application. This saves having to implement Jface Viewers, which means enormous time savings compared with the traditional approach to Viewer generation.</p>
<h3>Application status</h3>
<p>At this point we have an application which allows us to browse the information units registered as extension points.</p>
<div style="text-align: center"><img alt="pdf_pluginxml.png" id="image191" src="http://www.richclient2.eu/wp-content/uploads/2008/03/pdf_pluginxml.png" /></div>
<div style="text-align: center">Content Definition with the PDE (plugin.xml)</div>
<div style="text-align: center; padding-top: 10px"><img alt="pdf_rcp.png" id="image192" src="http://www.richclient2.eu/wp-content/uploads/2008/03/pdf_rcp.png" /></div>
<div style="text-align: center">First screenshot after Model-Creation</div>
<h3>Outlook</h3>
<p>In the next sequel we will focus on how to use functionalities which is shipped with the IDE plugins of Eclipse, and how to use several functionalities under the hood; so the next articles become more code orientated.</p>
<h3>Download</h3>
<p><img src="http://www.richclient2.eu/wp-content/uploads/2008/03/import_projectset.gif" /> <a title="Download Example RCP" id="p19" href="http://www.richclient2.eu/wp-content/uploads/2007/10/de.spiritlink.quickaccess_rcp.zip" /><a href="http://www.richclient2.eu/wp-content/uploads/2008/03/pdfmanager.psf">Download the CVS Team Project-Set</a>
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.richclient2.eu/2008_03_07/developing-data-centric-rcp-applications-part-iii-%e2%80%93-the-model/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Developing Data Centric RCP Applications Part II – Architecture</title>
		<link>http://www.richclient2.eu/2008_03_05/developing-data-centric-rcp-applications-part-ii-%e2%80%93-architecture/</link>
		<comments>http://www.richclient2.eu/2008_03_05/developing-data-centric-rcp-applications-part-ii-%e2%80%93-architecture/#comments</comments>
		<pubDate>Wed, 05 Mar 2008 19:40:07 +0000</pubDate>
		<dc:creator>Tom Seidel</dc:creator>
		
	<category>Eclipse RCP</category>
		<guid isPermaLink="false">http://www.richclient2.eu/2008_03_05/developing-data-centric-rcp-applications-part-ii-%e2%80%93-architecture/</guid>
		<description><![CDATA[The platform approach has been a major boost for the success of Eclipse. This is mainly due to two key attributes:

Eclipse uses an OSGi Runtime (Equinox) which allows platform components to be added, removed or updated. Major advantages compared to traditional Java libraries are improved control mechanisms for dependencies between components, release versioning and the [...]]]></description>
			<content:encoded><![CDATA[<p>The platform approach has been a major boost for the success of Eclipse. This is mainly due to two key attributes:<a id="more-187"></a></p>
<ol>
<li>Eclipse uses an OSGi Runtime (<a title="Equinox Project" href="http://www.eclipse.org/equinox/">Equinox</a>) which allows platform components to be added, removed or updated. Major advantages compared to traditional Java libraries are improved control mechanisms for dependencies between components, release versioning and the component lifecycle within the OSGi container.</li>
<li>The Extension Point Registry:  This allows a formal definition of components that can be processed in an application. An interface implemented as an extension point schema is created that enables any developer to contribute and expand it.</li>
</ol>
<p>These two characteristics will come in handy when we start implementing the example application.<br />
Information units may be bunched together as OSGi bundles and then remotely installed in the application as OSGi bundles. These bundles only contain raw content and application-specific structural descriptions for identifying the content and integrating it in the application context. Identification is accomplished via the extension registry, which essentially means that these content bundles contain extension points with information enabling the application to read the data and make it available to the user.</p>
<p>There are three tremendous benefits to this approach:</p>
<ol>
<li>The bundle lifecycle is the same as the application-specific content lifecycle. In other words, the state of my application-specific data is mapped to that of installed bundles.  The OSGi Runtime functionality is also used for installing, uninstalling and updating applications. In addition, content dependencies can be defined at OSGi level.</li>
<li>By using extension points to describe information units, you can leverage the advantages of a highly flexible fully implemented “standard” that enables the access as well as the representation and processing of these information units.  Implementation efforts remain only minimal.</li>
<li>The <a title="PDE Project" href="http://www.eclipse.org/pde/">PDE</a> with its tools for bundle (plug-in) creation provides a complete environment for the creation of new content units. In order to implement this function, the PDE just needs to be supplemented by a content-specific layer.</li>
</ol>
<h3>Example</h3>
<p>Ok, let’s cut a long story short. How can this be demonstrated? – We want to create an RCP application for a centralized approach to PDF document distribution as the end point. These PDFs will be visualized in the application for users and tagged with metadata allowing the data to be put in the context of the process currently employed by the user. Although the PDFs will be read-only files, users will be able to create further data associated with the provided files and distribute them.  We have also envisioned a basic collaboration tool on the information level.</p>
<h3>Outlook</h3>
<p>In the next sequel we will get started on the actual implementation.  We will start off by generating a model reflecting the requirements, which will be done using the <a title="EMF Project" href="http://www.eclipse.org/modeling/emf/">EMF</a>. Then we will go on to create an extension point for PDF documents.</p>
<p>We will also discuss some aspects concerning a specific use case, e.g. information units refer to PDF documents and additional data which can be associated with PDF files.  Let me just point out that this will be a simplified implementation.</p>
<p>Stay tuned.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.richclient2.eu/2008_03_05/developing-data-centric-rcp-applications-part-ii-%e2%80%93-architecture/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Developing Data Centric RCP Applications Part I – Intro</title>
		<link>http://www.richclient2.eu/2008_03_04/developing-data-centric-rcp-applications-part-i-%e2%80%93-intro/</link>
		<comments>http://www.richclient2.eu/2008_03_04/developing-data-centric-rcp-applications-part-i-%e2%80%93-intro/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 21:48:29 +0000</pubDate>
		<dc:creator>Tom Seidel</dc:creator>
		
	<category>Eclipse RCP</category>
		<guid isPermaLink="false">http://www.richclient2.eu/2008_03_04/developing-data-centric-rcp-applications-part-i-%e2%80%93-intro/</guid>
		<description><![CDATA[Eclipse-based applications targeted at developers’ tasks and needs are proliferating. But what does Eclipse have to offer to other user groups, to be more precise non-technical user groups in particular in combination with Rich Client Platform applications?
Just take a closer look at your daily work, and you may probably realize that the greater part of [...]]]></description>
			<content:encoded><![CDATA[<p>Eclipse-based applications targeted at developers’ tasks and needs are proliferating. But what does Eclipse have to offer to other user groups, to be more precise non-technical user groups in particular in combination with Rich Client Platform applications?<br />
Just take a closer look at your daily work, and you may probably realize that the greater part of your working routine is spent doing the research and gathering information required for your job - no matter how this information is structured.<a id="more-186"></a></p>
<h3>What’s the idea behind this series?</h3>
<p>First and foremost, the intention of the series is to show how an Eclipse RCP can be used to quickly and efficiently provide the staff of an enterprise with the up-to-date information relevant for their work. How easily this can be achieved will be demonstrated using a typical application. Last but not least, writing this article will help me get my thoughts sorted and to compile all the key information on EclipseCon <img src='http://www.richclient2.eu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  that I will present during <a href="http://www.eclipsecon.org/2008/?page=sub/&#038;id=148">a talk</a> at some later stage.</p>
<p>A short overview of the topics to be discussed:</p>
<ul>
<li>Preliminary considerations</li>
<li>General Eclipse-based architecture</li>
<li>(EMF) data model</li>
<li>Use of Eclipse IDE components</li>
<li>Data management</li>
<li>Data updates and synchronisation</li>
<li>Data processing</li>
<li>UI stripping</li>
<li>Collaboration</li>
</ul>
<h3>Distributed Information Repositories</h3>
<p>A surprising number of enterprises on a more web-focused infrastructure consisting of context-dependent web applications and portals that enable users to obtain information.  And for these there is an array of applications for almost each topic each with its own user interfaces, operational concepts and data visualisation. What is even more, as a rule this wealth of information belonging to individual systems is not connected in any way. The task of merging all this information is left to users who are responsible for making the connections. Another problem arises then, namely that a user’s view on data structures may differ significantly from that of other users working in different fields. Generally, users have to first explore where to obtain the needed information and how it is structured. Consequently, collaborative activities often sidestep such information distribution applications, they cannot be coordinated or may simply be dropped because the process would be too laborious.</p>
<h3>Centralized Data Distribution continues on the Client</h3>
<p>Another point to mention is that users often go on to process the information further. If I succeed in my search for a presentation on the web, I may adapt it to my needs, delete some slides, add some more…finally ending up with new information units distinct from the central data pool. Furthermore, management does not know which information has any relevance or qualitative use for a specific user, nor can any other central instance update the information: it is up to users alone to keep them updated. Such scenarios can only be avoided if the information distribution process is carried over to the client by offering possibilities that reflect user-specific applications or processes. This should be considered a valid requirement for any RCP application, since specific bundles (e.g. JDT for Java source code editing) with information editing capabilities are available.</p>
<h3>Local Data Processing –  natural use only for a few user groups</h3>
<p>It is nothing unusual for developers to edit source code on their local machine and update the server system at intermittent intervals. Nobody would even think of distributing each bit of data manipulation separately. Only after the source code has been  updated to a repository can the pertaining business process such as deployment, unit testing etc. be started. Alas, as much as this ‘division of labor’ between server and client may make sense, it is not that widespread and many users have no local access to data or are hampered by much shorter synchronisation intervals, which at worst can be a website request response cycle. The necessity of such excessive communication is hardly ever challenged, probably because the benefits of balanced data management during the process itself is often underestimated. And then there is the higher degree of distribution which drives up maintenance and security costs. In most cases, it may safely be assumed that complex data structures, even those with high demands on the UI and user interaction, can be optimally visualised using the graphical powers offered by an Eclipse Rich Client. And integration in the operating system (Desktop-Notification, OLE, FileTransfer, TrayIcon, &#8230;) also offers the great advantage of greatly simplified communication with other software applications.</p>
<h3>Information from Third-party Suppliers – required, but often underestimated</h3>
<p>Sure, there are applications that provide all the information that users need, but most processes have information requirements that force users to leave an application or even complete system landscapes. A client which draws on content from different repositories would provide an optimal connecting link.  Information is only connected where this is really needed and in such way that it offers added value to users. Finally, the feature of allowing third-party vendor access to client applications could deliver additional momentum to application development, without the necessity of major changes to the IT environment.</p>
<h3>Prospects</h3>
<p>The next step now is to lay down some technical aspects focusing on Eclipse-related considerations and lay the foundation for an RCP implemenation. Let me, dear reader, apologize in advance for the in part rudimentary implementation of my software example, as it is not meant to be an application for demonstrating the built-in functionalities of Eclipse. Rather, my intention is to exemplify a specific perspective taken in building RCP applications. Stay tuned!</p>
<div style="text-align: center"><a title="schema_rcp.png" class="imagelink" href="http://www.richclient2.eu/wp-content/uploads/2008/03/schema_rcp.png"><img id="image184" alt="schema_web.png" src="http://www.richclient2.eu/wp-content/uploads/2008/03/schema_web.thumbnail.png" /></a></div>
<div style="text-align: center">Distribution via Webapplications (schema)</div>
<div style="text-align: center"><a title="schema_web.png" class="imagelink" href="http://www.richclient2.eu/wp-content/uploads/2008/03/schema_web.png"><img id="image185" alt="schema_rcp.png" src="http://www.richclient2.eu/wp-content/uploads/2008/03/schema_rcp.thumbnail.png" /></a></div>
<div style="text-align: center">Distribution via Rich Client (schema)</div>
]]></content:encoded>
			<wfw:commentRSS>http://www.richclient2.eu/2008_03_04/developing-data-centric-rcp-applications-part-i-%e2%80%93-intro/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Web vs. Smart Client – How to sell Eclipse RCP Technology?</title>
		<link>http://www.richclient2.eu/2007_10_18/web-vs-smart-client-%e2%80%93-how-to-sell-eclipse-rcp-technology/</link>
		<comments>http://www.richclient2.eu/2007_10_18/web-vs-smart-client-%e2%80%93-how-to-sell-eclipse-rcp-technology/#comments</comments>
		<pubDate>Thu, 18 Oct 2007 13:34:39 +0000</pubDate>
		<dc:creator>Tom Seidel</dc:creator>
		
	<category>Business</category>
		<guid isPermaLink="false">http://www.richclient2.eu/2007_10_18/web-vs-smart-client-%e2%80%93-how-to-sell-eclipse-rcp-technology/</guid>
		<description><![CDATA[With the development of the RCP Framework a new and elegant possibility to develop client applications was created. The Eclipse licensing model allows you to create commercial applications based on the RCP Platform. However, the question must to be asked under which conditions and with which requirements a computer-based solution based on RCP is the [...]]]></description>
			<content:encoded><![CDATA[<p>With the development of the RCP Framework a new and elegant possibility to develop client applications was created. The Eclipse licensing model allows you to create commercial applications based on the RCP Platform. However, the question must to be asked under which conditions and with which requirements a computer-based solution based on RCP is the best option.<a id="more-182"></a></p>
<h3>Starting point</h3>
<p>Often you’re faced with a software-environment that’s completely based on web-applications, regardless of which business process is mapped with an application. Experience also frequently shows that people have a very different picture in mind, when you’re talking about Java client-applications. A slow ugly swing application or an applet is the most frequently encountered association. At this point, it gets very difficult to convince somebody of a technical RCP-based solution, especially if that technology is still completely unknown.</p>
<h3>Possible solution</h3>
<p>The approach I use here is not based on listing all the advantages brought about by Eclipse RCP, but rather on the analysis of the requirements you have to meet and which are relevant to opting for a technical solution. Thus, the business specific requirements are the crucial criteria that indicate technical architectures/methods/frameworks/etc, not vice versa, as is often the practice.<br />
Accordingly, the characteristics of RCP and web applications play a comparably important role. Basically, all you have to do is &#8220;map&#8221; the requirements to the characteristics of technical systems.<br />
This approach will enable you to achieve several goals: First of all, you’ll get a clearer picture of your project goal. Secondly, it’ill force a “re-consideration” of the given requirements.</p>
<h3>Poster</h3>
<p>The poster, which was also shown at the Eclipse Summit in Ludwigsburg, can be seen as a help for guidance within such a decision-making process. Its focus is on different requirements which are brought into the context of a decision for a system. The important aspects are:</p>
<ul>
<li>Target audience (power user, casual user)</li>
<li>Online/offline capabilities</li>
<li>Availability</li>
<li>Existing software systems</li>
<li>Hybrid applications</li>
<li>&#8230;</li>
</ul>
<div style="text-align: center"><a title="Download Poster (PDF)" href="http://www.richclient2.eu/wp-content/uploads/2007/10/SCA-Entscheidungs-Prozess_poster_eng_ohne_beschnitt.pdf"><img alt="poster_link.png" id="image181" src="http://www.richclient2.eu/wp-content/uploads/2007/10/poster_link.png" /></a></div>
<p>Ideally, this should make it easier to decide between a web application or rich client application.</p>
<h3>RAP?</h3>
<p>Based on the aspects mentioned above, a 1:1 replication of application types, as it is done with the Rich Ajax Platform, is a suboptimal way of modifying applications. This is because there are further aspects which need to be considered when the decision to move an application to the web is made.</p>
<p>Also worth mentioning here are the expectations concerning usability, layout, response time, etc. that are mostly completely different, so that a 1:1 porting from an RCP application to a web application (and also vice versa) will not meet the changed requirements. Please, do not get me wrong, this is no RAP bashing, I think it&#8217;s really cool software, but from my experience, I couldn&#8217;t find any scenario where a 1:1 porting would deliver a satisfactory result.</p>
<h3>Conclusion</h3>
<p>With the RCP Framework, you can build an application based on a specified set of business requirements. Pure web applications continue to be first choice for specific requirements.</p>
<h3>Download</h3>
<p><a title="Poster Download" href="http://www.richclient2.eu/eclipse-summit/">Download-Site for the poster in high resolution</a>
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.richclient2.eu/2007_10_18/web-vs-smart-client-%e2%80%93-how-to-sell-eclipse-rcp-technology/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Extending QuickAccess - Or how to implement my own CTRL+3</title>
		<link>http://www.richclient2.eu/2007_10_15/extending-quickaccess-or-how-to-implement-my-own-ctrl3/</link>
		<comments>http://www.richclient2.eu/2007_10_15/extending-quickaccess-or-how-to-implement-my-own-ctrl3/#comments</comments>
		<pubDate>Mon, 15 Oct 2007 07:52:07 +0000</pubDate>
		<dc:creator>Tom Seidel</dc:creator>
		
	<category>Eclipse RCP</category>
	<category>SWT</category>
	<category>JFace</category>
		<guid isPermaLink="false">http://www.richclient2.eu/2007_10_15/extending-quickaccess-or-how-to-implement-my-own-ctrl3/</guid>
		<description><![CDATA[The implementation of the &#8220;Ctrl+3&#8243; popup was an undisputed  enhancement for more usability. It enables a much faster navigation through all the browsable items you may have in your Workbench. A much more interesting topic is how to adopt this widget in order to be extended, restricted and customized. This is especially usefull for [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="Ctr+3 Popup known from the SDK" id="image173" style="margin: 5px; float: left" src="http://www.richclient2.eu/wp-content/uploads/2007/10/ctrl_3_propup.png" />The implementation of the &#8220;Ctrl+3&#8243; popup was an undisputed  enhancement for more usability. It enables a much faster navigation through all the browsable items you may have in your Workbench. A much more interesting topic is how to adopt this widget in order to be extended, restricted and customized. This is especially usefull for RCP Development to hide and add elements. However, there is currently no way to customize the contents of the quick access popup.<br />
The following article provides instructions for an implementation of a fully customizable popup with the known behaviour. The content is contributed using an extra Extension-Point (no bundle-activation required).<a id="more-174"></a></p>
<h3>Usage</h3>
<p>I have implemented a small bundle with an Extension-Point definition that allows you to create a custom popup with the content other plug-ins contribute using Extension-Point. The implementation is as easy as defining a new command. Just create a new category or a new element in your plugin.xml and that&#8217;s it. Unfortunately the code for creating the popup is copied from the platform, see <a title="Eclipse Bugzilla" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=162006">Bug 162006</a> and <a title="Eclipse Bugzilla" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=204356">Bug 204356</a>.</p>
<h3>Screenshots</h3>
<div style="text-align: center"><img alt="Defined popup-content in the plugin.xml" id="image176" src="http://www.richclient2.eu/wp-content/uploads/2007/10/quickaccess_definition.png" /></div>
<div style="margin: 10px; text-align: center">Defined content in the plugin.xml</div>
<div style="text-align: center"><img alt="Result-Popup (accessible with Ctrl+4)" id="image177" src="http://www.richclient2.eu/wp-content/uploads/2007/10/quickaccess_result.png" /></div>
<div align="left" style="margin: 10px; text-align: center">Result popup (accessible with Ctrl+<strong>4</strong>)</div>
<h3>Downloads</h3>
<p><img src="http://www.richclient2.eu/wp-content/uploads/2006/07/importjar_wiz.png" /> <a id="p19" title="Download Example RCP" href="http://www.richclient2.eu/wp-content/uploads/2007/10/de.spiritlink.quickaccess_rcp.zip">Download the Example as RCP (12 Mbyte - Source included)</a><a id="p19" href="http://www.richclient2.eu/wp-content/uploads/2006/08/de.spiritlink.perspective_rcp.zip"><br />
</a><img src="http://www.richclient2.eu/wp-content/uploads/2006/07/importjar_wiz.png" /> <a id="p19" title="Download" href="http://www.richclient2.eu/wp-content/uploads/2007/10/de.spiritlink.quickaccess.zip">Download the Bundle (50 Kbyte - Source included)</a><br />
<img id="image74" alt="cvs_persp.gif" src="http://www.richclient2.eu/wp-content/uploads/2006/08/cvs_persp.gif" /> CVS-Checkout <a href="http://www.richclient2.eu/cvs/">(more info)<br />
</a></p>
<ul>
<li><img id="image74" alt="cvs_persp.gif" src="http://www.richclient2.eu/wp-content/uploads/2006/08/cvs_persp.gif" /> de.spiritlink.quickaccess</li>
<li><img id="image74" alt="cvs_persp.gif" src="http://www.richclient2.eu/wp-content/uploads/2006/08/cvs_persp.gif" /> de.spiritlink.quickaccess.rcp</li>
</ul>
]]></content:encoded>
			<wfw:commentRSS>http://www.richclient2.eu/2007_10_15/extending-quickaccess-or-how-to-implement-my-own-ctrl3/feed/</wfw:commentRSS>
		</item>
	</channel>
</rss>
