<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2" -->
<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/"
	>

<channel>
	<title>Caffeine Induced Ramblings - Jasper Potts's Blog</title>
	<link>http://www.jasperpotts.com/blog</link>
	<description>Jasper Potts's Blog on Java and Life</description>
	<pubDate>Wed, 09 Apr 2008 14:59:26 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2</generator>
	<language>en</language>
			<item>
		<title>Panoramas &#038; Holidays</title>
		<link>http://www.jasperpotts.com/blog/2008/01/panoramas-holidays/</link>
		<comments>http://www.jasperpotts.com/blog/2008/01/panoramas-holidays/#comments</comments>
		<pubDate>Wed, 02 Jan 2008 08:52:27 +0000</pubDate>
		<dc:creator>Jasper Potts</dc:creator>
		
		<category><![CDATA[Photography]]></category>

		<category><![CDATA[Personal]]></category>

		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.jasperpotts.com/blog/2008/01/panoramas-holidays/</guid>
		<description><![CDATA[A few years ago I found a great site Breaking the Gigapixel Barrier about creating Giga-Pixel photos by stitching 100s of normal SLR photos together. Some people have pushed this even further with a 13 Gigapixel photo of Harlem with over 2000 photos. So my Christmas present from my wife was a new tripod and [...]]]></description>
			<content:encoded><![CDATA[<p>A few years ago I found a great site <a href="http://www.tawbaware.com/maxlyons/gigapixel.htm" title="Braking the gigapixel barrier">Breaking the Gigapixel Barrier</a> about creating Giga-Pixel photos by stitching 100s of normal SLR photos together. Some people have pushed this even further with a <a href="http://www.harlem-13-gigapixels.com/" title="13 Gigapixel">13 Gigapixel photo of Harlem</a> with over 2000 photos. So my Christmas present from my wife was a new tripod and indexing head so I can take photos every 5 degrees. As  my wife and I went to Las Vegas and the Grand Canyon over the holidays it was a great opportunity to try to take my first Gigapixel photo. My wife has written a blog with entertaining tales of our travels <a href="http://www.fionapotts.com/content/2007/12/29/christmas/" title="Fionas chirstmas blog">fionapotts.com</a>. Well I did not break the Giga-Pixel barrier I managed to get to 733Mpix.</p>
<p align="center"><a href="http://www.jasperpotts.com/blog/photos/?section=panos" title="Panoramas"><img src="http://www.jasperpotts.com/panos/Grand%20Canyon%20733Mpix/thumb60.jpg" title="Grand Canyon" alt="Grand Canyon" border="0" height="60" width="352" /><br />
Grand Canyon 733Mpix</a></p>
<p>Its 127 12Mpix images stitched together in 3 rows every 5 degrees using a 300mm zoom lens. After some research and experimenting with different software for joining all the photos the best I found was <a href="http://www.autopano.net/">Autopano Pro </a>which rocks at auto detecting matching points in each photo and stitching and blending all the photos together. You can check out my results and other photos from our trip on my updated <a href="http://www.jasperpotts.com/blog/photos/" title="My photos">Photos Page</a>. I took about 10 panoramas of the Grand Canyon including some HDR (High Dynamic Range) ones with 3 bracketed exposures per photo. Autopano Pro has support for stitching HDR panos but I did not have much luck as the was clear banding from photo to photo.  If any of you have any tips on how to stitch HDR panos I would love to here. Well its been a fun break, back to fixing the last pre-beta Nimbus bugs tomorrow.</p>
<p align="center"><a href="http://www.jasperpotts.com/blog/photos/?photoset=72157603565009900" title="Vegas Photos"><img src="http://farm3.static.flickr.com/2299/2144309814_620b575b4f.jpg" title="Hover Dam" alt="Hover Dam" border="0" height="228" width="500" /><br />
Hoover Dam </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jasperpotts.com/blog/2008/01/panoramas-holidays/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nimbus: Large, Small, Mini Components</title>
		<link>http://www.jasperpotts.com/blog/2007/12/nimbus-large-small-mini-components/</link>
		<comments>http://www.jasperpotts.com/blog/2007/12/nimbus-large-small-mini-components/#comments</comments>
		<pubDate>Fri, 07 Dec 2007 18:56:23 +0000</pubDate>
		<dc:creator>Jasper Potts</dc:creator>
		
		<category><![CDATA[Nimbus]]></category>

		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.jasperpotts.com/blog/2007/12/nimbus-large-small-mini-components/</guid>
		<description><![CDATA[In the original design for Nimbus there were large,small and mini versions of components. Small and mini components are very useful when you are creating tool pallets or other UI where space is very tight. Apple recently added this to their new look and feel in the latest java versions see Technical Note TN2196. We are [...]]]></description>
			<content:encoded><![CDATA[<p>In the original design for Nimbus there were large,small and mini versions of components. Small and mini components are very useful when you are creating tool pallets or other UI where space is very tight. Apple recently added this to their new look and feel in the latest java versions see <a href="http://developer.apple.com/technotes/tn2007/tn2196.html#SMALL_MINI" target="_blank" title="Technical Note TN2196">Technical Note TN2196</a>. We are using the same client property key and values as Apple to be compatible but I have also added &#8220;large&#8221; as a option. Not sure &#8220;large&#8221; is as useful as &#8220;small&#8221; or &#8220;mini&#8221; but might look good in wizards or dialogs. Check out the screenshot to see how they look. <a href="http://www.jasperpotts.com/blog/wp-content/uploads/2007/12/small-mini.png"><img src="http://www.jasperpotts.com/blog/wp-content/uploads/2007/12/small-mini-600.png" border="0" alt="Nimbus Small Mini 600" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jasperpotts.com/blog/2007/12/nimbus-large-small-mini-components/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Faster Swing Lists and Tables up to 88,000x</title>
		<link>http://www.jasperpotts.com/blog/2007/11/faster-swing-lists-and-tables-upto-88000x/</link>
		<comments>http://www.jasperpotts.com/blog/2007/11/faster-swing-lists-and-tables-upto-88000x/#comments</comments>
		<pubDate>Tue, 06 Nov 2007 02:48:09 +0000</pubDate>
		<dc:creator>Jasper Potts</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.jasperpotts.com/blog/2007/11/faster-swing-lists-and-tables-upto-88000x/</guid>
		<description><![CDATA[ Swing lists and tables use an implementation of ListSelectionModel to handle keeping track of the selection. Every time you change the selection or rows then the component sends those changes to the selection model to keep it in sync. The default implementation that you get is DefaultListSelectionModel. Its implmentation is highly optimized for certain [...]]]></description>
			<content:encoded><![CDATA[<p> Swing lists and tables use an implementation of ListSelectionModel to handle keeping track of the selection. Every time you change the selection or rows then the component sends those changes to the selection model to keep it in sync. The default implementation that you get is DefaultListSelectionModel. Its implmentation is highly optimized for certain kinds of operations but has had to make comprimizes for a some other operations.</p>
<p>Back when I was doing Imagery I created an alternative implementation of ListSelectionModel because I needed an easy way to convert the selection into a SQL where clause. After much thought I came up with the idea of representing the selection as a list of ranges of selected ids. This means that you can then convert the selection into a list of <code>"id >= rangeMin AND id <= rangeMax"</code> SQL expressions. This solution is well suited to the case where the selection is created by the user. The only way for a user to create more than one range is to &#8220;Control&#8221; click the rows. It is unlikely that the user will ever select more than a couple dozen ranges. This results in a model that is always simple however many rows there are in the List/Table. As a by product of this alternative selection model can be up to 88,000x faster than the default with large amounts of rows. I have put together a couple of JUnit tests, one does a huge amount of random operations on both a DefaultListSelectionModel and a RangeListSelectionModel and compares the results at each stage. This means that I can be very sure that my implementation is fully compatible with the default one. The second unit test does some performance tests to compare the two models. The data set is 1,000,000 rows and 20,000 operations for each test<br />
<h3>Performance Results</h3>
<p></p>
<table bgcolor="#EEEEEE" cellpadding="2">
<tr bgcolor="#DDDDDD">
<th>Test</th>
<th>Default Model</th>
<th>Ranges Model</th>
<th>Perfomance Gain</th>
</tr>
<tr>
<td>Add selection interval</td>
<td>0.017 s</td>
<td>2.533 s</td>
<td>-149x</td>
</tr>
<tr>
<td>Is selected index</td>
<td>0.009 s</td>
<td>0.011 s</td>
<td>-1.2x</td>
</tr>
<tr>
<td>Remove index interval</td>
<td>16:09 min</td>
<td>0.011 s</td>
<td style="color:#FF0000">88,053x</td>
</tr>
<tr>
<td>Set selected item</td>
<td>1:30 min</td>
<td>0.067 s</td>
<td style="color:#FF0000">1405x</td>
</tr>
<tr>
<td>20k Random Operations</td>
<td>4:25 min</td>
<td>0.055 s</td>
<td style="color:#FF0000">4810x</td>
</tr>
<tr>
<td>Average</td>
<td></td>
<td></td>
<td style="color:#FF0000;font-weight:bold">18,823x</td>
</tr>
</table>
<p>As you can see from the results that it is a large win on average. The test that it is slow at is AddSelectionInterval this is because it ends up with 17482 ranges. This should never happen in most real world applications, the only way I can see it happen is if you select all table rows that meet some search criteria which results in 1000s of random rows being selected. In all cases where the selection is user controlled then this will never happen.<br />
<h3>Conclusion</h3>
<p>I have seen bug reports coming in of hugely bad JTable performance when adding/removing rows from a huge table. After profiling I found that it was the SelectionModel causing the problems. You can see from the performance results that it can take minutes to do a large chunk of selection changes on a big table. So please try out my Ranges implementation in your application and tell me how it performs. If the responses are good I could change it to the default ListSelectionModel implementation in Java 7. To use it you just need to add the line &#8220;<code>myTable.setSelectionModel(new RangeListSelectionModel());</code>&#8220;.</p>
<h3>Code Downloads</h3>
<p>Here are the sources so you can try it out for yourself:</p>
<table style="text-align:center" cellspacing="10">
<tr>
<td><a href="http://jasperpotts.com/blogfiles/RangeListSelectionModel.java" onClick="javascript:urchinTracker ('/blogfiles/RangeListSelectionModel.java');"><img border="0" src='http://www.jasperpotts.com/blog/wp-content/uploads/2007/11/java-icon.png' alt='Java Icon' /><br />
RangeListSelectionModel.java</a></td>
<td><a href="http://jasperpotts.com/blogfiles/RangeSelectionModelPerformanceTest.java" onClick="javascript:urchinTracker ('/blogfiles/RangeSelectionModelPerformanceTest.java');"><img border="0" src='http://www.jasperpotts.com/blog/wp-content/uploads/2007/11/java-icon.png' alt='Java Icon' /><br />
RangeSelectionModelPerformanceTest.java</a></td>
<td><a href="http://jasperpotts.com/blogfiles/RangeSelectionModelTest.java" onClick="javascript:urchinTracker ('/blogfiles/RangeSelectionModelTest.java');"><img border="0" src='http://www.jasperpotts.com/blog/wp-content/uploads/2007/11/java-icon.png' alt='Java Icon' /><br />
RangeSelectionModelTest.java</a></td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.jasperpotts.com/blog/2007/11/faster-swing-lists-and-tables-upto-88000x/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JavaOne 2008 Papers</title>
		<link>http://www.jasperpotts.com/blog/2007/10/javaone-2008-papers/</link>
		<comments>http://www.jasperpotts.com/blog/2007/10/javaone-2008-papers/#comments</comments>
		<pubDate>Tue, 30 Oct 2007 22:35:37 +0000</pubDate>
		<dc:creator>Jasper Potts</dc:creator>
		
		<category><![CDATA[Nimbus]]></category>

		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.jasperpotts.com/blog/2007/10/javaone-2008-papers/</guid>
		<description><![CDATA[Its already that time of year again to start writing up all your great ideas for Java One Desktop talks for next year. Its only two and a half weeks till they close for submissions so hurry up. Click here for details for paper submission.
I am planning on submitting a talk on Nimbus and the [...]]]></description>
			<content:encoded><![CDATA[<p>Its already that time of year again to start writing up all your great ideas for Java One Desktop talks for next year. Its only two and a half weeks till they close for submissions so hurry up. <a href="https://www28.cplan.com/cfp_prod/CFPLogin.jsp?wId=72T235">Click here for details for paper submission.</a></p>
<p>I am planning on submitting a talk on Nimbus and the new Nimbus Designer tool. Covering:</p>
<ul>
<li>Using Nimbus L&#038;F in your applications</li>
<li>Designing for cross-platform, how to design your application to look good on all platforms</li>
<li>Customizing Nimbus</li>
<li>Creating new look and feels using the designer tool based on Nimbus</li>
<li>Creating your own components with Nimbus L&#038;F themeing support</li>
<li>Designing the look for your own components using the deisgner tool</li>
</ul>
<p>Might have too much to cover in a hour, don&#8217;t want to scare you all off. Any thoughts on what topics you think are the most important/intresting in case I need to cut bits out or anything I didn&#8217;t mention here?</p>
<p><a href="http://java.sun.com/javaone/sf/"><img border="0" src='http://www.jasperpotts.com/blog/wp-content/uploads/2007/10/javaone2008.jpg' alt='JavaOne 2008' /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jasperpotts.com/blog/2007/10/javaone-2008-papers/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Come join the Swing Team</title>
		<link>http://www.jasperpotts.com/blog/2007/10/come-join-the-swing-team/</link>
		<comments>http://www.jasperpotts.com/blog/2007/10/come-join-the-swing-team/#comments</comments>
		<pubDate>Tue, 30 Oct 2007 00:42:33 +0000</pubDate>
		<dc:creator>Jasper Potts</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.jasperpotts.com/blog/2007/10/come-join-the-swing-team/</guid>
		<description><![CDATA[
We are looking for someone to come join us and help develop the next generation of Java Desktop. Lots of cool fun projects looking for a passionate Swing guru.

Experience with developing Swing applications required.
Passion for Desktop and Rich Client Applications
Interest in designing new API for future versions of Java
Interested in helping write cool demos for [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float:right" src='http://www.jasperpotts.com/blog/wp-content/uploads/2007/10/duke_swing.gif' alt='Swing Duke' /></p>
<p>We are looking for someone to come join us and help develop the next generation of Java Desktop. Lots of cool fun projects looking for a passionate Swing guru.</p>
<ul>
<li>Experience with developing Swing applications required.</li>
<li>Passion for Desktop and Rich Client Applications</li>
<li>Interest in designing new API for future versions of Java</li>
<li>Interested in helping write cool demos for Java One and just generally showing off our technology</li>
<li>Need to be in the San Francisco Bay Area or willing to move there. Also you need to be a US citizen or be able to get a visa to work in the US.</li>
</ul>
<p>This is an amazing opportunity to work with the team who have created and shaped Desktop Java with the chance to influence the future of Java yourself. If you are interested then you can email me via the link below. Please send screenshots or links to any Swing applications you have worked on.</p>
<p><a href="javascript:Transpose_Email('web','jasperpotts.com','Hi from the web') "><img src="/blog/email.png" align="absmiddle"> Email Me</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jasperpotts.com/blog/2007/10/come-join-the-swing-team/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nimbus Early Access</title>
		<link>http://www.jasperpotts.com/blog/2007/10/nimbus-early-access/</link>
		<comments>http://www.jasperpotts.com/blog/2007/10/nimbus-early-access/#comments</comments>
		<pubDate>Mon, 01 Oct 2007 02:00:37 +0000</pubDate>
		<dc:creator>Jasper Potts</dc:creator>
		
		<category><![CDATA[Nimbus]]></category>

		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.jasperpotts.com/blog/2007/10/nimbus-early-access/</guid>
		<description><![CDATA[Finally a version you can all go and play with. Nimbus is coming out as part of &#8220;Java SE 6 update N&#8221; formerly known as the &#8220;Consumer Release&#8221; and &#8220;Project Hamburg&#8221;. Well whatever it is called it contains a decent version of the new Nimbus look and feel. You can go and download it from [...]]]></description>
			<content:encoded><![CDATA[<p>Finally a version you can all go and play with. Nimbus is coming out as part of &#8220;Java SE 6 update N&#8221; formerly known as the &#8220;Consumer Release&#8221; and &#8220;Project Hamburg&#8221;. Well whatever it is called it contains a decent version of the new Nimbus look and feel. You can go and download it from <strong><a href="https://jdk6.dev.java.net/6uNea.html">Java SE 6 Update N Early Access Program</a></strong>. Its is definately not 100% finished yet, there are a few areas that we are still working on:
<ul>
<li>Tabs</li>
<li>Focus handling is missing from Spinner,Slider, Tree, Table and List</li>
<li>FileChooser has a lot of issues</li>
<li>Right to Left for international language support</li>
<li>3rd party component theming</li>
<li>Color theming</li>
<li>Lots of minor things like table gridlines or setContentAreaFilled() support on buttons</li>
<li>Exceptions are thrown if the window or some components get too small</li>
</ul>
<p>Most of these will be fixed in the next EA release or the first beta release. A few of them have been fixed in the last couple weeks, I have just been working on color theming. All colors in Nimbus are derived from a set of UIDefault colors with Hue, Saturation and Brightness offsets. This gives you reasonable control over changing the colors of the Nimbus Look and Feel.
<p align="center"><img src="http://www.jasperpotts.com/blog/wp-content/uploads/2007/10/dark-nimbus.png" width="600" alt="Dark Nimbus" /><font size="-2">Darker Themed Nimbus</font></p>
<h3>Using Nimbus</h3>
<p>There are 3 easy ways to use the Nimbus look and feel:
<ol>
<li>If you query UIManager for a list of available look and feels then Nimbus will show up in the list</li>
<li>Add <code>UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");</code> to your application before creating any Swing components</li>
<li>To specify the L&amp;F from command line, use the following when running your Java application: <code>-Dswing.defaultlaf=com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel</code></li>
</ol>
<p>The reason Nimbus is in the sun.swing&#8230; package is it is not possible to add new API to the javax.swing&#8230; package in a update release. We hope that we can move Nimbus to javax.swing in Java 7 and if it turns out to be popular then we push to make it the default look and feel in 7.  Before 6 update N is final we will work out some way for you to be able to use it now and when it is potentially moved without changing any code.<br />
<h3>If you Find Bugs</h3>
<p>You can search to see if there is an existing at <a href="http://bugs.sun.com/bugdatabase/">Sun Bug Database</a> or you can view a <a href="http://bugs.sun.com/bugdatabase/search.do;jsessionid=5a3cd3da2ba582eef760ee5c4e64?process=1&amp;category=&amp;bugStatus=open&amp;subcategory=&amp;type=&amp;keyword=nimbus">List of open Nimbus Bugs</a>. You are welcome to post bugs here as comments and I will file them if they are not known bugs.<br />
<h3>Other Cool Features of Update N</h3>
<p><strong>Improved performance</strong>
<ul>
<li>The <strong>Quick Starter</strong> feature will prefetch portions of the JRE into memory, substantially decreasing the average JRE cold start-up time (the time that it takes to launch a Java application for the first time after a fresh reboot of a PC).</li>
<li><strong>Hardware acceleration support</strong>: Java SE 6 Update N introduces a fully hardware accelerated graphics pipeline based on the Microsoft Direct3D 9 API, translating into improved rendering of Swing applications which rely on translucency, gradients, arbitrary transformations, and other more advanced 2D operations.</li>
</ul>
<p><strong>Enhanced JRE installation experience</strong> 
<ul>
<li>The <strong>Deployment Toolkit</strong> takes the guess work out of determining what versions of the JRE end users have installed on their PC. It supplies Java based web	applet/application deployers with a simple interface to accomplish Java detection and installation.</li>
<li>The <strong>Kernel</strong> installation mode lets first time Java users run applets and Web Start applications without waiting for the whole JRE download. While the default Kernel installation will work with existing Java applets, application developers have the ability to select libraries that should be installed with the kernel, before the rest of the JRE is installed on the end user&#8217;s system.</li>
<li>For current users of Java SE, the <strong>JRE update mechanism</strong> has also been improved, using a patch-in-place mechanism that translates in a faster and more reliable update process (the patch in place mechanism will take  effect for end users who upgrade from this update release or later to a new update release). As an added benefit, follow-on update releases will no longer be listed as separate items in the Windows &#8220;Add or Remove Programs&#8221; dialog.</li>
<li>A <strong>new Java update download engine</strong> provides end users with the convenience of pausing and resuming the JRE download, and relies on a more reliable download mechanism.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.jasperpotts.com/blog/2007/10/nimbus-early-access/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nimbus almost done</title>
		<link>http://www.jasperpotts.com/blog/2007/09/nimbus-almost-done/</link>
		<comments>http://www.jasperpotts.com/blog/2007/09/nimbus-almost-done/#comments</comments>
		<pubDate>Fri, 07 Sep 2007 23:50:05 +0000</pubDate>
		<dc:creator>Jasper Potts</dc:creator>
		
		<category><![CDATA[Nimbus]]></category>

		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.jasperpotts.com/blog/2007/09/nimbus-almost-done/</guid>
		<description><![CDATA[Finally we are almost done with Nimbus and I am very pleased with the way it looks. There are many small details that need to be pollished and a couple of big ones like tabs but they will all be done by the time it gets released. I thought it might be time to tease [...]]]></description>
			<content:encoded><![CDATA[<p>Finally we are almost done with Nimbus and I am very pleased with the way it looks. There are many small details that need to be pollished and a couple of big ones like tabs but they will all be done by the time it gets released. I thought it might be time to tease you with some screenshots and details to keep you hungry.</p>
<p style="text-align:center"><a href="http://www.flickr.com/photo_zoom.gne?id=1342543887&#038;context=set-72157601901078852&#038;size=o"><img src="http://farm2.static.flickr.com/1007/1342543887_a18d08ed8e.jpg" width="500" height="407" alt="Nimbus Buttons Windows XP" /></a><br />Nimbus Buttons on Windows XP</p>
<h2>Technology</h2>
<p>I think we have also made some exciting technology behind nimbus it&#8217;s not just another standard hard coded swing look and feel<br />
<h3>2D Vector</h3>
<p>All of Nimbus is rendered with 2D vector graphics, there is not one image even for all the icons. This means that the whole of Nimbus is just 56k as a packed jar which is pretty impressive for a whole rich look and feel. </p>
<h3>High DPI Ready <img align="absmiddle" src='http://www.jasperpotts.com/blog/wp-content/uploads/2007/09/hd-ready.png' alt='hd ready' /></h3>
<p>As the whole of Nimbus is drawn with shapes and gradients it can be scaled to any resolution. You will not be able to control this yet but watch for it in the near future.</p>
<h3>Based on Painters</h3>
<p>All painting for components is done with simple stateless implementations of the Painter interface. These painters are stored in the UIDefaults table so they can be replaced if you would like to change the look of components or can be used in your own components if you would like to create a custom table header for example that looks the same as the standard Nimbus one plus something extra.</p>
<h3>Customizable</h3>
<p>All colors, icons and fonts are derived off UIDefaults keys so the whole UI can be customized by changing values in the UiDefaults table. </p>
<h3>Easy to skin 3rd party components to fit in</h3>
<p>All of the colors, fonts, icons, borders and painters are exposed through the UIDefaults table which means they are available to your 3rd part components to help you skin them in a Nimbus style.</p>
<h3>I saved the best for last&#8230;.</h3>
<p>Nimbus was drawn graphicaly in a new tool we have been building. Almost none of it was hand coded. We have built this tool that is like a mini Photoshop or Illustrator that lets you graphicaly draw all the 2D vector graphics for each of the states of the components. Those graphics are then compiled into Java2D painting code which is exposed as simple Painters to the LookAndFeel. It has support for advanced features like sub-pixel acuracy, complex gradients, layers and layer effects like drop shadow and glow. The tool is still something internal that we have hacked together but we are working on getting it opensourced and making it into something you will be able to use. Both for creating new look and feels and for drawing painters that you may want to use anywhere in your application. I am looking forward to being able to release it.</p>
<p>Well I hope you are as excited as I am about Nimbus and can&#8217;t wait to try it out in your own apps. You should not have to wait to long for the first public alpha build. <img src='http://www.jasperpotts.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p style="text-align:center"><a href="http://www.flickr.com/photo_zoom.gne?id=1343432408&#038;context=set-72157601901078852&#038;size=o"><img src="http://farm2.static.flickr.com/1293/1343432408_68490f3728.jpg" width="500" height="411" alt="Nimbus OptionPanes Solaris" /></a><br />Nimbus Option Pane Dialogs on Solaris</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jasperpotts.com/blog/2007/09/nimbus-almost-done/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Alcatraz</title>
		<link>http://www.jasperpotts.com/blog/2007/08/alcatraz/</link>
		<comments>http://www.jasperpotts.com/blog/2007/08/alcatraz/#comments</comments>
		<pubDate>Wed, 22 Aug 2007 17:26:17 +0000</pubDate>
		<dc:creator>Jasper Potts</dc:creator>
		
		<category><![CDATA[Photography]]></category>

		<guid isPermaLink="false">http://www.jasperpotts.com/blog/2007/08/alcatraz/</guid>
		<description><![CDATA[My brother in law is over staying with us so an excuse to go and do some more touristy things like visit Alcatraz.











Slideshow of all photos&#8230;.
]]></description>
			<content:encoded><![CDATA[<p>My brother in law is over staying with us so an excuse to go and do some more touristy things like visit Alcatraz.
<div style="text-align:center">
<a href="http://www.flickr.com/photo_zoom.gne?id=1201644116&#038;context=set-72157601517288555&#038;size=l"><br />
<img style="border: 14px solid #DDDDDD" src="http://farm2.static.flickr.com/1155/1201644116_8dace02de3.jpg"/></a><br />
<a href="http://www.flickr.com/photo_zoom.gne?id=1201720260&#038;context=set-72157601517288555&#038;size=l"><br />
<img style="border: 14px solid #DDDDDD" src="http://farm2.static.flickr.com/1296/1201720260_7c8b2356d8.jpg"/></a><br />
<a href="http://www.flickr.com/photo_zoom.gne?id=1201664732&#038;context=set-72157601517288555&#038;size=l"><br />
<img style="border: 14px solid #DDDDDD" src="http://farm2.static.flickr.com/1302/1201664732_9f4b764422.jpg"/></a><br />
<a href="http://www.flickr.com/photo_zoom.gne?id=1201710228&#038;context=set-72157601517288555&#038;size=l"><br />
<img style="border: 14px solid #DDDDDD" src="http://farm2.static.flickr.com/1364/1201710228_1142bd75dc.jpg"/></a>
</div>
<p>
<h3><a href="http://www.flickr.com/photos/10578458@N00/sets/72157601593077104/show/">Slideshow of all photos&#8230;.</a></h3></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jasperpotts.com/blog/2007/08/alcatraz/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sunny San Francisco</title>
		<link>http://www.jasperpotts.com/blog/2007/08/sunny-san-francisco/</link>
		<comments>http://www.jasperpotts.com/blog/2007/08/sunny-san-francisco/#comments</comments>
		<pubDate>Wed, 22 Aug 2007 17:19:50 +0000</pubDate>
		<dc:creator>Jasper Potts</dc:creator>
		
		<category><![CDATA[Photography]]></category>

		<guid isPermaLink="false">http://www.jasperpotts.com/blog/2007/08/sunny-san-francisco/</guid>
		<description><![CDATA[I finally had a nice clear sunny day in San Francisco and a chance to take a couple pictures.











Slideshow of all photos&#8230;.
]]></description>
			<content:encoded><![CDATA[<p>I finally had a nice clear sunny day in San Francisco and a chance to take a couple pictures.
<div style="text-align:center">
<a href="http://www.flickr.com/photo_zoom.gne?id=1154189274&#038;context=set-72157601517288555&#038;size=l"><br />
<img style="border: 14px solid #DDDDDD" src="http://farm2.static.flickr.com/1218/1154189274_0bab41b32a.jpg"/></a><br/><br />
<a href="http://www.flickr.com/photo_zoom.gne?id=1200054539&#038;context=set-72157601517288555&#038;size=l"><br />
<img style="border: 14px solid #DDDDDD" src="http://farm2.static.flickr.com/1141/1200054539_176e9ada22.jpg"/></a><br/><br />
<a href="http://www.flickr.com/photo_zoom.gne?id=1200301179&#038;context=set-72157601517288555&#038;size=l"><br />
<img style="border: 14px solid #DDDDDD" src="http://farm2.static.flickr.com/1121/1200301179_0039419aa8.jpg"/></a><br/><br />
<a href="http://www.flickr.com/photo_zoom.gne?id=1153256915&#038;context=set-72157601517288555&#038;size=l"><br />
<img style="border: 14px solid #DDDDDD" src="http://farm2.static.flickr.com/1191/1153256915_a6c126814c.jpg"/></a><br/>
</div>
<p>
<h3><a href="http://www.flickr.com/photos/10578458@N00/sets/72157601517288555/show/">Slideshow of all photos&#8230;.</a></h3></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jasperpotts.com/blog/2007/08/sunny-san-francisco/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SVG Shape 2 Java2D Code</title>
		<link>http://www.jasperpotts.com/blog/2007/07/svg-shape-2-java2d-code/</link>
		<comments>http://www.jasperpotts.com/blog/2007/07/svg-shape-2-java2d-code/#comments</comments>
		<pubDate>Sun, 08 Jul 2007 08:10:52 +0000</pubDate>
		<dc:creator>Jasper Potts</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.jasperpotts.com/blog/2007/07/svg-shape-2-java2d-code/</guid>
		<description><![CDATA[A couple weeks ago I needed to write some Java2D code to draw a water droplet. If you have ever tried coding bezier paths off the top of you head it is not the simplest of things and can be frustrating. So I ended up drawing it in Illustrator and saving as SVG. The next [...]]]></description>
			<content:encoded><![CDATA[<p>A couple weeks ago I needed to write some Java2D code to draw a water droplet. If you have ever tried coding bezier paths off the top of you head it is not the simplest of things and can be frustrating. So I ended up drawing it in Illustrator and saving as SVG. The next stage was hacking with some code I had from before to take the path and spit out Java2D code for the shape. I have been thinking since that I could cleanup the code when I get the time and make a little application for extracting path shapes from SVG and writing out the Java2D code for them. Well I finally got the time and here is what I came up with.
<p><img src='http://www.jasperpotts.com/blog/wp-content/uploads/2007/07/shape-extractor.png' alt='SvgShapeExtractor Screen Shot' /></p>
<p><b>Download:<br />
<a href="/blogfiles/SvgShapeExtractor.jar" onClick="javascript:urchinTracker ('/blogfiles/SvgShapeExtractor.jar');">SvgShapeExtractor.jar (Executable Jar)</a><br />
<a href="/blogfiles/SvgShapeExtractorSrc.zip"  onClick="javascript:urchinTracker ('/blogfiles/SvgShapeExtractorSrc.zip');">SvgShapeExtractorSrc.zip (Src)</a></b></p>
<p>Hopefully you will find this useful next time you need to write some Java2D shape code.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jasperpotts.com/blog/2007/07/svg-shape-2-java2d-code/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
