<?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>CEO Speaks</title>
	<atom:link href="http://confianzit.com/ceospeaks/feed/" rel="self" type="application/rss+xml" />
	<link>http://confianzit.com/ceospeaks</link>
	<description>Technical Articles</description>
	<lastBuildDate>Sat, 05 Sep 2009 18:15:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Mantis- Perfect Bug Tracker</title>
		<link>http://confianzit.com/ceospeaks/2009/09/05/mantis-perfect-bug-tracker/</link>
		<comments>http://confianzit.com/ceospeaks/2009/09/05/mantis-perfect-bug-tracker/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 18:15:58 +0000</pubDate>
		<dc:creator>Anoop Menon</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Web Engineering]]></category>
		<category><![CDATA[bug tracker]]></category>
		<category><![CDATA[Confianz]]></category>
		<category><![CDATA[Mantis]]></category>
		<category><![CDATA[OSS]]></category>

		<guid isPermaLink="false">http://confianzit.com/ceospeaks/?p=109</guid>
		<description><![CDATA[As described in my previous post, I am always passionate about  useful OSS applications.
Recently I had been searching for a good Bug tracking tool which is easy to learn and use. Bugzilla is something I had been used to for long. But this is a new and small company, and I want to introduce this [...]]]></description>
			<content:encoded><![CDATA[<p>As described in my previous post, I am always passionate about  useful OSS applications.</p>
<p>Recently I had been searching for a good Bug tracking tool which is easy to learn and use. Bugzilla is something I had been used to for long. But this is a new and small company, and I want to introduce this application to the Project development team, testing/reporting team , designing team while they are working on mutiple projects. Even I want to monitor all the bugs in an easy and less time consuming way. I am worried only about reopened/non assigned bugs / assigned to me etc and I want to find it easily, not sitting and searching which is time consuming.</p>
<p>I first saw Mantis when my brother in law, showed it to me. I loved the simple and easy to use GUI. I took the application for a spin for one week,  installation was a breeze.  After 2-3 days of usage, I was sure,  I will be implementing this as our official bug tracking tool.</p>
<p>So officially we have started using Mantis for all our software bug tracking needs. It was just a matter of 10-20 minutes for all the people in my office to get a hang of it.  And they all started liking it, and I spend less than an hour importing all the existing bugs data to this application. Initially I was planning to have this use projects that just received the SOW, But seeing the simplicity of Mantis, I brought in data from all projects which are running right now.</p>
<p>Try out this tool when you have time. Go to http://www.mantisbt.org/</p>
<p>I am trying out another OSS app named Vtiger CRM, another Sourceforge project. Infact thinking of adding some custom modules to it for a customer. I will write an article about it  shortly&#8230; till then bye from me..</p>
]]></content:encoded>
			<wfw:commentRss>http://confianzit.com/ceospeaks/2009/09/05/mantis-perfect-bug-tracker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My passion for Open Source Software</title>
		<link>http://confianzit.com/ceospeaks/2009/08/20/my-passion-for-oss/</link>
		<comments>http://confianzit.com/ceospeaks/2009/08/20/my-passion-for-oss/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 00:31:24 +0000</pubDate>
		<dc:creator>Anoop Menon</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Web Engineering]]></category>
		<category><![CDATA[Cloud computing]]></category>
		<category><![CDATA[eyeOS]]></category>
		<category><![CDATA[open source software]]></category>
		<category><![CDATA[sourceforge]]></category>

		<guid isPermaLink="false">http://confianzit.com/ceospeaks/?p=99</guid>
		<description><![CDATA[I have always been passionate about good open source technologies, tools etc.
It all started with some collaborated work on Gantt project, years back. later I had worked with  ZK one of the robust Development tool I have seen in sourceforge. Eclipse plugin development importantly GMF and GEF also keeps me interested.
Though I am very busy [...]]]></description>
			<content:encoded><![CDATA[<p>I have always been passionate about good open source technologies, tools etc.</p>
<p>It all started with some collaborated work on Gantt project, years back. later I had worked with  ZK one of the robust Development tool I have seen in sourceforge. Eclipse plugin development importantly GMF and GEF also keeps me interested.</p>
<p>Though I am very busy with business commitments these days, still I find some time to test or look through some cool OSS tools.  The number of applications that gets started in SF shows how much passionate people are about technology. But there is always the plain old philosophy &#8211; &#8220;Survival of the fittest&#8221;. Some projects becomes world popular some vanishes with no one to further develop.</p>
<p>Sourceforge&#8217;s idea of showcasing a project per month based on their ranking mechanism is something truly great and a big boost to the developers who are contributing  to the projects. One of the projects that seriously got me interested is Cloud Computing application &#8211; eyeOS tool. After trying it out, I am so impressed. Hats off to the team that works for this project. Surely Cloud computing is the future , critics might say data security issues.</p>
<p>Have a look at the project here and why not try it out sometime..you just need apache server with PHP enabled.. if you have xampp for windows/mac its as easy as pie.  <a href="http://www.eyeos.org/">http://www.eyeos.org </a></p>
]]></content:encoded>
			<wfw:commentRss>http://confianzit.com/ceospeaks/2009/08/20/my-passion-for-oss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plagiarism Truth or Myth</title>
		<link>http://confianzit.com/ceospeaks/2009/06/24/plagiarism-truth-or-myth/</link>
		<comments>http://confianzit.com/ceospeaks/2009/06/24/plagiarism-truth-or-myth/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 09:08:20 +0000</pubDate>
		<dc:creator>Anoop Menon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://confianzit.com/ceospeaks/?p=95</guid>
		<description><![CDATA[Wikipedia answers &#8211; &#8220;Plagiarism, as defined in the 1995 Random House Compact Unabridged Dictionary, is the &#8220;use or close imitation of the language and thoughts of another author and the representation of them as one&#8217;s own original work&#8221;.&#8221;
We all run in to an issue with Plagiarism at least once in a life time knowingly and [...]]]></description>
			<content:encoded><![CDATA[<p>Wikipedia answers &#8211; &#8220;<strong>Plagiarism</strong>, as defined in the 1995 <em>Random House Compact Unabridged Dictionary</em>, is the &#8220;use or close imitation of the language and thoughts of another author and the representation of them as one&#8217;s own original work&#8221;.&#8221;</p>
<p>We all run in to an issue with Plagiarism at least once in a life time knowingly and unknowingly.  It can be when we give the weekly assignments in school to a project report or matter content for the website. If I forget to add the quotes &#8220;..&#8221;  in the first paragraph of this blog entry well I am also in trouble- I will be using some one else s definition for Plagiarism in my own blog as if I wrote it for the first time.</p>
<p>So to keep out of trouble is  &#8211; Write your own contents if possible.  If you use someone else s ideas give them credits by clearly in writing. Use quotes &#8220;&#8230;&#8221; where ever applicable. Even when you do that make sure what you tell the masses is correct. Even if you give credits but send out wrong information say for eg: F=ma (Sir. Newton&#8217;s second law) was formulated by Sir. Thomas Alva Edison, that is also wrong. After all we want to make the online community better and more useful.</p>
<p>Lots of Plagiarism tools are available.  Check out this page:- http://www.shambles.net/pages/staff/ptools/ to find a wide array of tools.</p>
<p>Also while you take contents from a page and plan to give the credits to the original publisher, check out their terms and policies. Some of them require express written permission before being linked or copied to another page. A simple check will help you stay out of trouble.. Happy and safe blogging/Content writing.</p>
]]></content:encoded>
			<wfw:commentRss>http://confianzit.com/ceospeaks/2009/06/24/plagiarism-truth-or-myth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Iphone and Android</title>
		<link>http://confianzit.com/ceospeaks/2009/06/23/iphone-and-android/</link>
		<comments>http://confianzit.com/ceospeaks/2009/06/23/iphone-and-android/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 11:23:45 +0000</pubDate>
		<dc:creator>Anoop Menon</dc:creator>
				<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://confianzit.com/ceospeaks/?p=88</guid>
		<description><![CDATA[While I am writing this Android phones are still not available in India. A little bit of googling shows there are some guys who use Android based mobile in India. HTC is planning to hit the market some time soon I believe. This makes me wonder why it takes such a long time for a [...]]]></description>
			<content:encoded><![CDATA[<p>While I am writing this Android phones are still not available in India. A little bit of googling shows there are some guys who use Android based mobile in India. HTC is planning to hit the market some time soon I believe. This makes me wonder why it takes such a long time for a new global product to be available in India which is the largest mobile market in the world. PC hardware, it is understandable.Not all  will be willing to spend money for a new expensive graphics card in India. But I have seen people spending everything in their savings to buy a new phone and whether they need it or not they event seems not to know.</p>
<p>Iphone is available in India and personally I love it like anything. Even developing for the same is a pleasure considering the support from Apple. Even if you pay 99$ for the developer program it is worth every penny but keep in mind you adhere to the terms and conditions  so that your apps wont be blacklisted from the apps store. I have seen many posts in the past where people complaining about their application being blacklisted or it was not a good decision so I am moving in to Android etc. But we need to understand the fact that in Business everyone need to stay. An application that allows an Iphone to make skype/vonage calls via WIFI will harm the mobile operator for sure. Some how Apple has control over these things while they have released the SDK to public.  In my whole hearted opinion,  it is Good.  Some of the Iphone developers/ users wont agree but the quality of the apps are not compromised since Apple has control over these things.</p>
<p>I am a great admirer of Linux and some what crazy about it right from school days. Today we have thousands of different flavors of Linux. When I heard about a common Linux platform based mobile phones I was so thrilled. I looked in to the Android stuff for past 3 months which made me understand the difference between developing for an open source based system and I phone which has still strings tied by Apple. Definitely I phone development is better.</p>
<p>For Apple with the way I phone sales are sky rocketing which will increase again with I phone 3 the near future seems good.When you develop an application for an I phone you are addressing a market of 3.9+ million.</p>
<p>For Android(G phone) &#8211; sticking with a single Mobile carrier will harm.. it needs to be open to more carriers and more geographical areas. The future will be too good for G phone, if they are ready to listen to what the users want. And some control on what is right and what is not while developing..Will Google do something like that to keep quality in check? or Is it the Mobile carriers who are reluctant seeing an open source platform where anyone can program stuffs which can be potentially bad for them? There is a recent buzz that recession hasn&#8217;t affected two fields &#8211; Telecoms and pro$ <img src='http://confianzit.com/ceospeaks/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />   So we need to wait and see what all the changes coming ahead in Telecoms.</p>
<p>I hope to see some comments for this.</p>
]]></content:encoded>
			<wfw:commentRss>http://confianzit.com/ceospeaks/2009/06/23/iphone-and-android/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Jquery vs Prototype</title>
		<link>http://confianzit.com/ceospeaks/2009/06/15/jquery-vs-prototype/</link>
		<comments>http://confianzit.com/ceospeaks/2009/06/15/jquery-vs-prototype/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 21:28:52 +0000</pubDate>
		<dc:creator>Anoop Menon</dc:creator>
				<category><![CDATA[Web Engineering]]></category>

		<guid isPermaLink="false">http://confianzit.com/ceospeaks/?p=82</guid>
		<description><![CDATA[Since our company had been more in to web development these days,  I was playing out the differences between Jquery and Prototype. To be very frank,  I was a die hard fan of Prototype once it was shown by one of my Developers in 2008. We all knew Jquery is there, we have used light [...]]]></description>
			<content:encoded><![CDATA[<p>Since our company had been more in to web development these days,  I was playing out the differences between Jquery and Prototype. To be very frank,  I was a die hard fan of Prototype once it was shown by one of my Developers in 2008. We all knew Jquery is there, we have used light boxes for some of our projects, but still Prototype was our favourite may be because we were well versed in that.</p>
<p>Two months back one of my key clients,  called me and asked me to change everything in the current ongoing project from prototype to Jquery. I was little shocked at the first moment because the application is already huge, Thousands if not hundreds of lines of code are written with Ajax every where. Now we need to change everything. My development team stood up and started the conversion learning the new technology in detail.</p>
<p>But I was thinking why such a requirement came up. I did some internet research and the client itself came up with some links showing why such a need was crucial.</p>
<p>See <a href="http://mootools.net/slickspeed/" target="_blank">http://mootools.net/slickspeed/</a></p>
<p>Jquery is much ligther and faster compared to prototype. I agree these tests are not completely agreeable but still results are more favoring Jquery&#8230;</p>
<p>Keep a watch on Dojo while you run those tests.. its going to surprise you for sure&#8230;</p>
<p>Anoop Menon</p>
]]></content:encoded>
			<wfw:commentRss>http://confianzit.com/ceospeaks/2009/06/15/jquery-vs-prototype/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Print all GMF diagrams with a single click</title>
		<link>http://confianzit.com/ceospeaks/2008/07/27/print-all-gmf-diagrams-with-a-single-click/</link>
		<comments>http://confianzit.com/ceospeaks/2008/07/27/print-all-gmf-diagrams-with-a-single-click/#comments</comments>
		<pubDate>Sun, 27 Jul 2008 13:22:29 +0000</pubDate>
		<dc:creator>Anoop Menon</dc:creator>
				<category><![CDATA[Eclipse Plugin Development]]></category>

		<guid isPermaLink="false">http://cyberpen.wordpress.com/?p=69</guid>
		<description><![CDATA[
Print all GMF diagrams with a single click
We know that GMF gives only three types of Print Options for the Print Range.
a. Current Diagram
b. All diagrams from open models
c. Selected diagrams.
Suppose consider your projects contain a large number of diagrams and you wish to Print all the diagrams. What are the options left? You need [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 	 	 --></p>
<p><span style="text-decoration:underline;"><strong>Print all GMF diagrams with a single click</strong></span></p>
<p>We know that GMF gives only three types of Print Options for the Print Range.</p>
<p>a. Current Diagram</p>
<p>b. All diagrams from open models</p>
<p>c. Selected diagrams.</p>
<p>Suppose consider your projects contain a large number of diagrams and you wish to Print all the diagrams. What are the options left? You need to open up each of the diagram and click print. This is a hard task when you have a large number of diagrams. I have found a better way by automating it.</p>
<p>Please note that there will be a lot of methods to accomplish this. This is one method I am going to detail. Since GMF doesn&#8217;t allow us to do this directly I am customizing four GMF internal classes. The classes we need to customize are</p>
<p><strong>DiagramWithPrintGlobalActionHandlerProvider</strong> class</p>
<p><strong>DiagramWithPrintGlobalActionHandler</strong> class</p>
<p><strong>EnhancedPrintActionHelper</strong> class</p>
<p><strong>DiagramPrinterUtil</strong> class</p>
<p><strong>DiagramWithPrintGlobalActionHandlerProvider</strong> is the class that provides GlobalActionHandlerProvider for print functionality. This will be defined in our plugin&#8217;s plugin.xml</p>
<p>Before we start we need to make these four classes as custom ones. I am doing this because we cannot edit the source code of dependent plugins. If we have attached source for these classes in out target platform definition we can view the code while debugging but We cannot the edit the code for our own customization.</p>
<p>As the first step create four new classes in a package of your choice with names</p>
<p><strong>CustomDiagramWithPrintGlobalActionHandlerProvider.java </strong></p>
<p><strong>CustomDiagramWithPrintGlobalActionHandler.java </strong></p>
<p><strong>CustomEnhancedPrintActionHelper.java </strong></p>
<p><strong>CustomDiagramPrinterUtil.java</strong></p>
<p>Copy the original code itself in to these classes from its respective original counterparts. Once done that open up your plugin&#8217;s plugin.xml and change the <strong>GlobalActionHandlerProvider</strong> definition to as shown below.</p>
<p>&lt;extension point=&#8221;org.eclipse.gmf.runtime.common.ui.services.action.globalActionHandlerProviders&#8221;&gt;</p>
<p align="left">&lt;GlobalActionHandlerProvider</p>
<p align="left">class=&#8221;<strong>mypackage.printing.CustomDiagramWithPrintGlobalActionHandlerProvider</strong>&#8220;</p>
<p align="left">id=&#8221;mydomainPresentationPrint&#8221;&gt;</p>
<p align="left">&lt;Priority name=&#8221;High&#8221;/&gt;</p>
<p align="left">&lt;ViewId id=&#8221;mypackage.CustomDiagramEditorID&#8221;&gt;</p>
<p align="left">&lt;ElementType class=&#8221;org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart&#8221;&gt;</p>
<p align="left">&lt;GlobalActionId actionId=&#8221;print&#8221;/&gt;</p>
<p align="left">&lt;/ElementType&gt;</p>
<p align="left">&lt;/ViewId&gt;</p>
<p align="left">&lt;/GlobalActionHandlerProvider&gt;</p>
<p align="left">&lt;/extension&gt;</p>
<p>Once you are done with this, start your application using the Run configuration. Yep, We haven&#8217;t changed anything in our custom classes, but We want to make sure it works in the default way. If this works fine we can make sure that the print mechanism is actually referencing our custom classes instead of the GMF internal classes. Still having doubts?  put some break points  in the code and see whether our class is called while running in eclipse DEBUG mode.</p>
<p>Make sure this works fine. ie. The print options given above should work the same way as it existed because we have copied the original code itself to our custom classes.</p>
<p>So whats our ultimate AIM?  We want to automate the printing of all diagrams with a single click. For that we need to make a lot of changes in code for these 4 classes that we have just made.</p>
<p>Step 1: Open up <strong>CustomDiagramWithPrintGlobalActionHandlerProvider.java</strong> and make changes shown below.</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;</p>
<p><strong>if</strong> (!getHandlerList().containsKey(context.getActivePart())) {</p>
<p align="left">getHandlerList().put(context.getActivePart(),</p>
<p align="left"><strong>new</strong> <strong>CustomDiagramWithPrintGlobalActionHandler()</strong>);</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;</p>
<p align="left"><strong>return</strong> (<strong>CustomDiagramWithPrintGlobalActionHandler</strong>) getHandlerList().get(context.getActivePart());</p>
<p align="left">&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;</p>
<p align="left">Step 2:Open up <strong>CustomDiagramWithPrintGlobalActionHandler </strong>and make changes as shown below.</p>
<p align="left"><strong>protected</strong> <strong>void</strong> doPrint(IGlobalActionContext cntxt) {</p>
<p align="left">IPrintActionHelper helper = <strong>new </strong><strong>CustomEnhancedPrintActionHelper()</strong>;</p>
<p align="left">helper.doPrint(cntxt.getActivePart());</p>
<p align="left">}</p>
<p align="left">
<p align="left">&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;</p>
<p align="left">
<p align="left">Step 3:open up <strong>CustomDiagramPrinterUtil.java</strong></p>
<p align="left">
<p align="left">This is the class we are going to do a lot of coding to attain our goal.</p>
<p>What we are going to do is</p>
<p>#1.Get all the diagram files from the Workspace using our diagram file&#8217;s extension as an Array list.</p>
<p>#2.Ina loop we Will Open a diagram,Print the Diagram and Close the diagram. This loop will iterate for n times where, n is the size of the array list described in #1.</p>
<p><span style="text-decoration:underline;"><strong>#1.I find all the diagram files present in my workspace using my diagram&#8217;s extension.</strong></span></p>
<p><strong>private</strong> <strong>static</strong> Collection getWorkspaceFiles(String extension)</p>
<p align="left">{</p>
<p align="left">ArrayList files = <strong>new</strong> ArrayList();</p>
<p align="left">
<p align="left">IWorkspaceRoot root = ResourcesPlugin.<em>getWorkspace</em>().getRoot();</p>
<p align="left">
<p align="left">
<p align="left">IProject[] projects = root.getProjects();</p>
<p align="left">
<p align="left">
<p align="left"><strong>for</strong> (<strong>int</strong> i=0;i&lt;projects.length;i++)</p>
<p align="left">{</p>
<p align="left"><strong>try</strong> {</p>
<p align="left">IResource[] resources = projects[i].members();</p>
<p align="left"><strong>for</strong> (<strong>int</strong> j=0;j&lt;resources.length;j++)</p>
<p align="left">{</p>
<p align="left"><em>getChildren</em>(resources[j], files, extension);</p>
<p align="left">}</p>
<p align="left">}</p>
<p align="left"><strong>catch</strong> (CoreException ex)</p>
<p align="left">{/*ignore*/}</p>
<p align="left">}</p>
<p align="left"><strong>return</strong> files;</p>
<p align="left">}</p>
<p align="left">
<p align="left"><strong>private</strong> <strong>static</strong> <strong>void</strong> getChildren(IResource res, ArrayList files, String extension)</p>
<p align="left">{</p>
<p align="left"><strong>if</strong> (res <strong>instanceof</strong> IFile)</p>
<p align="left">{</p>
<p align="left"><strong>if</strong> (extension == <strong>null</strong> ||( res.getFileExtension()!=<strong>null</strong> &amp;&amp; res.getFileExtension().endsWith(extension) ))</p>
<p align="left">files.add(res.getFullPath().toString());</p>
<p align="left">}</p>
<p align="left"><strong>if</strong> (res <strong>instanceof</strong> IFolder)</p>
<p align="left">{</p>
<p align="left"><strong>try</strong> {</p>
<p align="left">IResource[] resources = ((IFolder)res).members();</p>
<p align="left"><strong>for</strong> (<strong>int</strong> j=0;j&lt;resources.length;j++)</p>
<p align="left">{</p>
<p align="left"><em>getChildren</em>(resources[j], files, extension);</p>
<p align="left">}</p>
<p align="left">}</p>
<p align="left"><strong>catch</strong> (CoreException ex)</p>
<p align="left">{}</p>
<p align="left">}</p>
<p align="left">}</p>
<p><span style="text-decoration:underline;"><strong>#2.Ina loop we Will Open a diagram,Print the Diagram and Close the diagram.</strong></span></p>
<p>For anyone there will be a doubt where to put this loop and call the function calls. In my case I put this inside the code block that gets called when we select &#8220;All diagrams from open models&#8221;  in the print dialog.</p>
<p>&#8230;&#8230;&#8230;&#8230;&#8230;.</p>
<p><strong>else</strong> <strong>if</strong> (helper.getDlgDiagramPrintRangeAll()) {</p>
<p align="left">flag=1;</p>
<p align="left">
<p align="left">ArrayList files = (ArrayList)<em>getWorkspaceFiles</em>(&#8221;mydomain_diagram&#8221;);</p>
<p align="left">System.<em>out</em>.println(&#8221;Number of diagrams to be printed is&#8221;+files.size());</p>
<p align="left"><strong>for</strong>(<strong>int</strong> i=0;i&lt;files.size();i++){</p>
<p align="left">System.<em>out</em>.println(&#8221;Diagram opened is&#8221;+files.get(i));</p>
<p align="left"><em>openDiagram</em>(files.get(i).toString());</p>
<p align="left"><em>PrintDiagram</em>(diagramPrinter,helper);</p>
<p align="left"><em>closeDiagram</em>();</p>
<p align="left">
<p align="left">}</p>
<p>&#8230;&#8230;&#8230;&#8230;</p>
<p>And the Functions for Opening and Printing and Closing are as follows:</p>
<p>//Method for Opening the Diagram</p>
<p><strong>private</strong> <strong>static</strong> <strong>void</strong> openDiagram(String DiagramName){</p>
<p align="left">
<p align="left">
<p align="left">URI diagramModelFilename = URI.<em>createURI</em>(DiagramName);</p>
<p align="left">GMFResource myGMFDiagram = <strong>new</strong> GMFResource(diagramModelFilename);</p>
<p align="left"><strong>try</strong> {</p>
<p align="left">myGMFDiagram.load(Collections.<em>EMPTY_MAP</em>);</p>
<p align="left"><strong>myDomainDiagramEditorUtil</strong>.<em>openDiagram</em>(myGMFDiagram);</p>
<p align="left">} <strong>catch</strong> (IOException e1) {</p>
<p align="left">e1.printStackTrace();</p>
<p align="left">} <strong>catch</strong> (PartInitException e) {</p>
<p align="left">System.<em>out</em>.println(&#8221;Error opening diagram editor&#8221;+e.getStatus());</p>
<p align="left">}</p>
<p align="left">}</p>
<p>&#8230;&#8230;..</p>
<p>//Method for Printing the Diagram</p>
<p>&#8230;&#8230;..</p>
<p><strong>private</strong> <strong>static</strong> <strong>void</strong> PrintDiagram(DiagramPrinter diagramPrinter,IPrintHelper helper){</p>
<p align="left">
<p align="left">DiagramEditor dEditor = <strong>null</strong>;</p>
<p align="left">List diagramEditors = EditorService.<em>getInstance</em>().getRegisteredEditorParts();</p>
<p align="left">Iterator it = diagramEditors.iterator();</p>
<p align="left"><strong>while</strong> (it.hasNext()) {</p>
<p align="left">
<p align="left">Object obje = it.next();</p>
<p align="left"><strong>if</strong> (obje <strong>instanceof</strong> DiagramEditor) { //DiagramDocumentEditor</p>
<p align="left">dEditor = (DiagramEditor) obje;</p>
<p align="left">}</p>
<p align="left">}</p>
<p align="left">diagramPrinter.setDiagrams(Collections.<em>singletonList</em>(dEditor.getDiagram()));</p>
<p align="left"><em>printDiagrams</em>(diagramPrinter, helper);</p>
<p align="left">System.<em>out</em>.println(&#8221;File Printed&#8221;);</p>
<p align="left">
<p align="left">}</p>
<p align="left">
<p align="left">&#8230;&#8230;..</p>
<p align="left">
<p align="left">//Method for Closing the Diagram</p>
<p align="left">
<p align="left">&#8230;&#8230;..</p>
<p align="left"><strong>private</strong> <strong>static</strong> <strong>void</strong> closeDiagram(){</p>
<p align="left">
<p align="left">IWorkbench workbench = PlatformUI.<em>getWorkbench</em>();</p>
<p align="left"><strong>if</strong> (workbench != <strong>null</strong>) {</p>
<p align="left">
<p align="left"><strong>if</strong> (workbench.getWorkbenchWindows() != <strong>null</strong></p>
<p align="left">&amp;&amp;workbench.getWorkbenchWindows()[0].getActivePage() != <strong>null</strong>) {</p>
<p align="left">IWorkbenchPage page = workbench.getWorkbenchWindows()[0].getActivePage();</p>
<p align="left"><strong>if</strong> (page != <strong>null</strong>&amp;&amp; page.getEditorReferences().length &gt; 0) {</p>
<p align="left">ArrayList&lt;Resource&gt; resource = <strong>new</strong> ArrayList&lt;Resource&gt;();</p>
<p align="left"><strong>for</strong> (IEditorReference editorReference : page.getEditorReferences()) {</p>
<p align="left">
<p align="left">TransactionalEditingDomain editingDomain = ((SgmoduleDiagramEditor) editorReference</p>
<p align="left">.getPart(<strong>false</strong>))</p>
<p align="left">.getEditingDomain();</p>
<p align="left"><strong>if</strong> (editingDomain != <strong>null</strong>) {</p>
<p align="left">ResourceSet resourceSet = editingDomain</p>
<p align="left">.getResourceSet();</p>
<p align="left"><strong>for</strong> (Resource element : resourceSet</p>
<p align="left">.getResources()) {</p>
<p align="left">resource.add(element);</p>
<p align="left">}</p>
<p align="left"><strong>for</strong> (Resource element : resource) {</p>
<p align="left">
<p align="left">resourceSet.getResources()</p>
<p align="left">.remove(element);</p>
<p align="left">}</p>
<p align="left">}</p>
<p align="left">((SgmoduleDiagramEditor) editorReference</p>
<p align="left">.getPart(<strong>false</strong>)).close(<strong>false</strong>);</p>
<p align="left">
<p align="left">}</p>
<p align="left">
<p align="left">}</p>
<p align="left">
<p align="left">}</p>
<p align="left">}</p>
<p align="left">
<p align="left">System.<em>out</em>.println(&#8221;Diagram closed&#8221;);</p>
<p align="left">}</p>
<p align="left">
<p align="left">
<p align="left">This works perfectly for me. But When you have lots of diagrams to be printed in a single stretch, make sure You allot more memory for your application else it may throw a java heap memory exception.</p>
<p align="left">
<p align="left">Hope this helps some one. Queries/Suggestions Welcome</p>
<p align="left">
<p align="left">Anoop Menon</p>
]]></content:encoded>
			<wfw:commentRss>http://confianzit.com/ceospeaks/2008/07/27/print-all-gmf-diagrams-with-a-single-click/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Workspace Launcher for your RCP application</title>
		<link>http://confianzit.com/ceospeaks/2008/06/27/workspace-launcher-for-your-rcp-application/</link>
		<comments>http://confianzit.com/ceospeaks/2008/06/27/workspace-launcher-for-your-rcp-application/#comments</comments>
		<pubDate>Fri, 27 Jun 2008 10:25:43 +0000</pubDate>
		<dc:creator>Anoop Menon</dc:creator>
				<category><![CDATA[Rich Client Platform]]></category>

		<guid isPermaLink="false">http://cyberpen.wordpress.com/?p=52</guid>
		<description><![CDATA[There seems to be a number of features that eclipse has that we need to make available in our RCP application. One such feature that many like to have in their RCP application is the eclipse&#8217;s default workspace launcher.This mainly applies to those RCP applications that has a project stuff nature. One point or other [...]]]></description>
			<content:encoded><![CDATA[<p>There seems to be a number of features that eclipse has that we need to make available in our RCP application. One such feature that many like to have in their RCP application is the eclipse&#8217;s default workspace launcher.This mainly applies to those RCP applications that has a project stuff nature. One point or other I also wanted the same mechanism to work in my rcp application. After all if eclipse can do that..my application should also do that. So i started exploring the eclipse code. What I could find was most of these goodies are present inside org.eclipse.ui.ide.application plugin which I dont need in my rcp application.</p>
<p>But there is an alternative. I can copy the interesting functions from the &#8216;IDEApplication.java&#8217; to my RCP application&#8217;s &#8216;Application.java&#8217;. And the results &#8220;BINGO&#8221; I got what I need.</p>
<p>You can find the full source to my Application.java from <a href="http://cyberpen.files.wordpress.com/2008/06/application.doc" target="_blank">here</a>. Please back up ur existing Application.java file as it will be easy to revert changes if anything goes wrong.</p>
<p>Hope this helps some one. Please leave comments/Suggestions/Queries</p>
<p>HTH,</p>
<p>Anoop Menon</p>
]]></content:encoded>
			<wfw:commentRss>http://confianzit.com/ceospeaks/2008/06/27/workspace-launcher-for-your-rcp-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What more to ask for&#8230;</title>
		<link>http://confianzit.com/ceospeaks/2008/06/27/what-more-to-ask-for/</link>
		<comments>http://confianzit.com/ceospeaks/2008/06/27/what-more-to-ask-for/#comments</comments>
		<pubDate>Fri, 27 Jun 2008 10:03:08 +0000</pubDate>
		<dc:creator>Anoop Menon</dc:creator>
				<category><![CDATA[Web Engineering]]></category>

		<guid isPermaLink="false">http://cyberpen.wordpress.com/?p=48</guid>
		<description><![CDATA[Last week was too good.  Eclipse Ganymede  and zk 3.0.6 released.  What more you can ask for in a single week??
Get the latest Eclipse from  here
Get the latest ZK from  here 
I will come up with a good review after playing out with the new release of zk. Happy to know that firefox3 is supported.  [...]]]></description>
			<content:encoded><![CDATA[<p>Last week was too good.  Eclipse Ganymede  and zk 3.0.6 released.  What more you can ask for in a single week??</p>
<p>Get the latest Eclipse from  <a href="http://www.eclipse.org/downloads/" target="_blank">here</a></p>
<p>Get the latest ZK from  <a href="http://www.zkoss.org/release/rn-3.0.6.dsp" target="_blank">here </a></p>
<p>I will come up with a good review after playing out with the new release of zk. Happy to know that firefox3 is supported.  Right now I am a bit busy with my RCP application.</p>
<p>Anoop Menon</p>
]]></content:encoded>
			<wfw:commentRss>http://confianzit.com/ceospeaks/2008/06/27/what-more-to-ask-for/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Want Rich/Stunning Web Applications? ZK is right for you !</title>
		<link>http://confianzit.com/ceospeaks/2008/06/18/want-richstunning-web-applications-zk-is-right-for-you/</link>
		<comments>http://confianzit.com/ceospeaks/2008/06/18/want-richstunning-web-applications-zk-is-right-for-you/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 17:14:51 +0000</pubDate>
		<dc:creator>Anoop Menon</dc:creator>
				<category><![CDATA[Web Engineering]]></category>

		<guid isPermaLink="false">http://cyberpen.wordpress.com/?p=38</guid>
		<description><![CDATA[The first thing that came to my mind when ever I heard “Web Application”  was JSP on front-end. May be I was too used to it or May be too comfortable with it. During that time I had to learn ZK for a project and  the result is “I am totally smitten by [...]]]></description>
			<content:encoded><![CDATA[<p style="margin-bottom:0;"><span style="font-size:x-small;">The first thing that came to my mind when ever I heard “Web Application”  was JSP on front-end. May be I was too used to it or May be too comfortable with it. During that time I had to learn ZK for a project and  the result is “<strong>I am totally smitten by it</strong>”. The rich GUI experience and easiness of coding really made me blind. This is not a starter tutorial for ZK. The ones provided in their website are too good. I am here to write about some of the note worthy aspects of  ZK  and some code snippets I believe would be useful for some one. I am still a newbie, So feel free to correct me or add in some valuable comments/Suggestions.</span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="font-size:x-small;">What ZK is?</span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">“<span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">ZK is an event-driven, component-based framework to enable rich user interfaces for Web</span></span></p>
<p style="margin-bottom:0;" align="left"><span style="font-size:x-small;"><span style="font-family:Verdana,sans-serif;">applications. ”-Definition from the creators itself.</span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"><span style="text-decoration:underline;"><strong>Some stunning Features of ZK</strong></span></span></span></p>
<p style="margin-bottom:0;">
<ul>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"><strong>* 	Rich GUI Experience</strong></span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"><strong>* 	Ability to Differentiate the Business Logic From Implementation</strong></span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"><strong>* 	Server Push Technology</strong></span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"><strong>* 	Internationalization</strong></span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
</ul>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"><span style="text-decoration:underline;"><strong>Rich GUI Experience</strong></span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"> Everyone wants a rich GUI experience in their web applications. But the very need shouldn&#8217;t compromise the speed. Putting it in another way, the page should load fast. ZK includes an AJAX-based event-driven engine, a rich set of XUL and XHTML components and a markup language called ZUML (ZK User Interface Markup Language) which is not only easy to use, but also delivers a high quality GUI experience with out compromising speed.</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"> One of the key aspect of ZK driven projects are the responsiveness of the application. At times you will scratch your head thinking whether its a desktop application!</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"><span style="text-decoration:underline;"><strong>Ability to Differentiate the Business Logic From Implementation</strong></span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"> This one of the most important feature of ZK. It is easy to isolate the business logic  completely from the User Interface. I can explain this with a simple example. I am using ZK to create a login screen which accepts user name &amp; password from the user for authentication. First let me show you the real code and then explain how it works.</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">************************************Code**************************************</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"><span style="text-decoration:underline;">Login.zul </span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;div align=&#8221;center&#8221;&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;window id=&#8221;login&#8221; Title=&#8221;Login page&#8221; border=&#8221;normal&#8221; </span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">width=&#8221;400px&#8221; mode=&#8221;modal&#8221; </span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">use=&#8221;cyberpen.web.LoginWindow&#8221;&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;label id=&#8221;errLabel&#8221; style=&#8221;color: red&#8221;/&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;grid&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;rows&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;row&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;div align=&#8221;right&#8221;&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;label value=&#8221;User Name :&#8221;/&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;/div&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;div align=&#8221;center&#8221;&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;textbox id=&#8221;username&#8221; constraint=&#8221;no empty&#8221;/&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;/div&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;/row&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;row&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"> &lt;div align=&#8221;right&#8221;&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;label value=&#8221;Password :&#8221;/&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;/div&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;div align=&#8221;center&#8221;&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;textbox id=&#8221;password&#8221; type=&#8221;password&#8221; constraint=&#8221;no empty&#8221;/&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;/div&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;/row&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;row spans=&#8221;2&#8243; align=&#8221;center&#8221;&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;button label=&#8221;Login&#8221; onClick=&#8221;login.onLogin()&#8221;/&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;/row&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;/rows&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;/grid&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;/window&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;/div&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"><span style="text-decoration:underline;"><strong>LoginWindow.java</strong></span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">package cyberpen.web;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">import org.zkoss.zul.Textbox;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">import org.zkoss.zul.Window;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">public class LoginWindow extends Window  {</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"> /**</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"> * </span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"> */</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"> private static final long serialVersionUID = 8477939400437670121L;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"> </span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"> public void onLogin(){</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"> String User_Name = ((Textbox) getFellow(&#8221;username&#8221;)).getValue();</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"> String PassWord= ((Textbox) getFellow(&#8221;password&#8221;)).getValue();</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"> </span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"> }</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">}</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">********************************End Of Code************************************</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">Lets see how this works. In the Login.zul file every distinct component has got a unique id. Please note that the id&#8217;s must be unique, if two components have the same id, ZK will throw an error during compilation.</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;row&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;div align=&#8221;right&#8221;&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;label value=&#8221;User Name :&#8221;/&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;/div&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;div align=&#8221;center&#8221;&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-size:x-small;"><span style="font-family:Verdana,sans-serif;">&lt;textbox id=&#8221;</span><span style="color:#ff0000;"><span style="font-family:Verdana,sans-serif;"><strong>username</strong></span></span><span style="font-family:Verdana,sans-serif;">&#8221; constraint=&#8221;no empty&#8221;/&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;/div&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;/row&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-size:x-small;"><span style="font-family:Verdana,sans-serif;">As you can see the unique id for the textbox that takes the value of UserName is &#8220;</span><span style="color:#ff0000;"><span style="font-family:Verdana,sans-serif;"><strong>username</strong></span></span><span style="font-family:Verdana,sans-serif;">&#8221; . And We are getting this value directly in our java program. How is this possible ?</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-size:x-small;"><span style="font-family:Verdana,sans-serif;">We have explicitly given in the Login.zul file that it should use the class “</span><span style="color:#ff0000;"><span style="font-family:Verdana,sans-serif;"><strong>cyberpen.web.LoginWindow</strong></span></span><span style="font-family:Verdana,sans-serif;">”</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;window id=&#8221;login&#8221; Title=&#8221;Login page&#8221; border=&#8221;normal&#8221; </span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">width=&#8221;400px&#8221; mode=&#8221;modal&#8221; </span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-size:x-small;"><span style="font-family:Verdana,sans-serif;">use=&#8221;</span><span style="color:#ff0000;"><span style="font-family:Verdana,sans-serif;">cyberpen.web.LoginWindow</span></span><span style="font-family:Verdana,sans-serif;">&#8220;&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&#8230;&#8230;.</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;/window&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">Please note that full path to the location should be explicitly given. </span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">Now how are we reading the value from textbox? </span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">You can see that the Login Button onClick is mapped to the function “login.onLogin()”</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">&lt;button label=&#8221;Login&#8221; onClick=&#8221;login.onLogin()&#8221;/&gt;</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-size:x-small;"><span style="font-family:Verdana,sans-serif;">Please note “login” is the unique id of the window component of our zul page which is asked to use the class “</span><span style="color:#ff0000;"><span style="font-family:Verdana,sans-serif;"><strong>cyberpen.web.LoginWindow</strong></span></span><span style="font-family:Verdana,sans-serif;">” and </span><span style="font-family:Verdana,sans-serif;"><strong>OnLogin()</strong></span><span style="font-family:Verdana,sans-serif;"> is the  method defined inside this class. </span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">Now we use ZK&#8217;s getFellow() method to read the value of username and password and store it in seperate variables.</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">String userName = ((Textbox) getFellow(&#8221;username&#8221;)).getValue();</span></span></p>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">String passWord= ((Textbox) getFellow(&#8221;password&#8221;)).getValue();</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">where “username” &amp; “password” are the unique id&#8217;s of the textboxes for UserName and Password respectively.</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">So whats the exact point?</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">You can give the zul page to a web designer and ask him to decorate it while the underlying logic remains the same. Web designer need not know java or worry about any underlying stuff. Put it in converse, if you want to change the underlying business logic you don&#8217;t need to change anything in the front end.</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">This is worry free compared to having a long jsp file with lots of java scripts, and control flowing back and forth. It will be harder to make it and more harder to redesign later.</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"><span style="text-decoration:underline;"><strong>Server Push Technology</strong></span></span></span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"><span style="font-size:x-small;">Server push  means to put content from the server to the client actively. See  <a href="http://www.zkoss.org/smalltalks/serverpush/">http://www.zkoss.org/smalltalks/serverpush/</a> for more details. </span></span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">Is it worth Learning?</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">I would say “YES” . At the end of the day, the question is “Did you make something simpler and easy to use” <img src='http://confianzit.com/ceospeaks/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">ZK is a sourceforge project that is growing better day by day. See : http://www.zkoss.org/</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;"><span style="text-decoration:underline;"><strong>Some Improvements required for ZK</strong></span></span></span></p>
<p style="margin-bottom:0;">
<ol>
<li>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">The 	components needs to appear the same across different browsers. There 	are lots of hot fixes for some of the known issues please look 	through the ZK forum. But still there are some problems that I 	experienced while working on it, especially Mozilla Firefox failing 	to understand the height=”100%” , width=”100%” attributes.</span></span></p>
</li>
</ol>
<p style="margin-bottom:0;text-decoration:none;">
<ol>
<li>
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">Paint 	support is required which is due on the next release.</span></span></p>
</li>
</ol>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;"><span style="font-family:Verdana,sans-serif;"><span style="font-size:x-small;">Viewer comments/suggestions are welcome.</span></span></p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">HTH,</p>
<p style="margin-bottom:0;text-decoration:none;">Anoop Menon</p>
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">
<p style="margin-bottom:0;text-decoration:none;">
]]></content:encoded>
			<wfw:commentRss>http://confianzit.com/ceospeaks/2008/06/18/want-richstunning-web-applications-zk-is-right-for-you/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Convertion of an eclipse plugin to a standalone RCP application</title>
		<link>http://confianzit.com/ceospeaks/2008/06/16/convertion-of-a-plugin-to-a-standalone-rcp-application/</link>
		<comments>http://confianzit.com/ceospeaks/2008/06/16/convertion-of-a-plugin-to-a-standalone-rcp-application/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 17:14:03 +0000</pubDate>
		<dc:creator>Anoop Menon</dc:creator>
				<category><![CDATA[Rich Client Platform]]></category>

		<guid isPermaLink="false">http://cyberpen.wordpress.com/?p=5</guid>
		<description><![CDATA[

The platform-independent Eclipse RCP architecture makes rich-client applications easy to write as the business logic is organized into reusable components called plugins. In this article, We are going to convert Mylyn 2.2 Release Plugin to a standalone RCP application. I choose Mylyn because it is one of the most popular eclipse  plugin known to [...]]]></description>
			<content:encoded><![CDATA[<p style="background:#ffffff;margin-bottom:0;">
<p style="background:#ffffff;margin-bottom:0;">
<p style="background:#ffffff;margin-bottom:0;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;"><span>The platform-independent Eclipse RCP architecture makes rich-client </span></span></span><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">applications easy to write as the business logic is organized into reusable components called plugins. In this article, </span></span><span style="font-family:Times New Roman,serif;"><span style="font-size:small;"><span style="text-decoration:none;"><span>We are going to convert Mylyn 2.2 Release Plugin to a standalone RCP application. I choose Mylyn because it is one of the most popular eclipse  plugin known to all. I assume that Eclipse IDE is already installed and running. I have used Eclipse Europa 3.3.0 in this tutorial.</span></span></span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;"><span style="text-decoration:none;"><span>1.Firstly we need to get the Mylyn 2.2 Release plugin and install it in our eclipse IDE. There are two different ways to have it done. One is to install the Plugin from eclipse itself using the Software update option. The procedure is nicely illustrated <a href="http://confluence.atlassian.com/display/JIRAEXT/Mylyn" target="_blank">here</a>. </span></span></span></span><span style="font-family:Times New Roman,serif;"><span style="font-size:small;"><span style="text-decoration:none;"><span> </span></span></span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;"><span style="text-decoration:none;"><span>Second method is to install the plugin manually. For that get the Mylyn 2.2 Release archive from <a href="Uncompress it and copy the contents of p" target="_blank"></a><a href="http://www.eclipse.org/mylyn/downloads/" target="_blank">here</a> </span></span></span></span><span style="font-family:Times New Roman,serif;"><span style="font-size:small;"><span style="text-decoration:none;"><span>. Uncompress it and copy the contents of plugin directory to the eclipsebasedir/plugin and contents of features directory to the eclipsebasedir/features.</span></span></span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;"><span style="text-decoration:none;"><span>2.We need to restart the Eclipse IDE for the newly added plugins to work. For that close the eclipse IDE if it is already running and start it cleanly. We will use eclipse.exe -clean from command prompt in windows or eclipse -clean from shell prompt in Linux</span></span></span></span><span style="font-family:Times New Roman,serif;"><span style="font-size:x-small;"><span style="text-decoration:none;"><span>. </span></span></span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;"><span style="text-decoration:none;"><span>3.Now we need to Verify that the newly added mylyn plugin is working in our Eclipse IDE. Mylyn uses a perspective called “Planning”.</span></span></span></span><span style="color:#000000;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">In Eclipse, a perspective is a way to organize and view the files associated with our program. We can open the perspective f</span></span></span><span style="font-family:Times New Roman,serif;"><span style="font-size:small;"><span style="text-decoration:none;"><span>rom Window -&gt; Open Perspective -&gt; Other</span></span></span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">We will select the perspective “Planning” and continue by clicking the Ok button.</span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/b.jpg"><img class="aligncenter size-full wp-image-7" src="http://cyberpen.files.wordpress.com/2008/06/b.jpg" alt="" width="341" height="409" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">Now Eclipse has opened the “Planning” perspective for us which shows a Task List view. To verify that the plugin is working properly, we can create a new Task using the New Wizard. For that Go to File -&gt;New -&gt;Task</span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">A New Task will be opened for us and it will be listed in the Task List as shown below.</span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/c.jpg"><img class="aligncenter size-medium wp-image-10" src="http://cyberpen.files.wordpress.com/2008/06/c.jpg?w=300" alt="" width="300" height="225" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">Now we have verified that the mylyn plugin is working properly. It is time to move on to our actual goal ie. Converting this Plugin to a standalone RCP application.</span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">5.We start by creating a new Plugin project in eclipse using the New wizard. </span></span></p>
<p style="background:#ffffff;margin-bottom:0;"><span style="text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;"><span>For that go to File-&gt; New-&gt; Project</span></span></span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/j.jpg"><img class="aligncenter size-medium wp-image-11" src="http://cyberpen.files.wordpress.com/2008/06/j.jpg?w=300" alt="" width="300" height="105" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">We will select Plugin Project and continue by clicking next.</span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/1.jpg"><img class="aligncenter size-medium wp-image-12" src="http://cyberpen.files.wordpress.com/2008/06/1.jpg?w=299" alt="" width="299" height="300" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">6.We need to fill in a suitable name for our project for eg.“mylyn” and continue by clicking next.</span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/2.jpg"><img class="aligncenter size-medium wp-image-13" src="http://cyberpen.files.wordpress.com/2008/06/2.jpg?w=300" alt="" width="300" height="298" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">7.In the next Screen we will see an option “would you like to create a Rich Client Application “ with radio buttons “Yes” or “NO”. Since we are going to create a Rich Client Application enable it by selecting “Yes” and continue by clicking the Next button.</span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/3.jpg"><img class="aligncenter size-medium wp-image-14" src="http://cyberpen.files.wordpress.com/2008/06/3.jpg?w=300" alt="" width="300" height="300" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">8.Now Eclipse will show us a list of available Templates for our RCP. We will take the simplest of all “Hello RCP” template. Firstly we will enable “Create a plugin using one of the templates” by clicking the checkbox. We will select “Hello RCP” and continue by clicking Next. Please note “Hello RCP” is the simplest template available to which we add only those components that our application needs.</span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/4.jpg"><img class="aligncenter size-medium wp-image-15" src="http://cyberpen.files.wordpress.com/2008/06/4.jpg?w=298" alt="" width="298" height="300" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">9.In the next screen Eclipse will allow us to name our application. Give an appropriate name </span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">eg. “Mylyn Application”.This name comes on the title bar of our application. Give an appropriate package name too. I have used “mylyn” in this tutorial. Branding is an option provided by eclipse to brand our application. Branding includes adding splash image,custom icons etc. Enable branding as we will be branding our application in the final stage. Move on by clicking Finish.</span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/5.jpg"><img class="aligncenter size-medium wp-image-16" src="http://cyberpen.files.wordpress.com/2008/06/5.jpg?w=299" alt="" width="299" height="300" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">If you had followed with me in this tutorial, eclipse will be in “Planning perspective” and will prompt to switch to “Plugin-in Development perspective”. Please select “yes” at this prompt.</span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/g.jpg"><img class="aligncenter size-medium wp-image-17" src="http://cyberpen.files.wordpress.com/2008/06/g.jpg?w=300" alt="" width="300" height="148" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">6.Eclipse creates the Project for us and opens up the manifest file as shown below.</span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/6.jpg"><img class="aligncenter size-medium wp-image-18" src="http://cyberpen.files.wordpress.com/2008/06/6.jpg?w=300" alt="" width="300" height="225" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">7.So far we have created an RCP application using the “Hello Template” and its time to see for ourself how it looks like. We can start the application from eclipse by Clicking the “Launch an Eclipse Application” link present in the manifest file. The application pops up as shown below. This is the basic building block of our Mylyn RCP application and we will add features to it in an iterative manner. </span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/7.jpg"><img class="aligncenter size-medium wp-image-19" src="http://cyberpen.files.wordpress.com/2008/06/7.jpg?w=300" alt="" width="300" height="225" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;"><span style="text-decoration:none;"><span>8.We can notice that the application screen area is small. This is because by default the size is set to (400,300) in a method </span></span><span style="font-size:small;">preWindowOpen() inside <span style="text-decoration:none;"><span>ApplicationWorkbenchWindowAdvisor class</span></span></span><span style="text-decoration:none;"><span>.We will open up the </span></span><span style="font-size:small;"><span style="text-decoration:none;"><span>ApplicationWorkbenchWindowAdvisor .java and set it to (800,600).</span></span></span><span style="text-decoration:none;"><span> Change the setShowCoolBar value to true as we will be adding some Coolbar menus to spice up our application.</span></span></span></span></p>
<p style="background:#ffffff;margin-bottom:0;"><a href="http://cyberpen.files.wordpress.com/2008/06/8.jpg"><img class="aligncenter size-medium wp-image-20" src="http://cyberpen.files.wordpress.com/2008/06/8.jpg?w=300" alt="" width="300" height="252" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">9.Right now our application is a plain template. There are no menus or icons or Actions. Eclipse allows us to define and declare all the actions/menus that we need in our RCP application. All these are to be done in ApplicationActionBarAdvisor class. So we will open this file and define all the menus/actions/sub menus etc that we want for our entry level application programaticaly. </span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/9.jpg"><img class="aligncenter size-medium wp-image-21" src="http://cyberpen.files.wordpress.com/2008/06/9.jpg?w=298" alt="" width="298" height="300" /></a></p>
<p style="background:#ffffff;margin-bottom:0;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;"><span style="text-decoration:none;"><span>So after adding all the Actions/Menus etc we want for our Mylyn application, our ApplicationActionBarAdvisor.java looks like as shown below.</span></span></span></span><span style="font-family:Times New Roman,serif;"><span style="font-size:x-small;"><span style="text-decoration:none;"><span> </span></span></span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;">package mylyn;</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;">import org.eclipse.core.runtime.IExtension;</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;">import org.eclipse.jface.action.IContributionItem;</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;">import org.eclipse.jface.action.ICoolBarManager;</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;">&#8230;&#8230;&#8230;</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;">public class ApplicationActionBarAdvisor extends ActionBarAdvisor {</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> </span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> //Declaring all the Workbench Actions</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> private IWorkbenchAction newAction;</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> private IWorkbenchAction saveAction;</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> private IWorkbenchAction openPerspective;</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> </span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> &#8230;&#8230;&#8230;&#8230;.</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> </span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;"><span style="text-decoration:none;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span>public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) {</span></span></span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;"><span style="text-decoration:none;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span>super(configurer);</span></span></span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> protected void makeActions(IWorkbenchWindow window) {</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;"><span style="text-decoration:none;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span> </span></span></span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;"><span style="text-decoration:none;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span> //All the actions are defined here.</span></span></span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;"><span style="text-decoration:none;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span> newAction=ActionFactory.NEW.create(window);</span></span></span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;"><span style="text-decoration:none;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span> newAction.setText(&#8221;New&#8221;);</span></span></span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;"><span style="text-decoration:none;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span> register(newAction);</span></span></span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;"><span style="text-decoration:none;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span> saveAction=ActionFactory.SAVE.create(window);</span></span></span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;"><span style="text-decoration:none;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span> register(saveAction);</span></span></span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;"><span style="text-decoration:none;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span> openPerspective= 	ActionFactory.OPEN_PERSPECTIVE_DIALOG.create(window);</span></span></span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> register(openPerspective);</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> </span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> &#8230;&#8230;&#8230;&#8230;..</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;"><span style="text-decoration:none;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span>}</span></span></span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;"><span style="text-decoration:none;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span> protected void fillCoolBar(ICoolBarManager coolBar) {</span></span></span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> //Adding the Actions to the CoolBar.</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;"><span style="text-decoration:none;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span> IToolBarManager toolbar = new ToolBarManager(SWT.FLAT | SWT.RIGHT);</span></span></span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> coolBar.add(new ToolBarContributionItem(toolbar, &#8220;main&#8221;));</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> toolbar.add(newAction);</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> toolbar.add(saveAction);</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> </span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> &#8230;&#8230;&#8230;&#8230;.</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> }</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;"><span style="text-decoration:none;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span>protected void fillMenuBar(IMenuManager menuBar) {</span></span></span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;"><span style="text-decoration:none;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span> //Adding the Actions to the Menu Bar.</span></span></span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;"><span style="text-decoration:none;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span> MenuManager fileMenu = new 	MenuManager(&#8221;&amp;File&#8221;,IWorkbenchActionConstants.M_FILE);</span></span></span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> menuBar.add(fileMenu);</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> MenuManager windowMenu= new 	MenuManager(&#8221;&amp;Window&#8221;,IWorkbenchActionConstants.WINDOW_EXT);</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> menuBar.add(windowMenu);</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> &#8230;&#8230;&#8230;&#8230;.</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> </span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> fileMenu.add(newAction);</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> fileMenu.add(new 				        					      Separator(IWorkbenchActionConstants.MB_ADDITIONS));</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> fileMenu.add(new Separator());</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> fileMenu.add(saveAction);</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> windowMenu.add(openPerspective);</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> &#8230;&#8230;&#8230;&#8230;.</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> </span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"> </span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;"><span style="text-decoration:none;"> <span style="font-family:Courier New,monospace;"><span style="font-size:x-small;"><span>}</span></span></span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;"><span style="font-family:Courier New,monospace;"><span style="font-size:x-small;">}</span></span></p>
<p style="background:#ffffff none repeat scroll 0;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">10.So we have completed adding the Menus/Actions for our application and it is time to define a product Configuration for our mylyn project. A product configuration is required to brand or package our final application. Product configuration manages information about splash screens,launcher icons,about text, plugin and features list,window images etc together for our application. To create a product configuration right click the mylyn project Go to New-&gt; Product Configuration as shown below.</span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/11.jpg"><img class="aligncenter size-medium wp-image-22" src="http://cyberpen.files.wordpress.com/2008/06/11.jpg?w=300" alt="" width="300" height="221" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">11.We need to give a name for the product configuration eg.“mylyn.product” and continue by clicking finish.</span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/12.jpg"><img class="aligncenter size-medium wp-image-23" src="http://cyberpen.files.wordpress.com/2008/06/12.jpg?w=233" alt="" width="233" height="300" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">12.Eclipse will open the Product configuration file in a manifest editor for us. We can notice that eclipse has automatically selected “mylyn.application” as the application to run on launching this product. If it is not, select the same from the drop down menu.</span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/13.jpg"><img class="aligncenter size-full wp-image-24" src="http://cyberpen.files.wordpress.com/2008/06/13.jpg" alt="" width="567" height="565" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">13. So far so good. We need to check whether the application is working from our product configuration. For that click “Launch an Eclipse application” link in the product configuration file which will pop up the application. Make sure all the menus that we added in step 9 shows up but these menus wont work unless we include all the necessary Plugins. We can notice that the application comes up in (800*600) mode. </span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/14.jpg"><img class="aligncenter size-full wp-image-26" src="http://cyberpen.files.wordpress.com/2008/06/14.jpg" alt="" width="320" height="241" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">14.Now its time for us to include all the necessary mylyn Plugins and Fragments to our product configuration. We will do that by clicking the Configuration tab in the Product configuration file. We can see that all the plugins and fragments required for the basic application from template are already shown here.</span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/15.jpg"><img class="aligncenter size-full wp-image-27" src="http://cyberpen.files.wordpress.com/2008/06/15.jpg" alt="" width="565" height="589" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">15.For adding the mylyn Plugins and fragments to the product configuration, we will Click the add button which brings up a pop up list of Plugins and fragments. We need to scroll down and select only those mylyn Plugins which are required. Click the Ok button to continue. Now we need to resolve the plugin dependencies. Click “Add Required Plugins” link and eclipse will automatically add the dependencies for us. We need to save the project for the changes to take effect.</span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/16.jpg"><img class="aligncenter size-full wp-image-29" src="http://cyberpen.files.wordpress.com/2008/06/16.jpg" alt="" width="564" height="589" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">16.So far we have created a base application,defined the menus/actions, defined a product configuration, added the mylyn Plugins and fragments, resolved the dependencies. Now its time for us to check whether everything plug-in well and works well together. For that we need to get back to the “overview” Tab. We need to Click the Synchronise link. This ensures that all the changes that we have made in the product configuration and the mylyn.application synchronize with each other. We can start the application by clicking “Launch an Eclipse application” link present in product configuration.</span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/17.jpg"><img class="aligncenter size-medium wp-image-30" src="http://cyberpen.files.wordpress.com/2008/06/17.jpg?w=288" alt="" width="288" height="300" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">17.We can see that the Mylyn Application starts in a new window. We can check whether the perspective “planning”,the views,creating a new task etc work successfully following the same procedure we have done in step 3.</span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/18.jpg"><img class="aligncenter size-medium wp-image-31" src="http://cyberpen.files.wordpress.com/2008/06/18.jpg?w=300" alt="" width="300" height="225" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">18.We need to give a name for our application launcher and provide custom icons for our application. Eclipse provides a variety of tools to get it done. In the product Configuration click the “Launching Tab”. Give a Launcher name eg.“mylyn” and click save. We can provide the icon files required for branding here.(Note:-I have not done this below)</span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/19.jpg"><img class="aligncenter size-full wp-image-32" src="http://cyberpen.files.wordpress.com/2008/06/19.jpg" alt="" width="570" height="589" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">19.We want a standalone mylyn RCP application. So we will Export the application from our eclipse environment to our operating system&#8217;s directory structure. For doing this, in the product configuration file click “Eclipse Product Export wizard” which will bring up a pop up. We want the Root directory to be called “mylyn” and not the default name “eclipse”.Change the root directory name to “mylyn”,make sure the “synchronization” checkbox is checked. Browse through the directory structure to the folder to which we want to export the application and click finish to export.</span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/20.jpg"><img class="aligncenter size-full wp-image-33" src="http://cyberpen.files.wordpress.com/2008/06/20.jpg" alt="" width="490" height="495" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">20.Eclipse will export the application for us and if it is successful no errors will be thrown in the eclipse error log or problems view.</span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/21.jpg"><img class="aligncenter size-medium wp-image-34" src="http://cyberpen.files.wordpress.com/2008/06/21.jpg?w=287" alt="" width="287" height="300" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><span style="font-family:Times New Roman,serif;"><span style="font-size:small;">21.So everything done and its time for us to check out the final application. Browse through the directory structure to the folder to which we exported the application. We can start the application by clicking mylyn.exe. Make sure everything works creating a task,the views the planning perspective etc. Final application screen shot is shown below.</span></span></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/22.jpg"><img class="aligncenter size-medium wp-image-36" src="http://cyberpen.files.wordpress.com/2008/06/22.jpg?w=300" alt="" width="300" height="225" /></a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;"><a href="http://cyberpen.files.wordpress.com/2008/06/22.jpg"><br />
</a></p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">So thats it. We have successfully completed converting mylyn plugin to a standalone RCP application.</p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">Please note the full code of <a title="ApplicationActionBarAdvisor.java" href="http://cyberpen.wordpress.com/?attachment_id=37" target="_blank">ApplicationActionBarAdvisor.java </a> can be obtained from here.</p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">I hope this post would help some one.Please feel free to leave comments/Suggestions/Correct me.</p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">HTH,</p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">Anoop Menon</p>
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
<p style="background:#ffffff;margin-bottom:0;text-decoration:none;">
]]></content:encoded>
			<wfw:commentRss>http://confianzit.com/ceospeaks/2008/06/16/convertion-of-a-plugin-to-a-standalone-rcp-application/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>
