<?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>Confianz Blog</title>
	<atom:link href="http://confianzit.org/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://confianzit.org/blog</link>
	<description></description>
	<lastBuildDate>Thu, 17 Jun 2010 13:44:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Vtiger &#8211; One Of The Most Promising Open Source CRM</title>
		<link>http://confianzit.org/blog/?p=150</link>
		<comments>http://confianzit.org/blog/?p=150#comments</comments>
		<pubDate>Thu, 17 Jun 2010 13:44:38 +0000</pubDate>
		<dc:creator>anoopmenon</dc:creator>
				<category><![CDATA[Web Engineering]]></category>
		<category><![CDATA[customize vtiger]]></category>
		<category><![CDATA[open source crm]]></category>
		<category><![CDATA[Vtiger]]></category>
		<category><![CDATA[vtiger crm]]></category>

		<guid isPermaLink="false">http://confianzit.com/ceospeaks/2010/06/17/vtiger-one-of-the-most-promising-open-source-crm/</guid>
		<description><![CDATA[Any successful business requires a very good Customer Relationship Management software. The usage of&#160; such a system and the potential up to which it will be utilised depends on size of the company, business domain and of course the ability &#8230;<p class="read-more"><a href="http://confianzit.org/blog/?p=150"></a></p>]]></description>
			<content:encoded><![CDATA[<p>Any successful business requires a very good Customer Relationship Management software. The usage of&#160; such a system and the potential up to which it will be utilised depends on size of the company, business domain and of course the ability to accept a change. Lot of times I have noticed that people are reluctant to accept a change and many of them using spreadsheets, paper/pencil to keep track of customers, potential customers etc. How many times you have lost data stored that way &#8211; Lost paper slips, corrupted Spreadsheet file, Hard disk crash, Operators at your business forgetting to follow up a potential client. What ever the reasons are, you have lost valuable business and in this competitive market it means a lot. Even small mistakes can turn down good business. </p>
<p>We have reviewed and customized a lot of open source and proprietary CRMs and Vtiger is one that impressed us very much. This is one among the Open source projects that is written clean and has a fairly nice documentation. With the ease of use, fact that it is free to use and customize, a lot of the companies are switching to Vtiger. Seeing the number of projects reaching us to customize Vtiger itself shows how much popular this application is getting across the globe.</p>
<p>Main Reasons for Vtiger adoption are</p>
<p>#1. Open Source.</p>
<p>#2. Can be easily customized for any business domain.</p>
<p>#3. Proven System &#8211; No reinventing the Wheel</p>
<p>#4. Technology &#8211; Its pure PHP/Smarty/Mysql</p>
<p>#5. Cost of maintenance is less/nill.</p>
<p>&#160;</p>
<p>Watch a good screen cast demo of vtiger from here. Credits to the vtiger team for uploading the demos of different functionalities.</p>
<p>&#160;</p>
<div style="padding-bottom: 0px; padding-left: 0px; width: 425px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:33626802-e0bd-486a-b43d-4fbf75f57bb9" class="wlWriterEditableSmartContent">
<div><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/BRRPg0dwaZ8&amp;hl=en"></param><embed src="http://www.youtube.com/v/BRRPg0dwaZ8&amp;hl=en" type="application/x-shockwave-flash" width="425" height="355"></embed></object></div>
</div>
<p>&#160;</p>
<p>For trying out this wonderful OSS application please visit official <a href="http://www.vtiger.com/" target="_blank">website</a></p>
]]></content:encoded>
			<wfw:commentRss>http://confianzit.org/blog/?feed=rss2&#038;p=150</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pfsense &#8211; With out doubt a very good Software firewall</title>
		<link>http://confianzit.org/blog/?p=123</link>
		<comments>http://confianzit.org/blog/?p=123#comments</comments>
		<pubDate>Tue, 04 May 2010 20:59:00 +0000</pubDate>
		<dc:creator>anoopmenon</dc:creator>
				<category><![CDATA[Web Engineering]]></category>

		<guid isPermaLink="false">http://confianzit.com/ceospeaks/2010/05/04/pfsense-with-out-doubt-a-very-good-software-firewall/</guid>
		<description><![CDATA[&#160; I had been reviewing pfsense firewall recently. After using an outdated Watchguard firebox for long, we wanted to replace it with something reliable and easy to manage remotely. Previously our NOC team was looking at Endian for a lot &#8230;<p class="read-more"><a href="http://confianzit.org/blog/?p=123"></a></p>]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p>I had been reviewing pfsense firewall recently. After using an outdated Watchguard firebox for long, we wanted to replace it with something reliable and easy to manage remotely. Previously our NOC team was looking at Endian for a lot of customers but it ended up as a wrong choice of technology with many of the stuff not working as expected and some of the crucial features missing or not working no matter repeated attempts. </p>
<p>Installation of Pfsense is straight forward but can be a little confusing for a novice user especially assigning the WAN and LAN interfaces. But there are lots of step by step installation videos in youtube to rescue. Once you have got the web based GUI, then configuring everything is a breeze. I liked the PPTP feature which many of the s/w firewalls were missing.</p>
<p>Since we liked it a lot we are moving our internal office n/w also under pfsense which means &#8216;RIP&#8217; for the pretty old watchguard&#160; or serve me at my home.</p>
<p>Next firewall in the queue to be tested is Vyatta. No idea whether its going to be too complex but yes, more people are looking in to SW firewall appliances. Greatest flexibility is you can try the best and no need to buy expensive hardware. A simple Celeron machine is more than enough to run the firewall rather than paying huge amount of money for hardware appliances.</p>
<p>Official website: <a title="http://www.pfsense.com/" href="http://www.pfsense.com/">http://www.pfsense.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://confianzit.org/blog/?feed=rss2&#038;p=123</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CIT Hiring Policies</title>
		<link>http://confianzit.org/blog/?p=119</link>
		<comments>http://confianzit.org/blog/?p=119#comments</comments>
		<pubDate>Wed, 28 Apr 2010 02:09:29 +0000</pubDate>
		<dc:creator>anoopmenon</dc:creator>
				<category><![CDATA[CIT - General]]></category>

		<guid isPermaLink="false">http://confianzit.com/ceospeaks/2010/04/27/test/</guid>
		<description><![CDATA[&#160; This is something asked by a lot of people. what we look in a prospect/candidate for a post? Let me put forward some points here so that will be useful for some people. &#160; #1. We give importance to &#8230;<p class="read-more"><a href="http://confianzit.org/blog/?p=119"></a></p>]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p>This is something asked by a lot of people. what we look in a prospect/candidate for a post? </p>
<p>Let me put forward some points here so that will be useful for some people.</p>
<p>&#160;</p>
<p>#1. We give importance to your talent/intelligence than your marks or certifications – Take it from me, even if you have not passed your 10th grade, but if you have talent and you can prove that to us, you will be hired.</p>
<p>#2. We are a small company, hardly 2 years old but growing on a steady rate so, we want very good intelligent people who wont let us down. Commitment, never give up attitude is a must.</p>
<p>#3. Please be clear when you send CVs. Avoid typos and grammatically wrong sentences, if you need help with it consult some one good. Any company your first point of entry is through that CV and have it done well. Also mention only those Technologies that you are really good at.</p>
<p>Thanks,</p>
<p>&#160;</p>
<p>Anoop</p>
]]></content:encoded>
			<wfw:commentRss>http://confianzit.org/blog/?feed=rss2&#038;p=119</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mantis- Perfect Bug Tracker</title>
		<link>http://confianzit.org/blog/?p=109</link>
		<comments>http://confianzit.org/blog/?p=109#comments</comments>
		<pubDate>Sat, 05 Sep 2009 18:15:58 +0000</pubDate>
		<dc:creator>anoopmenon</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 &#8230;<p class="read-more"><a href="http://confianzit.org/blog/?p=109"></a></p>]]></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.org/blog/?feed=rss2&#038;p=109</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My passion for Open Source Software</title>
		<link>http://confianzit.org/blog/?p=99</link>
		<comments>http://confianzit.org/blog/?p=99#comments</comments>
		<pubDate>Fri, 21 Aug 2009 00:31:24 +0000</pubDate>
		<dc:creator>anoopmenon</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 &#8230;<p class="read-more"><a href="http://confianzit.org/blog/?p=99"></a></p>]]></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.org/blog/?feed=rss2&#038;p=99</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plagiarism Truth or Myth</title>
		<link>http://confianzit.org/blog/?p=95</link>
		<comments>http://confianzit.org/blog/?p=95#comments</comments>
		<pubDate>Wed, 24 Jun 2009 09:08:20 +0000</pubDate>
		<dc:creator>anoopmenon</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 &#8230;<p class="read-more"><a href="http://confianzit.org/blog/?p=95"></a></p>]]></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.org/blog/?feed=rss2&#038;p=95</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Iphone and Android</title>
		<link>http://confianzit.org/blog/?p=88</link>
		<comments>http://confianzit.org/blog/?p=88#comments</comments>
		<pubDate>Tue, 23 Jun 2009 11:23:45 +0000</pubDate>
		<dc:creator>anoopmenon</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 &#8230;<p class="read-more"><a href="http://confianzit.org/blog/?p=88"></a></p>]]></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.org/blog/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.org/blog/?feed=rss2&#038;p=88</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Jquery vs Prototype</title>
		<link>http://confianzit.org/blog/?p=82</link>
		<comments>http://confianzit.org/blog/?p=82#comments</comments>
		<pubDate>Mon, 15 Jun 2009 21:28:52 +0000</pubDate>
		<dc:creator>anoopmenon</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 &#8230;<p class="read-more"><a href="http://confianzit.org/blog/?p=82"></a></p>]]></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.org/blog/?feed=rss2&#038;p=82</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Print all GMF diagrams with a single click</title>
		<link>http://confianzit.org/blog/?p=69</link>
		<comments>http://confianzit.org/blog/?p=69#comments</comments>
		<pubDate>Sun, 27 Jul 2008 13:22:29 +0000</pubDate>
		<dc:creator>anoopmenon</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 &#8230;<p class="read-more"><a href="http://confianzit.org/blog/?p=69"></a></p>]]></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>(&#8220;mydomain_diagram&#8221;);</p>
<p align="left">System.<em>out</em>.println(&#8220;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(&#8220;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(&#8220;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(&#8220;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(&#8220;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.org/blog/?feed=rss2&#038;p=69</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Workspace Launcher for your RCP application</title>
		<link>http://confianzit.org/blog/?p=52</link>
		<comments>http://confianzit.org/blog/?p=52#comments</comments>
		<pubDate>Fri, 27 Jun 2008 10:25:43 +0000</pubDate>
		<dc:creator>anoopmenon</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 &#8230;<p class="read-more"><a href="http://confianzit.org/blog/?p=52"></a></p>]]></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.org/blog/?feed=rss2&#038;p=52</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

