Ticking away again on the Timing Framework
It's been several years since the book Filthy Rich Clients by Chet Haase and Romain Guy was published back in 2008. After reading the book I became a big fan of the Timing Framework that Chet posted at the timingframework project at java.net. Chet had elegantly solved a tricky problem—controlling the timing of animations. But, woe is me, I developed Eclipse plug-ins and Chet's code was targeted for programmers who used Swing.
Wait, I thought, I could probably port this code to SWT. Then I could use it in my Eclipse work.
So that's exactly what I did. I checked out all the code from the timingframework project and started the timingframework-swt project . The code I checked in to that project was a minimal port Chet's library to SWT.
Chet somehow noticed this project and emailed me. Couldn't we combine the two projects? he wondered. Maybe—but it was going to take some serious work that neither of us wanted to do. Chet and I talked again about this face-to-face at JavaOne 2009. Chet was giving a talk at JavaOne and he had uncovered a serious problem with the code's interaction with the Swing timer. A whole new approach to timing sources was needed. Chet moved to Adobe and I moved to SureLogic...time passed...
In early 2011 my attention again turned to Chet's Timing Framework due to work on a game called PlanetBaron. I dug in and began implementing the changes I had envisioned in 2009. I also uncovered a few bugs. I contacted Chet again, and to make a long story short, ended up administrating the Timing Framework project.
I immediately did three things:
- I put out a classic 1.1 release with a few bug fixes for Chet's code (for folks reading Filthy Rich Clients).
- I put out a 2.0 version with my API changes. There is a Swing and SWT release as well as a core release that contains shared non-GUI code.
- I started going through the bugs reported by users over the last three years.
The last made me realize that I had a lot more work to do. So I dug back in and worked hard at the code, including adding a significant JUnit test suite to unit test the codebase. Version 3.0 was released on 13 April. (PlanetBaron is waiting!)
I've started a Wiki to document the changes, but all of Chet's example programs from Filthy Rich Clients have been updated, and are now supported under Swing and SWT. The Javadoc is complete, and its overview explains how to run the demo programs.
The API is significantly different from that described in Filthy Rich Clients but the ideas of the original Timing Framework library still shine through—undimmed by my changes. I'll describe some of the changes, and the forces driving them, in future posts. But until then, head over to the timingframework project at java.net and download the code, try out the cool demos, read the Wiki, and make your Swing or SWT applications "ooze cool."