<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Seen through my Eyes</title>
	<atom:link href="http://mattperrins.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://mattperrins.wordpress.com</link>
	<description>IBM, User Interface, Programming, Solutions, Life</description>
	<lastBuildDate>Mon, 24 Jan 2011 21:29:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='mattperrins.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Seen through my Eyes</title>
		<link>http://mattperrins.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://mattperrins.wordpress.com/osd.xml" title="Seen through my Eyes" />
	<atom:link rel='hub' href='http://mattperrins.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Its been a while</title>
		<link>http://mattperrins.wordpress.com/2010/12/26/its-been-a-while/</link>
		<comments>http://mattperrins.wordpress.com/2010/12/26/its-been-a-while/#comments</comments>
		<pubDate>Sun, 26 Dec 2010 10:11:35 +0000</pubDate>
		<dc:creator>mattperrins</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Web 2.0 JavaScript HTML5 Dojo REST XHR]]></category>

		<guid isPermaLink="false">https://mattperrins.wordpress.com/?p=41</guid>
		<description><![CDATA[A lot has been happening over the last year or so, apologies for ignoring my blog, there is two reasons for this, firstly I moved to a Mac and had real problems finding a good Blog editor, have finally settled with Blogo , secondly I have been very deep inside a very very interesting Web [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattperrins.wordpress.com&amp;blog=4231202&amp;post=41&amp;subd=mattperrins&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="clear:both;">A lot has been happening over the last year or so, apologies for ignoring my blog, there is two reasons for this, firstly I moved to a Mac and had real problems finding a good Blog editor, have finally settled with <a href="http://www.drinkbrainjuice.com/blogo" title="Link to Blogo ">Blogo</a> , secondly I have been very deep inside a very very interesting Web 2.0 project for a major UK broadcaster. They have been allowing me to implement a lot of my best practices around Web 2.0. This is resulting in a new very advanced Web application that is built in a decoupled modular fashion using Dojo and REST. </p>
<p style="clear:both;">I hope over the next few weeks to start to document some of these key best practices so that others can benefit from them. The whole experience has been hard work but the results of what is being built is going to help others that are targeting modern HTML5 based web browsers. </p>
<p style="clear:both;">The topics I am going to cover: 
<ul style="clear:both;">
<li>Business Widget design and implement</li>
<li>Model View Controller advances in use with Dojo and Web 2.0</li>
<li>Web 2.0 Session State moving from page to page</li>
<li>REST Catalogs and REST Signatures</li>
<li>Maven Builds and Shrinksafe with Dojo and Eclipse</li>
<li>Styling with CSS3</li>
</ul>
<p>I think this will keep me busy for a for weeks and help me get some of this information out of my head and into a form that will help others.</p>
<p style="clear:both;">
<p><br class="final-break" style="clear:both;" /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattperrins.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattperrins.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattperrins.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattperrins.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattperrins.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattperrins.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattperrins.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattperrins.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattperrins.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattperrins.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattperrins.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattperrins.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattperrins.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattperrins.wordpress.com/41/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattperrins.wordpress.com&amp;blog=4231202&amp;post=41&amp;subd=mattperrins&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattperrins.wordpress.com/2010/12/26/its-been-a-while/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ebc2328fd09b3009aff15332b216f9fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mattperrins</media:title>
		</media:content>
	</item>
		<item>
		<title>The 12 Patterns for User Interface Design</title>
		<link>http://mattperrins.wordpress.com/2008/12/21/the-12-patterns-for-user-interface-design/</link>
		<comments>http://mattperrins.wordpress.com/2008/12/21/the-12-patterns-for-user-interface-design/#comments</comments>
		<pubDate>Sun, 21 Dec 2008 17:59:25 +0000</pubDate>
		<dc:creator>mattperrins</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mattperrins.wordpress.com/2008/12/21/the-12-patterns-for-user-interface-design/</guid>
		<description><![CDATA[A few years ago I worked on a project where we needed to look at how to deliver true multi channel applications. It was during this work that I defined a set of User Interface Design Patterns that I believe still hold true today. The issue that was hurting this customer was it was taking [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattperrins.wordpress.com&amp;blog=4231202&amp;post=31&amp;subd=mattperrins&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A few years ago I worked on a project where we needed to look at how to deliver true multi channel applications. It was during this work that I defined a set of User Interface Design Patterns that I believe still hold true today. </p>
<p>The issue that was hurting this customer was it was taking up to 50 days from design to going into production for every screen. This was a lot of time for basically a simple <a href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete">CRUD</a> (Create, Read, Update, Delete) pattern for the User Interface. </p>
<p>For the modern enterprise applications a variety of technologies are coming into play that are reducing the amount of boiler plate code we need to write to achieve these same steps. I am currently looking at the following list of technologies for my Web 2.0 JEE stack.</p>
<p><strong><a href="http://www.dojotoolkit.org/">Dojo</a>&lt;-&gt;<a href="http://www.sitepen.com/blog/2008/06/13/restful-json-dojo-data/">JSON Rest Store</a>&lt;-&gt;<a href="http://www.json.org/">JSON</a>&lt;-&gt;<a href="http://jcp.org/en/jsr/detail?id=311">JAX-RS</a>&lt;-&gt;<a href="http://www.ibm.com/developerworks/rational/library/08/0930_stein/index.html?S_TACT=105AGX15&amp;S_CMP=LP">JPA-EJB3</a> </strong></p>
<p>To assist in the use of this approach I still keep coming back to these User Interface Design patterns . They help me to think of what the User Interface is doing and how to map it into service calls to the server. With the server now turning into a true data server and frameworks like <a href="http://www.dojotoolkit.org">Dojo</a> doing the heavy lifting for the User Interface it becomes very easy to map the asynchronous requests to these patterns.</p>
<p>Here are my initial list let me know if you can think of others.</p>
<table cellspacing="0" cellpadding="2" width="497" border="1">
<tbody>
<tr>
<td valign="top" width="132">
<p><strong>Pattern Name</strong></p>
</td>
<td valign="top" width="290"><strong>Description</strong></td>
<td valign="top" width="73"><strong>Type</strong></td>
</tr>
<tr>
<td valign="top" width="132">Display Form</td>
<td valign="top" width="290">Displays a model object as a form in a read only display</td>
<td valign="top" width="74">Form</td>
</tr>
<tr>
<td valign="top" width="132">Validating Form</td>
<td valign="top" width="290">Presents a model object as a data input form and interacts with a validation service for validation</td>
<td valign="top" width="74">Form</td>
</tr>
<tr>
<td valign="top" width="132">Update Form</td>
<td valign="top" width="290">Update form is based on the Display Form pattern but will display model data and then validate ready for it to be updated</td>
<td valign="top" width="74">Form</td>
</tr>
<tr>
<td valign="top" width="132">Validating Form Wizard</td>
<td valign="top" width="290">The Validating Form Wizard is based on the Validating Form pattern but displays a large form in the style of Paged Wizard, Tabbed Page or Individual Pages. This will depend on the channel device characteristics</td>
<td valign="top" width="74">Form</td>
</tr>
<tr>
<td valign="top" width="132">Simple List</td>
<td valign="top" width="290">This pattern will display an array of model objects in a simple single column list</td>
<td valign="top" width="74">List</td>
</tr>
<tr>
<td valign="top" width="132">Table List</td>
<td valign="top" width="290">This pattern will display and array of model objects in a multi column grid/table</td>
<td valign="top" width="74">List</td>
</tr>
<tr>
<td valign="top" width="132">List to List</td>
<td valign="top" width="290">This pattern is based on a Simple list pattern but will display two lists and allow the moving of data from one list to another and back again</td>
<td valign="top" width="74">List</td>
</tr>
<tr>
<td valign="top" width="132">Linked List</td>
<td valign="top" width="290">This pattern will link multiple list or combo controls together so when a selection on one list is made it may change the information displayed in the other linked list</td>
<td valign="top" width="74">List</td>
</tr>
<tr>
<td valign="top" width="132">Master Detail</td>
<td valign="top" width="290">This pattern will use a Simple List or Table List pattern and link it to a Display Form pattern. When a row on the lists is selected the detailed model object is presented in the display form</td>
<td valign="top" width="74">Composite</td>
</tr>
<tr>
<td valign="top" width="132">Create, Read , Update, Delete</td>
<td valign="top" width="290">This composite pattern is build from the Table List pattern and uses the Validating Form pattern for creating items, Update Form pattern for Update.</td>
<td valign="top" width="74">Composite</td>
</tr>
<tr>
<td valign="top" width="132">Search List</td>
<td valign="top" width="290">This pattern uses a Validating Form pattern linked to a Table List pattern for display of the items that have been searched for</td>
<td valign="top" width="74">Composite</td>
</tr>
<tr>
<td valign="top" width="132">Search Form</td>
<td valign="top" width="290">This pattern uses a Validating Form pattern and is linked to a Display Form pattern for a single item display</td>
<td valign="top" width="75">Composite</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>Most task worker or business level user interfaces will use a combination of these types of patterns. They can also be used in combination for multi channel solutions where you keep the controller and model elements common across the channels. </p>
<p>The presentation link below shows more detail, here is an example for Master Detail pattern which I use a lot.</p>
<p><a href="http://mattperrins.files.wordpress.com/2008/12/image1.png"><img style="border-width:0;" height="218" alt="image" src="http://mattperrins.files.wordpress.com/2008/12/image-thumb1.png?w=489&#038;h=218" width="489" border="0"></a> </p>
<p><strong>Intent:</strong>
<p>–The master to detail pattern is often used within client facing applications. The requirement to retrieve a record of data and then display the detail associated with is very common in application design. This pattern can be easily mapped to a many-to-one relational schema used within a database design. The data can be displayed in a grid or table type control and when a selection is made on the table a more detailed form of data can be displayed.
<p><strong>Based On: </strong>
<p>–This pattern is based on the Model View Controller pattern and Display Form, Validating Form, Update Form patterns.
<p><strong>Dictionary Entries:</strong>
<p>–Key, Table, List Form, Retrieve, Object
<p><strong>Motivation: </strong>
<p>–The requirement to search a list and then display more details of the items in that this is very common in user interface design. This pattern will allow a list of model objects to be presented in the Table List pattern and then when an item is selected it can be displayed in a Display Form pattern. As the user navigates through the list the form will update with the information.
<p><a href="http://www.matthewperrins.com/downloads/12_UI_Interaction_Patterns.pdf"><font color="#4b5d67">You</font></a> can find more in the PDF presentation.</p>
<p><strong><a href="http://www.matthewperrins.com/downloads/12_UI_Interaction_Patterns.pdf">Download full presentation</a></strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattperrins.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattperrins.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattperrins.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattperrins.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattperrins.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattperrins.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattperrins.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattperrins.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattperrins.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattperrins.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattperrins.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattperrins.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattperrins.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattperrins.wordpress.com/31/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattperrins.wordpress.com&amp;blog=4231202&amp;post=31&amp;subd=mattperrins&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattperrins.wordpress.com/2008/12/21/the-12-patterns-for-user-interface-design/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ebc2328fd09b3009aff15332b216f9fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mattperrins</media:title>
		</media:content>

		<media:content url="http://mattperrins.files.wordpress.com/2008/12/image-thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Keeping Flex and Silverlight inside the box</title>
		<link>http://mattperrins.wordpress.com/2008/12/21/keeping-flex-and-silverlight-inside-the-box/</link>
		<comments>http://mattperrins.wordpress.com/2008/12/21/keeping-flex-and-silverlight-inside-the-box/#comments</comments>
		<pubDate>Sun, 21 Dec 2008 08:05:12 +0000</pubDate>
		<dc:creator>mattperrins</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mattperrins.wordpress.com/2008/12/21/keeping-flex-and-silverlight-inside-the-box/</guid>
		<description><![CDATA[I am big advocate of Open Web, that is the form of the Web that has evolved from the base W3C standards and that has allowed a great deal of application consistency to be delivered to Internet users.&#160; As a Ui/Ux person and developer that is looking at solutions for customers I am constantly worrying [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattperrins.wordpress.com&amp;blog=4231202&amp;post=28&amp;subd=mattperrins&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I am big advocate of Open Web, that is the form of the Web that has evolved from the base W3C standards and that has allowed a great deal of application consistency to be delivered to Internet users.&nbsp; As a Ui/Ux person and developer that is looking at solutions for customers I am constantly worrying about what is the best approach and technology used to build solutions. </p>
<p>I have watched Microsoft effectively let Internet Explorer 6.0 stagnate and become the browser of choice in the enterprise. The issue is that it is not competitive or fit for purpose for all these new RIA solutions using OpenWeb and Ajax. I have watched as Adobe and Microsoft then expand their position of ubiquity to turn Flex into a full blown programming model and leverage the OS and Browser dominance to push Silverlight onto peoples desktops. </p>
<p>If customers start heading down the route of building full end to end solutions around these proprietary programming models and runtimes they are effetely walking away from the base principles of what the OpenWeb was created for.&nbsp; So let me confess, I love pixels and sexy UI&#8217;s and Flex and Silverlight allow me to do some really cool stuff and I wish that the W3C would get their act together and work with the browser vendors to deliver the same flexibility through open standards but that is not going to happen soon.</p>
<p>So what can you do to manage this ? I have been thinking that at the moment there are some cool things that Flex/Silverlight do very well. Video, Interactive Updating, Charting, Modelling Diagram Editors etc. </p>
<p>There are some component standards starting to arrive, we have had JSR 168 for a while and this has been expanded to JSR286, We are starting to see iWidget spec start to deliver for the Mashup requirements. Within Desktop RCP with iView has enabled a layer of control to be added around content within tools and runtimes. </p>
<p>So if we start to think of our applications as true components brought together around component standards and allow the outer shell of an application to still be delivered by OpenWeb we can start to take advantange of Flex/Silverlight to fix some of the interesting Ui problems like Charting/Diagrams but keep them inside the box of a component. This will protect you for change in the future and still enable the User Experience you want to delivered. </p>
<p><a href="http://mattperrins.files.wordpress.com/2008/12/image.png"><img style="border-width:0;" height="113" alt="image" src="http://mattperrins.files.wordpress.com/2008/12/image-thumb.png?w=498&#038;h=113" width="498" border="0"></a> </p>
<p>If you let the full shell to be replaced then you are heading down a path that we moved away from in the 90&#8242;s lock into a set of Client Server style standards controlled by a single vendors and not open. </p>
<p>Next time you are building a solution have a think about breaking it into components and then using the right technology to delivery that component wether it be OpenWeb, Dojo, Ajax, Flex or Silverlight. If we support the component standards the Open Web will mature to compete head on with what Flex and Silverlight and you will not be stuck with a lot of code written to an out of favour web ui runtime.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattperrins.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattperrins.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattperrins.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattperrins.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattperrins.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattperrins.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattperrins.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattperrins.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattperrins.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattperrins.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattperrins.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattperrins.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattperrins.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattperrins.wordpress.com/28/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattperrins.wordpress.com&amp;blog=4231202&amp;post=28&amp;subd=mattperrins&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattperrins.wordpress.com/2008/12/21/keeping-flex-and-silverlight-inside-the-box/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ebc2328fd09b3009aff15332b216f9fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mattperrins</media:title>
		</media:content>

		<media:content url="http://mattperrins.files.wordpress.com/2008/12/image-thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Bijits for Dijits for Dojo</title>
		<link>http://mattperrins.wordpress.com/2008/12/19/bijits-for-dijits-for-dojo/</link>
		<comments>http://mattperrins.wordpress.com/2008/12/19/bijits-for-dijits-for-dojo/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 21:48:35 +0000</pubDate>
		<dc:creator>mattperrins</dc:creator>
				<category><![CDATA[Dojo]]></category>

		<guid isPermaLink="false">http://mattperrins.wordpress.com/2008/12/19/bijits-for-dijits-for-dojo/</guid>
		<description><![CDATA[Co-Author: Kenton Smeltzer Senior Director of Technology at MVCI and Web 2.0 Chief Architect. Why do we need bijits? The Dojo toolkit has a perfectly good widget model defined in around _Widget and dijits. This statement is true and when used in conjunction with the wiring components can offer a flexible page construction model. The [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattperrins.wordpress.com&amp;blog=4231202&amp;post=22&amp;subd=mattperrins&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Co-Author: <a href="http://www.linkedin.com/in/kentonsmeltzer">Kenton Smeltzer</a> Senior Director of Technology at <a href="http://www.vacationclub.com/default.jsp">MVCI</a> and Web 2.0 Chief Architect.</p>
<p>Why do we need <strong>bijits</strong>? The Dojo toolkit has a perfectly good widget model defined in around _Widget and dijits. This statement is true and when used in conjunction with the wiring components can offer a flexible page construction model. The issue comes around the fact that this wiring and declaration is held in the page for all to see and lives alongside the page layout information. This can make the pages more complicated to the layout and Ux designers. The other issue is that these dijits do not become self contained self functioning components that can be easily dropped in other pages, you would have to move the widgets and the wiring rules from page to page and this is not creating a flexible component mechanism.</p>
<p>One of the specifications that is out in the market and is being sponsored by OpenAjax alliance is the iWidget specification. This spec is also a major part of the <a href="http://www-10.lotus.com/ldd/mashupswiki.nsf/">IBM Mashup Center 1.1</a> product. This mechanism for creating components that can be consumed by iWidget containers in web pages, desktops, side bars and directly in standard HTML. This specification has a lot of promise but at the moment requires a server component to read and analyze the iWidget configuration information and does not currently deliver a true client side only iWidget programming model. More detail of this specification can be found at the following link:</p>
<p><a href="http://www-10.lotus.com/ldd/mashupswiki.nsf/dx/iwidget-spec-v1.0.pdf/$file/iwidget-spec-v1.0.pdf">http://www-10.lotus.com/ldd/mashupswiki.nsf/dx/iwidget-spec-v1.0.pdf/$file/iwidget-spec-v1.0.pdf</a></p>
<p>So what are bijits? Bijits are an extension to the Dijit programming model to add all the features that an iWidget can support. Through this mechanism it will allow pages to be constructed from a combination of bijit components and then the page controller can wire them together to react to the bijits behaviour.</p>
<p>The key characteristics of a bijit are that it has an attribute space that a page controller can access to retrieve the defined attributes that are defined around the components. This is very useful for a form and complex multi dijit bijits. These attributes can be accesses using the getAtrribute and setAttribute methods.</p>
<p>The other key element is its support for events, these can be generated by the bijit and a page controller can connect to these events, and then make page logic decisions to pass data into other bijits. For example a user may select a date from a calendar bijit and this would generate the dateSelected event. This date value may then be set on a hotel availability bijit. By setting this value it would cause the availability bijit to request the availability for the hotels selection. This style of programming will enable the bijit to be completely self-contained from the page or context that it is placed within. This enables the component to be reused across many pages and have a defined programming interface.</p>
<h5>Bijit Programming Model and RIA Framework</h5>
<p>The RIA Framework contains a defined bijit programming model that will allow for segments of a page to be broken into self defined bijits with a defined attribute and event interface that can then be used by other developers build pages in an easy and flexible manner.</p>
<p><a href="http://mattperrins.files.wordpress.com/2008/12/bijit.png"><img style="border-width:0;" src="http://mattperrins.files.wordpress.com/2008/12/bijit-thumb.png?w=502&#038;h=364" border="0" alt="bijit" width="502" height="364" /></a></p>
<p>The bijit developer will extend a base Dojo class called “_Bijit” this in turn will be derived from a _Widget class. The bijit will contain a  field name that will specify the name of the configuration file name that will be supplied in JSON format. The bijit implementation will then support a variety of programming interfaces that will support the usage of the configuration data within the bijit.</p>
<p>A key are to some bijits is the ability to access model data that is extended on top of the base data that the bijit may use for display. A good example of this is the Calendar bijit. You may have common services that can return a variety of Calendar data elements. The Enterprise Object model can be used by the bijit to map specific UI display or behaviour around the data and model that is returned.</p>
<p>The following explains the details for creating a bijit and how to use its core API’s.</p>
<h5>Dojo Implementation</h5>
<p>To create a bijit you declare a widget in the same way you would a normal Dijit but this time you would extend the “_Bijit” class from the RIA Framework.</p>
<pre>dojo.provide("mvci.bijit.calendar.SimpleCalendar");
dojo.require("dojo.cldr.supplemental");
dojo.require("dojo.date");
dojo.require("dojo.date.locale");
dojo.declare(
"mvci.bijit.calendar.SimpleCalendar",
[mvci.dijit._Bijit],
{
templatePath : dojo.moduleUrl("mvci.bijit.calendar", "templates/Calendar.html"),
interfacePath : dojo.moduleUrl("mvci.bijit.calendar", "interface/Calendar.json")</pre>
<p>The key difference is that as well as a <strong>templatePath</strong> that is used by the standard Dijit for containing the base HTML structure for the widget. You will need to define an <strong>interfacePath </strong>this interface reference will point to a static JSON structure that will be used by the bijit to define the various attributes and events that the bijit will support.</p>
<p>The interface configuration will need to be created inside a directory called <strong>interface</strong> that is at the same level as the bijit template directory.</p>
<p><a href="http://mattperrins.files.wordpress.com/2008/12/clip-image004.jpg"><img style="border-width:0;" src="http://mattperrins.files.wordpress.com/2008/12/clip-image004-thumb.jpg?w=297&#038;h=254" border="0" alt="clip_image004" width="297" height="254" /></a></p>
<p>The Bijit will automatically include the <strong>_Logging</strong> and <strong>_Context</strong> classes that are part of the core RIA Framework, <strong>_Resources</strong> and <strong>_Services</strong> can be added to the Bijit if it needs to access local resources and Services. <strong>_Forward</strong> is not included as this encouraged that only a Page Controller performs page forwarding techniques.</p>
<h6>Template</h6>
<p>The bijit must follow the standard Dijit implementation design when using Templates. This will require that the Bijit sets a templatePath member variable that will cause the Bijit to load its template code from a templates directly below the Bijit definition.</p>
<h5>Life cycle</h5>
<p>The bijit will follow the standard Dijit lifecycle. This is required to enable it to fit within the standard Dojo programming model. The life cycle for the RIA Framework is focused on supporting Page Controllers. Bijits need to behave just like standard Dojo widgets.</p>
<h6>postCreate</h6>
<p>To support this, the Bijit will need to implement the postCreate method. This is used to support the initialisation of the Bijit and the necessary elements, services and other elements that it will use. The attribute store for the bijit will be initialised by this time so it will be possible to access the attribute element values during this lifecycle.</p>
<h6>Interface Configuration</h6>
<p>The interface configuration follows the iWidget pattern exactly. This has been done to help future prove Bijits. At some point in time an iWidget / Dojo specification will arrive that will cover pure client side widget definitions. Once this has been done it will be very easy to migrate to this open implementation.</p>
<p>The following is an example of the interface configuration for a bijit:</p>
<pre>{
  // Define the Attributes for the Bijit
  attributes : {
    onItemSetChanged : "onItemSetChange",
    private : "false",
    names	:
      [
       { id : "date", value : "02/04/1968", readOnly : "true" },
       { id : "availability" , value : "",  readOnly : "false" },
       { id : "current"      , value : "",  readOnly : "true" }
      ]
   },
   // Define inbound and outbound events
   events :
   [
    { id : "selectedDate" , payloadType : "any",</pre>
<pre>      publish : "true" },
    { id : "date" , payloadType, "any",</pre>
<pre>      handled : "true", onEvent :  "dateChange"}
   ]
}</pre>
<p>The structure of the configuration uses JSON so that the Bijit can easily load it and access it through its defined interface. It will also be cached.</p>
<h5>Attributes</h5>
<p>The configuration is broken into sections the first is the attributes list. The <strong>onItemSetChange</strong> value is the method inside the Bijit that will be called whenever a <strong>setAttribute</strong> method is invoked. This will allow specific logic or events to be triggered when ever data is set on the Bijit. If private variable is set to false then the attributes cannot be accessed from the bijit.</p>
<p>The Name variable array lists the names of the valid attributes that can be set or accesses. The attributes can have a default value and can have a variable set to determine if they are read only. The Bijit user will access the bijit through a set of setAttribute and getAttribute calls. These methods will manage the behavior based on the rules defined in this interface configuration file.</p>
<p>The Attribute store will be populated from the Page Context by the page controller. This will enable a bijit to be re-initialized when the page is refreshed.</p>
<h6>getAttribute</h6>
<p>The getAttribute method on the Bijit can be used to retrieve the value of a given attribute that is declared in the interface configuration. An exception will be returned if the attribute name does not match the name in the interface configuration.</p>
<p><strong>API Specification</strong></p>
<p><strong></strong></p>
<p><strong>var </strong>value = bijit.getAttribute(“name”);</p>
<h6>setAttribute</h6>
<p>The setAttribute method on the Bijit can be used to store new values in the bijit. This will cause a method to be invoked inside the bijit that will allow it to manage the lifecycle of the data within it. For example if you set the date attribute this may update the current date displayed within the a calendar dijit.</p>
<p><strong>API Specification</strong></p>
<p><strong></strong></p>
<p>bijit.setAttribute(“name”,”Matthew Perrins”);</p>
<h5>Events</h5>
<p>To allow a bijit to exist within a page or within the context of an application it needs to generate and react to events. These events can be generated in a true decoupled way allowing the bijit to just focus on its use cases and business function. It can then deliver information through events to either the page or other bijits to create a consistent user experience. This also allows the bijit functionality to stand on its own and the bijit to be a re-useable as possible.</p>
<p>The events are defined in the events section of the interface configuration file. Two types of events can be defined. One is the inbound events or the subscription events. The second is the out-bound or publish events.</p>
<h6>Publish Events</h6>
<p>Publish events are generated by the bijit for other elements to subscribe to. This enables other elements like a page controller to react to a change in the information coming out of a bijit. A bijit developer will need to define the list of published events in the interface configuration. In the meta-data they will define the event id name, the payload type and if the event can support a publish call.</p>
<p>{id : &#8220;selectedDate&#8221; , payloadType : &#8220;any&#8221;, publish : &#8220;true&#8221; },</p>
<p>Inside the bijit implementation and out of sight from the bijit user the internal event system that is mapped to specific dijits or other events will need to perform a publishEvent API call.</p>
<h6>Context</h6>
<p>Inside the Bijit there will be an <strong>iContext</strong> member variable that will support the ability to publish values to event names. The following is an example of how the _currentDate value is published on the <strong>selectedDate</strong> topic for the bijit.</p>
<p>this.iContext.publishEvent(&#8220;selectedDate&#8221;, _currentDate);</p>
<p>Any subscribers to this event at the Page controller level will be notified of its change and then can react to the value and perform some level of page logic.</p>
<h6>Subscribe Events</h6>
<p>Subscribe events are the mechanism that defines how external page controllers or other bijits can publish data into the bijit. The example below shows a date event that will fire the dateChange method within the bijit.</p>
<p><strong>{</strong> id : &#8220;date&#8221; , payloadType, &#8220;any&#8221;, handled : &#8220;true&#8221;, onEvent : &#8220;dateChange&#8221;}</p>
<p>A page or bijit can bind themselves to this event mechanism by using the dojo.connect API. This will cause the bijit to trigger the internal method in the bijit.</p>
<p>dojo.connect(bijit,”date”,”02/04/1968”);</p>
<p>The setAttribute API call can also be used to trigger events</p>
<p>These are some of my ideas around extending Dojo dijits to become more like iWidgets we may get a true client side iWidget model in the future that would enable the same power that iWidgets is offering to mashups within the Dojo programming model. In the meantime I will use this approach.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattperrins.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattperrins.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattperrins.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattperrins.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattperrins.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattperrins.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattperrins.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattperrins.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattperrins.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattperrins.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattperrins.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattperrins.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattperrins.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattperrins.wordpress.com/22/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattperrins.wordpress.com&amp;blog=4231202&amp;post=22&amp;subd=mattperrins&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattperrins.wordpress.com/2008/12/19/bijits-for-dijits-for-dojo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ebc2328fd09b3009aff15332b216f9fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mattperrins</media:title>
		</media:content>

		<media:content url="http://mattperrins.files.wordpress.com/2008/12/bijit-thumb.png" medium="image">
			<media:title type="html">bijit</media:title>
		</media:content>

		<media:content url="http://mattperrins.files.wordpress.com/2008/12/clip-image004-thumb.jpg" medium="image">
			<media:title type="html">clip_image004</media:title>
		</media:content>
	</item>
		<item>
		<title>Why Dojo needs a client side MVC framework</title>
		<link>http://mattperrins.wordpress.com/2008/12/19/why-dojo-needs-a-client-side-mvc-framework/</link>
		<comments>http://mattperrins.wordpress.com/2008/12/19/why-dojo-needs-a-client-side-mvc-framework/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 13:59:34 +0000</pubDate>
		<dc:creator>mattperrins</dc:creator>
				<category><![CDATA[Dojo]]></category>

		<guid isPermaLink="false">http://mattperrins.wordpress.com/2008/12/19/why-dojo-needs-a-client-side-mvc-framework/</guid>
		<description><![CDATA[Firstly a big thanks to Kenton Smeltzer Chief Web 2.0 Architect and Senior Director of Technology at Marriott Vacation Club International MVCI for helping shape and craft these ideas and bringing this whole vision together. In the creation of modern Rich Internet Applications (RIAs) that follow the open web design principles, it is essential to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattperrins.wordpress.com&amp;blog=4231202&amp;post=14&amp;subd=mattperrins&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Firstly a big thanks to <a href="http://www.linkedin.com/in/kentonsmeltzer">Kenton Smeltzer</a> Chief Web 2.0 Architect and Senior Director of Technology at Marriott Vacation Club International MVCI for helping shape and craft these ideas and bringing this whole vision together.
<p>In the creation of modern Rich Internet Applications (RIAs) that follow the open web design principles, it is essential to enable developers to follow design patterns and best practices. Existing RIA frameworks, such as the Dojo Toolkit, have focused on solving problems around user experience through widgets and a common component model for widget composition, but there is a gap with respect to a simple, robust programming model that allows the consistent construction of RIA applications.
<p>JEE technology faced a similar problem and it took a number of years after its initial release for developers to adopt the patterns and practices that would enable the development of scalable applications that could be maintained by enterprise development organizations.
<p>Dojo is now at the same point it needs an RIA framework, that extends the Dojo Toolkit with a set of specific framework services, such as logging and page forwarding, state handling etc.
<p>This RIA framework would follow some of the core principles for building robust flexible RIA applications. The following are the most important elements:
<ul>
<li>The <b>Dojo Toolkit</b> is used as the underlying component model for widgets and other elements of the framework.<b></b>
<li>Any new <b>User Interface Widgets </b>follow the clean Model View Control used by the <b>dijit</b> sub system of Dojo. This creates the separation of concerns needed to enable User Experience (Ux) designers to control the layout and look and feel of each page without needing to modify the functionality of widgets or pages.<b></b>
<li>Logical segments of a page are broken into reusable <strong>Bijits </strong>Business Widgets that follow very similar principles as iWidgets in that they expose attributes and events and operate in a self contained way. ( more on this later)
<li>Each<b> Logical Page</b> is contained in a single HTML file. This file encapsulates all the elements required to manage the display and rendering of all the each widgets and to support the user interaction requirement for the page.
<li>A <b>Controller </b>pattern is used by each page to define a consistent interface between the layout of the page and the actions and behaviours of how the page will function.
<li>Pages use <b>Stateless</b> <b>Services </b>using URI, RESTful, and RPC invocation types.
<li>The <b>Application</b> server is used to deliver data feeds in the form of <b>JSON, XML </b>and <b>ATOM</b>. Most importantly, the application server will not be used for page rendering.</li>
</ul>
<p>With the adoption of these guiding principles, together with Dojo’s out-of-the-box support of some of the higher level business requirements, this approach can offer a comprehensive Web 2.0 application development framework. And break the model of the server needing to generate the Ui and add flexibility to the Ux teams to change layout and page function without the pain managing JEE artifacts.
<p>The following diagram outlines the major elements and the separation of concerns for such a Framework.
<p><a href="http://mattperrins.files.wordpress.com/2008/12/dojoriaframework.png" target="_blank"><img height="488" alt="dojoriaframework" src="http://mattperrins.files.wordpress.com/2008/12/dojoriaframework-thumb.png?w=498&#038;h=488" width="498" border="0"></a><br />
<h3><strong>A Changing Paradigm: View and Controller on the browser</strong></h3>
<p>RIA applications will be packaged into two distinct elements. The first will be the RIA Runtime artifacts that form the User Interface of the applications and provide the user experience for each page. The second is the Application Server Runtime artifacts and configuration that is used to deliver the supporting data to the RIA tier and integrates the RIA application to the corporate business service tier. </p>
<p>Within a modern RIA application the View and Controller have moved from the server into the browser, they now leverage DHTML, DOM and JavaScript to achieve compelling and easy to use applications, and use the server as a source for model data that can asynchronously requested by the controller. With this change of behaviour the View and Controller parts of the application can be completely separated from the server. This means that they can be delivered by normal HTTP servers and no longer need to be embedded within a server programming model like JEE or ASP.NET. This also means that the View and Controller elements can be developed without a server and can be unit tested in isolation from the server infrastructure.
<p>I believe that this is next step for Web 2.0 enterprise application development and finally moving away from server generated Ui&#8217;s using JSP, ASPs,JSF, etc etc will enable greater level of flexibility.  </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattperrins.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattperrins.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattperrins.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattperrins.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattperrins.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattperrins.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattperrins.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattperrins.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattperrins.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattperrins.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattperrins.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattperrins.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattperrins.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattperrins.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattperrins.wordpress.com&amp;blog=4231202&amp;post=14&amp;subd=mattperrins&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattperrins.wordpress.com/2008/12/19/why-dojo-needs-a-client-side-mvc-framework/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ebc2328fd09b3009aff15332b216f9fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mattperrins</media:title>
		</media:content>

		<media:content url="http://mattperrins.files.wordpress.com/2008/12/dojoriaframework-thumb.png" medium="image">
			<media:title type="html">dojoriaframework</media:title>
		</media:content>
	</item>
		<item>
		<title>Setting up a development environment for iWidgets with RAD 7.5</title>
		<link>http://mattperrins.wordpress.com/2008/12/19/setting-up-a-development-environment-for-iwidgets-with-rad-75/</link>
		<comments>http://mattperrins.wordpress.com/2008/12/19/setting-up-a-development-environment-for-iwidgets-with-rad-75/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 13:17:37 +0000</pubDate>
		<dc:creator>mattperrins</dc:creator>
				<category><![CDATA[Mashups]]></category>

		<guid isPermaLink="false">http://mattperrins.wordpress.com/2008/12/19/setting-up-a-development-environment-for-iwidgets-with-rad-75/</guid>
		<description><![CDATA[About a month ago I started to look at how to develop iWidgets for the IBM Mashup Center 1.1. I come from a J2EE WAR based programming background so was interested on how to configure my Eclipse based tooling to develop iWidget in the easiest way possible. The following steps worked for me and allowed [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattperrins.wordpress.com&amp;blog=4231202&amp;post=11&amp;subd=mattperrins&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div style="margin:5px;">
<p>About a month ago I started to look at how to develop <a href="www-10.lotus.com/ldd/mashupswiki.nsf/dx/iwidget-spec-v1.0.pdf/$file/iwidget-spec-v1.0.pdf">iWidgets</a> for the <a href="http://www-01.ibm.com/software/info/mashup-center/">IBM Mashup Center 1.1</a>. I come from a J2EE WAR based programming background so was interested on how to configure my Eclipse based tooling to develop iWidget in the easiest way possible. </p>
<p>The following steps worked for me and allowed a very quick edit, save, publish, test cycle where I could edit the iWidget code and have it running in my browser in seconds. IMC 1.1 does support OSGi packaged iWidgets I will look into that next time.</p>
<p><strong><font size="4">Steps</font></strong></p>
<p>When developing iWidgets for IBM Mashup Center (IMC), rather than repeatedly create and deploy new WAR files to IMC, it is possible to configure RSA/RAD 7.x such that the WAR files you are developing can be integrated with the IMC runtime from your workspace. This way, you can simply modify and test any changes by reloading the Lotus Mashups page in the browser. The following steps are required.</p>
<ol>
<li>Create a WAS 6.1 server configuration for RSA/RAD that points at the WAS installation for IMC. If you installed IMC in the directory C:IMC for example, you will need to configure a runtime pointing at the directory <b>C:IMCAppServer</b>.
<li>Use the <b>RMI</b> connector to make the server attachment, RSA/RAD should suggest the correct port for you to use for your connector e.g 2811. You should now be in a position to deploy assets from your workspace into the IMC WAS installation.
<li>Create a Dynamic Web Project to contain your new iWidget together with an EAR in which to contain the resulting WAR. This is the container into which you put the contents of your widget together with the required deployment descriptors and so on.A description of what these look like can be found <a href="http://www-10.lotus.com/ldd/mashupswiki.nsf/dx/creating-and-deploying-a-simple-widget">in the Lotus Mashups help pages<sup><img height="7" alt="" src="https://w3.tap.ibm.com/w3ki/images/icons/linkext7.gif" width="7" align="absMiddle" border="0"></sup></a> together with the details of <a href="http://www-10.lotus.com/ldd/mashupswiki.nsf/dx/iWidgetProgrammingGuide_20081020.pdf/$file/iWidgetProgrammingGuide_20081020.pdf">the iWidget programming guide<sup><img height="7" alt="" src="https://w3.tap.ibm.com/w3ki/images/icons/linkext7.gif" width="7" align="absMiddle" border="0"></sup></a>. A simple iWidget WAR is <a href="https://w3.tap.ibm.com/w3ki/download/attachments/4342241/ReaderTrigger.war?version=1">attached to this page<sup><img height="7" alt="" src="https://w3.tap.ibm.com/w3ki/images/icons/link_attachment_7.gif" width="7" align="absMiddle" border="0"></sup></a> by way of an example.
<li>Add the new EAR file to the server configuration you created earlier. It should now be available via the IMC WAS application server. You can test this by requesting the URL of the XML manifest for your iWidget using your browser &#8212; it should be visible through the newly deployed WAR file e.g.
<pre>http://localhost:9082/CardReader/CardReader.xml</pre>
<p>where <b>CardReader</b> is the name of the WAR file.</p>
<li>Stop the IMC WAS instance using the RSA/RAD <b>Servers</b> controls.
<li>With IMC stopped, we now need to edit the Catalog file so that the widget we are developing appears on one of the drop down menus in the Lotus Mashups editor page. This provides the linkage between the Lotus Mashups environment and our workspace widget. Look within your IMC installation for the file called <b>catalog_admin.xml</b> which if you have installed into <b>C:IMC</b> will be found in <b>C:IMCmmpubliccat</b>. Make a backup copy of this file.
<li>Open the <b>catalog_admin.xml</b> file in WordPad. You will see it is organised into a hierarchy of categories and entries.
<li>Copy an <b>entry</b> element and its contents and paste a copy within one of the <b>category</b> elements. Easiest option is simply to paste it below the entry that you just copied.
<li>Modify the entry to contain a meaningful name, description and <b>id</b> and <b>unique-name</b> values on the <b>entry</b> element. No matter how strong the urge <b>DO NOT REFORMAT THE XML</b>. Preserve the original formatting.
<li>Set the contents of the <b>definition</b> tag within the <b>entry</b> tag to the URI of your XML manifest. This links the menu item to your specific widget e.g.
<pre>/CardReader/CardReader.xml</pre>
<p>to continue the above example.</p>
<li>Save the XML file.
<li>Restart the IMC WAS runtime from RSA/RAD.
<li>Load Lotus Mashups in your browser and login.
<li>You may see a JavaScript dialog box containing the message &#8220;TypeError &#8211; 103e is null.&#8221; Simply press OK and then the reload button your browser. You should now see the Lotus Mashups Welcome Page as usual.
<li>Press the <b>Go to View</b> button on the Welcome Page. You will see a set of tabs appear containing the categories you saw earlier in the catalog XML file.
<li>Find the category into which you added your widget earlier. You should now be able to drag your widget from the menu onto the Lotus Mashups page. </li>
</ol>
<p>Now, when you make changes to the widget in RSA/RAD, you can pick them up simply by reloading the Lotus Mashups page. When your widget is ready, you then deploy it by exporting the WAR file.</p>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mattperrins.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mattperrins.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mattperrins.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mattperrins.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mattperrins.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mattperrins.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mattperrins.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mattperrins.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mattperrins.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mattperrins.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mattperrins.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mattperrins.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mattperrins.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mattperrins.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mattperrins.wordpress.com&amp;blog=4231202&amp;post=11&amp;subd=mattperrins&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mattperrins.wordpress.com/2008/12/19/setting-up-a-development-environment-for-iwidgets-with-rad-75/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/ebc2328fd09b3009aff15332b216f9fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mattperrins</media:title>
		</media:content>

		<media:content url="https://w3.tap.ibm.com/w3ki/images/icons/linkext7.gif" medium="image" />

		<media:content url="https://w3.tap.ibm.com/w3ki/images/icons/linkext7.gif" medium="image" />

		<media:content url="https://w3.tap.ibm.com/w3ki/images/icons/link_attachment_7.gif" medium="image" />
	</item>
	</channel>
</rss>
