<?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>Pixel Perfect</title>
	<atom:link href="http://dlemmermann.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://dlemmermann.wordpress.com</link>
	<description>Where pixels have a home</description>
	<lastBuildDate>Wed, 18 May 2011 15:00:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='dlemmermann.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Pixel Perfect</title>
		<link>http://dlemmermann.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://dlemmermann.wordpress.com/osd.xml" title="Pixel Perfect" />
	<atom:link rel='hub' href='http://dlemmermann.wordpress.com/?pushpress=hub'/>
		<item>
		<title>The Best Swing Look &amp; Feel: BizLaf</title>
		<link>http://dlemmermann.wordpress.com/2011/05/10/the-best-swing-look-feel-bizlaf/</link>
		<comments>http://dlemmermann.wordpress.com/2011/05/10/the-best-swing-look-feel-bizlaf/#comments</comments>
		<pubDate>Tue, 10 May 2011 09:39:25 +0000</pubDate>
		<dc:creator>dlemmermann</dc:creator>
				<category><![CDATA[Collapp]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Swing]]></category>

		<guid isPermaLink="false">http://dlemmermann.wordpress.com/?p=94</guid>
		<description><![CDATA[I recently started using the look and feel library BizLaf of Centigrade GmbH (Germany) and I have come to the conclusion that, after 13 years of programming Swing UIs, this is by far the best look and feel library for Java that I have ever used. Reason enough to blog about it and to share my [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dlemmermann.wordpress.com&amp;blog=5980131&amp;post=94&amp;subd=dlemmermann&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I recently started using the look and feel library <a href="http://www.centigrade.de/en/products/bizlaf-stock-look-and-feel">BizLaf of Centigrade GmbH (Germany)</a> and I have come to the conclusion that, after 13 years of programming Swing UIs, this is by far the best look and feel library for Java that I have ever used. Reason enough to blog about it and to share my thoughts.</p>
<h1>Prologue</h1>
<p>For the last 2 and a half years I have been working on my very own software project called <a title="Collapp Sponsor Search" href="http://dlemmermann.wordpress.com/2011/01/28/collapp-sponsor-search/">&#8220;Collapp&#8221; for collaborative project planning</a>. I have made it my mission to make it one of the most professional looking applications ever written for Java (this is probably the reason why I still haven&#8217;t been able to release it). To me this means that the application should look polished on all platforms and at the same time feel natively to the platform it runs on. On a MacIntosh it should look like a Mac application (e.g. iTunes, iWeb, iPhoto, &#8230;) with typical Mac features (unified toolbar, sourcelist, &#8230;). On Windows it should look like a Windows application with the frame containing the menubar, and so on. It should be noted that Windows generally allows a higher degree of freedom when it comes to UI design (this can be good or bad).</p>
<h1>Macintosh</h1>
<p>For the Mac UI I was very lucky that I could use Ken Orr&#8217;s outstanding <a href="http://code.google.com/p/macwidgets/">MacWidgets </a>library. It gave me a great head start and I almost instantly looked at an application that fit right onto Macs. So far so good, unfortunately it is not very usable for Windows. The MacWidgets components really only work nicely on Mac, which in return shows how much attention to detail the Apple engineers put into the Aqua UI. Everything works hand in hand (e.g. the Window title and the toolbar appear as a single component / panel).</p>
<div id="attachment_72" class="wp-caption aligncenter" style="width: 490px"><a href="http://dlemmermann.files.wordpress.com/2011/01/screen-capture.png"><img class="size-full wp-image-72  " title="screen-capture" src="http://dlemmermann.files.wordpress.com/2011/01/screen-capture.png?w=480&#038;h=328" alt="Collapp on Mac with action items" width="480" height="328" /></a><p class="wp-caption-text">Collapp running on MacIntosh showing action items</p></div>
<h1>Windows / Linux</h1>
<p>So, what to do on Windows and Linux? Plan A was to use the Open Source look and feel project &#8220;<a title="Seaglass" href="http://code.google.com/p/seaglass/" target="_blank">Seaglass</a>&#8220;. I presented this solution at JavaOne 2010 in San Francisco (Black Eyed Peas rocked!!!!) and for a long time I was very confident that I would end up using this approach. However, the development activities on this project slowed down quite a bit and there were always these little things that just didn&#8217;t seem right. Performance was also a big issue. Collapp felt quite sluggish when using Seaglass.</p>
<h1>BizLaf</h1>
<p>I started to get worried that I would end up with no UI strategy for non-Mac platforms, but then I read on Jonathan Giles&#8217; excellent blog &#8220;<a href="http://jonathangiles.net/blog/" target="_blank">Java Desktop Links of the Week</a>&#8221; about <a href="http://www.centigrade.de/en/products/bizlaf-stock-look-and-feel">BizLaf</a>, a commercial look and feel implementation for Swing. I was first put off by the idea that I would have to pay for it, but still decided to evaluate it. I must say that BizLaf has been able to convince me 100%, because:</p>
<ul>
<li>It looks <span style="text-decoration:underline;">polished and professional</span>. One can easily see that very talented designers had their say in the development of BizLaf.</li>
<li>It is extremely <span style="text-decoration:underline;">easy to integrate and use</span>. Simply call the standard UIManager.setLookAndFeel() method and then set a &#8220;style&#8221; on your components.</li>
<li>It is <span style="text-decoration:underline;">very fast</span>. According to Centigrade this is because it runs on top of their L&amp;F engine &#8220;Cezanne&#8221;. I can confirm that it performs excellent even on my old company laptop running Windows XP.</li>
<li>It uses a <span style="text-decoration:underline;">semantic approach</span>, which means that BizLaf &#8220;knows&#8221; whether a panel is just a simple panel or a toolbar, or a header, or a status bar. Each one of them will be rendered differently.</li>
</ul>
<p>The following screenshot shows the result of my transition to BizLaf. I am very pleased with the result and no longer have to worry that Collapp will run on Mac only (missing out the other 90% of the market).</p>
<div id="attachment_140" class="wp-caption aligncenter" style="width: 490px"><a href="http://dlemmermann.files.wordpress.com/2011/05/bizlaf-snapshot.png"><img class="size-full wp-image-140" title="BizLaf Snapshot" src="http://dlemmermann.files.wordpress.com/2011/05/bizlaf-snapshot.png?w=480&#038;h=368" alt="collapp and bizlaf" width="480" height="368" /></a><p class="wp-caption-text">Collapp action item list using BizLaf</p></div>
<h1>Usage</h1>
<p>Using BizLaf requires a little bit more code compared to other look and feels. In this sense it is actually not &#8220;pluggable&#8221; because of the extra code required. However, considering the benefits I believe this is an OK price to pay. In my code I now often see statements like this:</p>
<pre><span style="color:#3366ff;">JPanel panel = new JPanel(); </span>
<span style="color:#3366ff;">if (Collapp.isAqua()) { <span style="color:#339966;">// runs on MacIntosh</span> </span>
<span style="color:#3366ff;"> panel.setBackground(Color.LIGHT_GRAY); </span>
<span style="color:#3366ff;">} else { <span style="color:#339966;">// runs on other platform</span> </span>
<span style="color:#3366ff;"> BizLafControls.get().setStyle(panel, BizLafStyles.HEADER); </span>
<span style="color:#3366ff;">} </span></pre>
<p>In this example you can see &#8220;semantics&#8221;. BizLaf makes the panel look like a header panel. Currently there is not a lot of documentation for BizLaf as it is still in an early access state, but the PDF files that contain annotated example screens are really all that you need.</p>
<h1>Summary</h1>
<p>To wrap this up. I can highly recommend BizLaf as your look and feel of choice if you are in the market for rich client applications that need to satisfy high-end demands. The price for BizLaf varies between 1,800 Euros for the &#8221;Basic&#8221; license and 8,000 Euros for the &#8220;professional&#8221; version. The difference is in the support and also, and this is important to know, in the feature set. For example, the &#8220;Search Field&#8221; style for text fields is not part of &#8220;Basic&#8221;.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dlemmermann.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dlemmermann.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dlemmermann.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dlemmermann.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dlemmermann.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dlemmermann.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dlemmermann.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dlemmermann.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dlemmermann.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dlemmermann.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dlemmermann.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dlemmermann.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dlemmermann.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dlemmermann.wordpress.com/94/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dlemmermann.wordpress.com&amp;blog=5980131&amp;post=94&amp;subd=dlemmermann&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dlemmermann.wordpress.com/2011/05/10/the-best-swing-look-feel-bizlaf/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2c9b323c1713869c0e3170aecd7ba5f9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dlemmermann</media:title>
		</media:content>

		<media:content url="http://dlemmermann.files.wordpress.com/2011/01/screen-capture.png" medium="image">
			<media:title type="html">screen-capture</media:title>
		</media:content>

		<media:content url="http://dlemmermann.files.wordpress.com/2011/05/bizlaf-snapshot.png" medium="image">
			<media:title type="html">BizLaf Snapshot</media:title>
		</media:content>
	</item>
		<item>
		<title>Collapp Sponsor Search</title>
		<link>http://dlemmermann.wordpress.com/2011/01/28/collapp-sponsor-search/</link>
		<comments>http://dlemmermann.wordpress.com/2011/01/28/collapp-sponsor-search/#comments</comments>
		<pubDate>Fri, 28 Jan 2011 14:15:07 +0000</pubDate>
		<dc:creator>dlemmermann</dc:creator>
				<category><![CDATA[Collapp]]></category>
		<category><![CDATA[FlexGantt]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Swing]]></category>

		<guid isPermaLink="false">http://dlemmermann.wordpress.com/?p=70</guid>
		<description><![CDATA[I have been working on Collapp on and off for some time now and made a lot of progress, but it is still not production quality. To change this I am now trying to find a sponsor for this project. I really need to get paid so that I can commit the necessary time to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dlemmermann.wordpress.com&amp;blog=5980131&amp;post=70&amp;subd=dlemmermann&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have been working on Collapp on and off for some time now and made a lot of progress, but it is still not production quality. To change this I am now trying to find a sponsor for this project. I really need to get paid so that I can commit the necessary time to this project.</p>
<p>Collapp is a solution for collaborative project planning. Its goal is to have project leads and project team members all use the same tool. This way everybody is always informed about the current state of the project. Users can be members in several projects at the same time, they can also be regular team members in one project and team leads in other projects.</p>
<p>The ideal candidate would be a larger enterprise that wants to have their own custom solution for project planning, something tightly integrated into the rest of their processes (IT or business side). The current state of Collapp would give any company a great jumpstart, yet it is at such an early stage that it can be easily adjusted in order to meet any requirement imposed by a possible sponsor. Anyone interested? Feel free to contact me directly at dlemmermann@gmail.com</p>
<p>Some technical background: Collapp is a client / server solution utilizing the Glassfish application server (can be replaced by any JEE compliant app server). The client is a fat/rich client, which can run anywhere where Java can be run. Java 6, EJB 3.0. Deployment via Java Webstart or standard installer. A web client can be easily added if desired. Persistence layer: MySQL with Hibernate (can also be replaced). User administration: LDAP via JNDI.</p>
<p>Here are brand new snapshots to wet your appetite (taken on my Mac, it of course also runs on Windows, Linux, ,etc&#8230;.):</p>
<p><a href="http://dlemmermann.files.wordpress.com/2011/01/screen-capture-3.png"><a href="http://dlemmermann.files.wordpress.com/2011/01/screen-capture.png"><img title="screen-capture" src="http://dlemmermann.files.wordpress.com/2011/01/screen-capture.png?w=480&#038;h=328" alt="" width="480" height="328" /><a href="http://dlemmermann.files.wordpress.com/2011/01/screen-capture-3.png"><img class="alignleft size-full wp-image-76" title="screen-capture-3" src="http://dlemmermann.files.wordpress.com/2011/01/screen-capture-3.png?w=480&#038;h=364" alt="" width="480" height="364" /></a></a><a href="http://dlemmermann.files.wordpress.com/2011/01/screen-capture-4.png"><img class="alignleft size-full wp-image-81" title="screen-capture-4" src="http://dlemmermann.files.wordpress.com/2011/01/screen-capture-4.png?w=480&#038;h=328" alt="" width="480" height="328" /><span style="color:#000000;"><a href="http://dlemmermann.files.wordpress.com/2011/01/screen-capture-2.png"><img title="screen-capture-2" src="http://dlemmermann.files.wordpress.com/2011/01/screen-capture-2.png?w=480&#038;h=328" alt="" width="480" height="328" /></a></span></a></a><a href="http://dlemmermann.files.wordpress.com/2011/01/screen-capture-1.png"><img class="alignleft size-full wp-image-74" title="screen-capture-1" src="http://dlemmermann.files.wordpress.com/2011/01/screen-capture-1.png?w=480&#038;h=328" alt="" width="480" height="328" /></a></p>
<div></div>
<p>Here is my resume if you want to know more about me: <a href='http://dlemmermann.files.wordpress.com/2011/01/dirklemmermannresume2010.pdf'>DirkLemmermannResume</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dlemmermann.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dlemmermann.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dlemmermann.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dlemmermann.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dlemmermann.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dlemmermann.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dlemmermann.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dlemmermann.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dlemmermann.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dlemmermann.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dlemmermann.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dlemmermann.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dlemmermann.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dlemmermann.wordpress.com/70/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dlemmermann.wordpress.com&amp;blog=5980131&amp;post=70&amp;subd=dlemmermann&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dlemmermann.wordpress.com/2011/01/28/collapp-sponsor-search/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2c9b323c1713869c0e3170aecd7ba5f9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dlemmermann</media:title>
		</media:content>

		<media:content url="http://dlemmermann.files.wordpress.com/2011/01/screen-capture.png" medium="image">
			<media:title type="html">screen-capture</media:title>
		</media:content>

		<media:content url="http://dlemmermann.files.wordpress.com/2011/01/screen-capture-3.png" medium="image">
			<media:title type="html">screen-capture-3</media:title>
		</media:content>

		<media:content url="http://dlemmermann.files.wordpress.com/2011/01/screen-capture-4.png" medium="image">
			<media:title type="html">screen-capture-4</media:title>
		</media:content>

		<media:content url="http://dlemmermann.files.wordpress.com/2011/01/screen-capture-2.png" medium="image">
			<media:title type="html">screen-capture-2</media:title>
		</media:content>

		<media:content url="http://dlemmermann.files.wordpress.com/2011/01/screen-capture-1.png" medium="image">
			<media:title type="html">screen-capture-1</media:title>
		</media:content>
	</item>
		<item>
		<title>Jazoon 2010</title>
		<link>http://dlemmermann.wordpress.com/2010/06/01/jazoon-2010/</link>
		<comments>http://dlemmermann.wordpress.com/2010/06/01/jazoon-2010/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 07:22:53 +0000</pubDate>
		<dc:creator>dlemmermann</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">https://dlemmermann.wordpress.com/2010/06/01/jazoon-2010/</guid>
		<description><![CDATA[Jazoone 2010 is about to start. Keynote time.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dlemmermann.wordpress.com&amp;blog=5980131&amp;post=69&amp;subd=dlemmermann&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Jazoone 2010 is about to start. Keynote time.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dlemmermann.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dlemmermann.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dlemmermann.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dlemmermann.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dlemmermann.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dlemmermann.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dlemmermann.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dlemmermann.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dlemmermann.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dlemmermann.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dlemmermann.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dlemmermann.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dlemmermann.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dlemmermann.wordpress.com/69/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dlemmermann.wordpress.com&amp;blog=5980131&amp;post=69&amp;subd=dlemmermann&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dlemmermann.wordpress.com/2010/06/01/jazoon-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2c9b323c1713869c0e3170aecd7ba5f9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dlemmermann</media:title>
		</media:content>
	</item>
		<item>
		<title>Collapp / MacWidgets @ JavaOne 2010</title>
		<link>http://dlemmermann.wordpress.com/2010/05/15/collapp-macwidgets-javaone-2010/</link>
		<comments>http://dlemmermann.wordpress.com/2010/05/15/collapp-macwidgets-javaone-2010/#comments</comments>
		<pubDate>Sat, 15 May 2010 12:32:37 +0000</pubDate>
		<dc:creator>dlemmermann</dc:creator>
				<category><![CDATA[Collapp]]></category>
		<category><![CDATA[FlexGantt]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Swing]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dlemmermann.wordpress.com/?p=63</guid>
		<description><![CDATA[I have been notified this week that my talk about &#8220;Attractive and Portable MacOS X Swing Clients for J2EE&#8221; has been accepted for JavaOne 2010 in San Francisco. The conference takes place in September and I will try hard to have a feature-complete application to show as a case study. Please let me know if [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dlemmermann.wordpress.com&amp;blog=5980131&amp;post=63&amp;subd=dlemmermann&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://dlemmermann.files.wordpress.com/2010/05/sunlogo.gif"><img class="alignleft size-full wp-image-65" title="sunLogo" src="http://dlemmermann.files.wordpress.com/2010/05/sunlogo.gif?w=480&#038;h=50" alt="" width="480" height="50" /></a>I have been notified this week that my talk about &#8220;Attractive and Portable MacOS X Swing Clients for J2EE&#8221; has been accepted for JavaOne 2010 in San Francisco. The conference takes place in September and I will try hard to have a feature-complete application to show as a case study.</p>
<p>Please let me know if you are also attending JavaOne and would like to meet me there to discuss concepts, cooperations, contracting, consulting, UI stuff, Collapp, FlexGantt, etc&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dlemmermann.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dlemmermann.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dlemmermann.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dlemmermann.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dlemmermann.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dlemmermann.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dlemmermann.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dlemmermann.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dlemmermann.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dlemmermann.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dlemmermann.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dlemmermann.wordpress.com/63/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dlemmermann.wordpress.com/63/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dlemmermann.wordpress.com/63/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dlemmermann.wordpress.com&amp;blog=5980131&amp;post=63&amp;subd=dlemmermann&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dlemmermann.wordpress.com/2010/05/15/collapp-macwidgets-javaone-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2c9b323c1713869c0e3170aecd7ba5f9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dlemmermann</media:title>
		</media:content>

		<media:content url="http://dlemmermann.files.wordpress.com/2010/05/sunlogo.gif" medium="image">
			<media:title type="html">sunLogo</media:title>
		</media:content>
	</item>
		<item>
		<title>Collapp &#8211; Collaborative Project Planning</title>
		<link>http://dlemmermann.wordpress.com/2010/01/20/collapp-collaborative-project-planning/</link>
		<comments>http://dlemmermann.wordpress.com/2010/01/20/collapp-collaborative-project-planning/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 14:31:59 +0000</pubDate>
		<dc:creator>dlemmermann</dc:creator>
				<category><![CDATA[Collapp]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Swing]]></category>

		<guid isPermaLink="false">http://dlemmermann.wordpress.com/?p=19</guid>
		<description><![CDATA[This blog talks about Collapp, a collaborative project planning software solution written in Java / Swing. Collapp takes advantage of MacWidgets, a framework for creating applications that fit nicely into MacOS X.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dlemmermann.wordpress.com&amp;blog=5980131&amp;post=19&amp;subd=dlemmermann&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:left;"><img class="alignleft size-thumbnail wp-image-55" title="Collapp Logo" src="http://dlemmermann.files.wordpress.com/2010/01/logo.png?w=81&#038;h=96" alt="collapp logo" width="81" height="96" />This is a little status update on Collapp, formerly known as &#8220;Planner&#8217;s Workbench&#8221;. I figured that the name was simply too long, so I renamed it to something shorter and more catchy. Please feel free to leave a comment regarding the naming. I still consider it a working title and I am open for alternatives. Important is only that it is a one word name.</p>
<p style="text-align:left;">This post is an update because Collapp <a href="http://explodingpixels.wordpress.com/2009/03/23/swing-can-be-oh-so-sweet/" target="_blank">has been featured before</a> on Ken Orr´s blog. Ken is the author of <a href="http://code.google.com/p/macwidgets/" target="_blank">MacWidgets</a>, a framework for creating Swing clients that look right on MacOS X. Collapp makes very heavy use of MacWidgets, as you can see in the snapshots below.</p>
<p style="text-align:left;">The initial plan was to release a first public beta of Collapp in the summer of 2009. But unfortunately license sales of my <a href="http://www.dlsc.com" target="_blank">FlexGantt UI framework </a>for Java/Swing declined and I had to start freelancing again. I am now working part-time for Credit Suisse in Zurich. This means less time for coding and even worse: it gave me plenty of ideas for new features. Especially since the poor guys at Credit Suisse carry quite a burden in regards to project planning. Right now I think that nobody needs my new app more than they do.</p>
<p style="text-align:center;"><a style="text-decoration:none;" href="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-51.png"><img class="size-full wp-image-25 aligncenter" title="Collapp: Home Screen" src="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-51.png?w=480&#038;h=310" alt="" width="480" height="310" /></a></p>
<p>The idea behind Collapp is to provide a single planning tool both for the project leader and the team members. A project lead can create a project, add team members, create and assign tasks. Team members can view the tasks assigned to them and report feedback via comments or the percentage complete attribute. The next snapshot shows the most important view provided by Collapp for regular team members, the &#8220;Today&#8221; list. Here the team member can see which tasks, todo items, and calendar entries, are due today. A view like this one facilitates the &#8220;<a href="http://en.wikipedia.org/wiki/Getting_Things_Done" target="_blank">Get Things Done (GTD)</a>&#8221; approach.</p>
<p><a href="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-11.png"><img class="aligncenter size-full wp-image-23" title="Collapp: Today List" src="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-11.png?w=480&#038;h=310" alt="" width="480" height="310" /></a></p>
<p>The next screen shows the todo browser. It uses the &#8220;column browser&#8221; feature that most of us know from ITunes. The difference between todos and tasks is that tasks are created by the project lead as part of an overall project plan, while todos can be created by anyone. Tasks are high level (e.g. &#8220;deploy application&#8221;), while todos are fine-grained (&#8220;talk to operations team about good deployment date&#8221;). Software developers can think of todos as issues / tickets, but without the whole workflow behind them. The task screen will look very similar to the todo screen but it is not done, yet.</p>
<p><a href="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-11.png"></a><a href="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-5.png"><img class="aligncenter size-full wp-image-20" title="Collapp: User Tasks" src="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-5.png?w=480&#038;h=310" alt="" width="480" height="310" /></a></p>
<p>Something I noticed many times is that project leads often do not have information about the availability of their resources. It is quite common that a team member will say that he was unable to complete a task because of this and that and that the project lead should have known that. Yes, in a perfect world, maybe. In the real world the project lead works on many things at the same time and can&#8217;t possible remember the schedule of every team member.</p>
<p>Collapp offers two calendars for each user. One to model the work week (mo-fr 8am-12pm, 1pm-5pm) and one for actual appointments, meetings, general unavailability. This information will be visible to the project lead in the Gantt chart screen (not done, yet).</p>
<p><a href="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-5.png"></a><a style="text-decoration:none;" href="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-9.png"><img class="aligncenter size-full wp-image-22" title="Collapp: User Calendar" src="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-9.png?w=480&#038;h=310" alt="" width="480" height="310" /></a></p>
<p>So far we have seen list views (today list), table views (todo browser), and graphical views (calendar). A fourth kind that is very typical for any database driven application is a form view. The screen below shows how this looks like in Collapp. The user has to unlock a form before making any changes. This ensures that two users are not making changes at the same time, hence overriding each others changes. The form shown in the screen is the one used for making changes to the general project settings (start time, end time, project owner, visiblity, etc&#8230;).</p>
<p><a href="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-8.png"><img class="aligncenter size-full wp-image-21" title="Collapp: Project Settings" src="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-8.png?w=480&#038;h=310" alt="" width="480" height="310" /></a></p>
<p>Whenever I used project planning software (especially MSProject) I soon got the feeling of being lost. I didn&#8217;t know &#8220;where&#8221; I was in my project, meaning I didn&#8217;t know whether I am in a certain phase or which milestones have actually been reached. I always missed a summary / overview feature. To address this issue I added a &#8220;Timeline&#8221; view to Collapp, which is shown below. This view is still under heavy development but I think you can already see where I am going with this.</p>
<p><a href="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-8.png"></a><a href="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-14.png"><img class="aligncenter size-full wp-image-24" title="Collapp: Project Timeline" src="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-14.png?w=480&#038;h=310" alt="" width="480" height="310" /></a></p>
<p>This is it for now. Any feedback is very welcome. Let me know which live-saving feature you miss the most in existing project planning software and I will see if I can address it with Collapp.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dlemmermann.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dlemmermann.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dlemmermann.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dlemmermann.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dlemmermann.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dlemmermann.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dlemmermann.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dlemmermann.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dlemmermann.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dlemmermann.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dlemmermann.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dlemmermann.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dlemmermann.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dlemmermann.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dlemmermann.wordpress.com&amp;blog=5980131&amp;post=19&amp;subd=dlemmermann&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dlemmermann.wordpress.com/2010/01/20/collapp-collaborative-project-planning/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2c9b323c1713869c0e3170aecd7ba5f9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dlemmermann</media:title>
		</media:content>

		<media:content url="http://dlemmermann.files.wordpress.com/2010/01/logo.png?w=126" medium="image">
			<media:title type="html">Collapp Logo</media:title>
		</media:content>

		<media:content url="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-51.png" medium="image">
			<media:title type="html">Collapp: Home Screen</media:title>
		</media:content>

		<media:content url="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-11.png" medium="image">
			<media:title type="html">Collapp: Today List</media:title>
		</media:content>

		<media:content url="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-5.png" medium="image">
			<media:title type="html">Collapp: User Tasks</media:title>
		</media:content>

		<media:content url="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-9.png" medium="image">
			<media:title type="html">Collapp: User Calendar</media:title>
		</media:content>

		<media:content url="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-8.png" medium="image">
			<media:title type="html">Collapp: Project Settings</media:title>
		</media:content>

		<media:content url="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-14.png" medium="image">
			<media:title type="html">Collapp: Project Timeline</media:title>
		</media:content>
	</item>
		<item>
		<title>Advanced Java Webstart Login Dialog</title>
		<link>http://dlemmermann.wordpress.com/2010/01/14/advanced-java-webstart-login-dialog/</link>
		<comments>http://dlemmermann.wordpress.com/2010/01/14/advanced-java-webstart-login-dialog/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 22:41:09 +0000</pubDate>
		<dc:creator>dlemmermann</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Please Help Me!]]></category>
		<category><![CDATA[Swing]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[Webstart]]></category>

		<guid isPermaLink="false">http://dlemmermann.wordpress.com/?p=3</guid>
		<description><![CDATA[How Java Webstart fails once again ... after all these years.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dlemmermann.wordpress.com&amp;blog=5980131&amp;post=3&amp;subd=dlemmermann&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I am currently working on a project planning software that &#8220;tries&#8221; to utilize Java Webstart as its deployment method. Nowadays it is common practice that login dialogs also allow new users to register with the application and existing users to retrieve their password if they forgot it. When I was trying to implement these features I ran into all kinds of issues and finally gave up.</p>
<p>The problem is that login dialogs for webstart applications are stupid. They are not aware of the context in which they are running. All they &#8220;know&#8221; is that they were shown to the user as a result of a callback from the server. The callback is asking for a user name and a password. This is fine for a simple standard login, but not for an advanced one. How can a new user be created on the server without some kind of connection to the server? Especially if the server is not even known, which is the case when running the webstart client inside an application client container (ACC). The whole idea behind the ACC is to provide injection capabilities, hence freeing the application developer from configuring the initial context.</p>
<p>The following screenshot shows the standard login screen. When the user clicks on the &#8220;Login&#8221; button the callback object will be populated with the user name and password. The application then simply continues if the login was successful. Another issue I had here was that I could not find out wether the login failed or not. On failure the dialog would simply disappear.</p>
<p><a href="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-2.png"><img class="aligncenter size-full wp-image-5" title="screen-capture-2" src="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-2.png?w=500&#038;h=437" alt="" width="500" height="437" /></a></p>
<p>The next screen shows the controls used for registering a new user. I was unable to find a way to actually call something on the server so that the new user would be added. Please let me know if anyone knows a solution for this.</p>
<p><a href="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-3.png"><img class="aligncenter size-full wp-image-6" title="screen-capture-3" src="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-3.png?w=500&#038;h=437" alt="" width="500" height="437" /></a>The last screen is used for retrieving a lost password. Once again I ran into problems. The server will not do anything without an authorized user. A solution would be to create a technical user, e.g. &#8220;sys&#8221; with password &#8220;sys&#8221;. These values could be put into the callback object and sent back to the server. But how do I let the application know that a password retrieval is in progress? Where do I trigger the code needed to send a mail that contains the user&#8217;s password?</p>
<p><a href="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-4.png"><img class="aligncenter size-full wp-image-7" title="screen-capture-4" src="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-4.png?w=500&#038;h=437" alt="" width="500" height="437" /></a>Once again, any help would be much appreciated. I still have a couple of months of coding ahead of me before the first release. I would hate to give up on using Webstart as a deployment vehicle.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dlemmermann.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dlemmermann.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dlemmermann.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dlemmermann.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dlemmermann.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dlemmermann.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dlemmermann.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dlemmermann.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dlemmermann.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dlemmermann.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dlemmermann.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dlemmermann.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dlemmermann.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dlemmermann.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dlemmermann.wordpress.com&amp;blog=5980131&amp;post=3&amp;subd=dlemmermann&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dlemmermann.wordpress.com/2010/01/14/advanced-java-webstart-login-dialog/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2c9b323c1713869c0e3170aecd7ba5f9?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dlemmermann</media:title>
		</media:content>

		<media:content url="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-2.png" medium="image">
			<media:title type="html">screen-capture-2</media:title>
		</media:content>

		<media:content url="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-3.png" medium="image">
			<media:title type="html">screen-capture-3</media:title>
		</media:content>

		<media:content url="http://dlemmermann.files.wordpress.com/2010/01/screen-capture-4.png" medium="image">
			<media:title type="html">screen-capture-4</media:title>
		</media:content>
	</item>
	</channel>
</rss>
