Here are some Swing links that you might have missed during the last week:

  • Ken Orr explores an interesting usability side of Swing buttons with popup menus. The solution involves using an unpublished “doNotCancelPopup” client property supported by the current implementation of popup handling in core Swing. This may be different in other JVM implementations, and may even break in the future Swing versions (although the later is quite unlikely). Thanks to this post i have also updated the Flamingo command buttons to dismiss popup menu / panel on the second click. The implementation does not use the above client property, since Flamingo has its own code to manage popups.
  • Gregg Bolinger has kicked off a series of posts on blueprints for well-written Swing applications (part 1, part 2, part 3 so far). Project Maddie has been created to provide the collaboration grounds for interested developers, and it will be interesting to see how this pans out after the initial excitement is gone. I have talked about the lack of Swing blueprints in May 2006 (just after JavaOne 2006), and unfortunately nothing has changed as far as the proper platform documentation goes.
  • Jeremy Wood delves into the intricacies of using existing alpha composites to do cross fades between two translucent images. After finding out that the existing alpha composites are not up to the job, he tries doing direct manipulations on the underlying buffer. As this turns off the hardware acceleration, the time and memory performance were disappointing.
  • Gabriele Carcassi provides a solution for registering JavaScript functions to respond to Swing events on applets.
  • Following his experimentations in the SwingX incubator, Matt Nathan has decided to create a separate project for scalable icons.
  • Geertjan Wielenga writes about the JSyntaxPane project, mentioning the supported editor kits, find / replace dialog, code completion configuration, color styles and more.
  • Gregg Bolinger vents his frustration over the opaque and very slow bug fixing process of core Swing bugs. Working on drag-and-drop between tables and lists, he has hit a bug reported in 2003 and not fixed since then. In the next post he presents (a rather poorly formatted) a solution that he found on JavaRanch came up with.
  • Wolfgang Zitzelsberger has announced release 2.8 of Synthetica look-and-feel. New in this release are the SyntheticaSimple2D theme, improved translucency / border support for comboBox / spinner / text components, transparent window support for 6u10, improved RTL component orientation support.
  • Jean Francois Poilpret has posted the slides to his Jazoon 08 presentation on the JSR 296 (AppFramework).
  • Greg Brown shows two examples of building Pivot applications that are wired with JavaScript and Groovy.
  • Jeremy Wood talks about his implementation of Aqua-like preference panel thats supports both single-row and multi-row layouts, along with cross fading between the components.
  • And finally, Collin Fagan kicks off the new series on exploring layout prototyping. The first part documents his attempts to apply XML to the UI layouts. Layout managers surveyed in this part are absolute, table, grid bag and Mig. It certainly looks like the desktop heavyweights (Adobe and Microsoft) have adopted XML as the lingua franca to enable easier collaboration between designer and developer tools. And while the hardcore developers still prefer writing and tweaking those XML files by hand, both sides of the respective toolchains provide tools that are familiar to the target audience.

Here are some Swing links that you might have missed during the last week:

  • Roman Kennke posts an update on the Java2D stack on VxWorks which is now functional enough to run SwingSet2. The followup post has more screenshots of SwingSet2 running under JamaicaVM and OpenJDK stack.
  • Looks like JavaFX development is going to bring performance improvements back to Java2D and Swing applications. Bug 6766336 aims to use SSE / MMX CPU instructions to speed up the software pipeline – i have mentioned that while the new Direct3D-accelerated pipeline is great for the modern hardware, the “enterprise” desktops usually only have integrated cards. Bug 6766342 aims to improve the (closed-source) Ductus rasterizer on anti-aliased paths, while bugs 6767500, 6767506 and 6767516 aim to improve performance of various primitives on the hardware accelerated pipelines.
  • An interesting bug (6740419) has been opened to provide better control over text grid fitting in Java2D. The subject of printing fidelity has been addressed at length last year by Jeff Atwood and Joel Spolsky, and it looks like the designer team behind JavaFX is pushing for Apple-style font rendering in JavaFX. I have already talked about why it is a bad idea, and the introduction of DirectWrite in Windows 7 (more on this in a later post) will obviate the need to invest the precious time in supporting this feature in JavaFX.
  • Jean Francois Poilpret has announced release candidate for release 1.0 of DesignGridLayout.
  • Adam Bien compares Eclipse RCP and NetBeans RCP and leans towards the later in his recommendations. I don’t have any experience with NetBeans RCP, but i’ve been doing heavy Eclipse / SWT work over the last three years at work. I have almost never considered SWT / Eclipse to be more limiting that Swing. In fact, once you understand that it’s better not to fight the platform and instead tweak your design to match the recommended UI guidelines of the platform (re vertical labels in tables), you will find SWT / JFace combination (especially with the Instantiations designer) a very productive and enjoyable environment. Not to mention that you can most certainly create non-Eclipse looking SWT applications, and this is going to be much easier in the near future.
  • Ayman Al-Sairafi has announced release 0.9.3 of the JSyntaxPane component. New in this release – line numbering, reworked Find / Replace dialog and support for Python, C, C++ and Ruby syntax.

Finally, if you are interested in the responses to my posting on the state of core Swing, you’re welcome to read the following:

And Dale Beermann has an interesting series about moving a large Java project to Flash and ActionScript. The first post addresses the reasons why this port has been done, while part 2, part 3 and part 4 (ongoing series) address the specific technical issues in porting Java code to ActionScript.

Here are some Swing links that you might have missed during the last week:

  • Fabrizio Giudici writes about an embedded screencast recorder for Swing application written by Jeremy Wood. It has a custom repaint manager that tracks dirty rectangles, and global event handlers to track mouse and component events.
  • Jeremy Wood himself blogs about customizable toolbars that support drag-and-drop reordering of the items.
  • Matt Nathan has created the first draft of documentation on scalable icons. He starts off by surveying the three different design options that he considered, and then delves deeper into his ScalableIcon interface, showing how to implement and use it.
  • Mirko Stocker writes about Java UI testing with JRuby, comparing SWTBot and Marathon tools.
  • Ken Orr has a tip to use look-and-feel consistent fonts onthe JEditorPane component. A fortunate coincidence had Ken posting this just a few hours after this question has been asked on the Substance forums :)
  • Henry Lander has announced release 2 of the Java Print Dialog Framework.
  • Bernhard Huber writes about integrating Groovy SwingBuilder and the XHtmlRenderer (Flying Saucer) project.
  • The latest feature article on java.net by Joshua A. Davis and Thaddeus Keenan Simmons shows how to integrate OpenGL and Java2D.
  • Jean Francois Poilpret is getting ready to release version 1.0 of DesignGridLayout in a few days, and he has created a five-part series (part 1, part 2, part 3, part 4, part 5) that follows the development takeover of the project.
  • Don DeCoteau was interviewed last week on this site, and he follows up with version 0.9.1 of Sage engine. Noteable additions include map viewer and coverflow viewer available in a standalone jar.
  • Alex Ruiz writes about respecting the EDT rules in the FEST-Swing library. It is great to see this topic getting the attention it deserves, because even veteran Swing developers still have serious misconceptions about EDT rules in particular, and multi-threading issues in general.
  • Christophe Le Besnerais shows how to use the JXLayer library to highlight search results in an Explorer clone demo. JXLayer is written by Alexander Potochkin and it is one of my favourite third-party Swing utilities.
  • Mikael Grev has started writing the media player, and has hit a serious performance issue with translucent windows in 6u10 under Windows. In the followup comments he hints at finding a solution, so perhaps not all is lost yet…
  • Finally, those living around the Bay Area are welcome to attend the free Silicon Valley Code Camp community event. It is going to take place on November 8-9 (this Saturday and Sunday), and among the 116 sessions you can find Alex Ruiz talking about UI testing, Andres Almiray talking about Java2D / Groovy and Groovy SwingBuilder.

All in all, this week has seen more Swing blogosphere activity than JavaFX has seen over the entire last month :)

Here are some Swing links that you might have missed during the last week:

  • Karra Dakshinamurthy has announced release 2.0 of Marathon GUI test tool. It allows to play and record scripts against a Java Swing UI application, and new in this release is support for scripts in JRuby and Jython.
  • Kyle Cordes writes about writing a Swing application using JavaScript and Rhino scripting engine.
  • David Gilbert showcases integration of JFreeChart library with a custom magnifying glass effect based on the JXLayer library.
  • Mauro Carniel overviews the tools available for developing Swing applications, including client-server tier architectures, server communication options, data binding and component suites. The last part is somewhat biased towards the OpenSwing suite, which is not very surprising given that Mauro is its lead developer.
  • Clemens Eisserer continues his award-winning ;) work on the XRender pipeline for Java2D, and this week he’s using the LightBeam testbed for testing the performance improvements on the TransformedBlit part of the pipeline.
  • Daniel Wilson has announced the first release of standalone Swing PDF viewer from the Big Faceless Organization (BFO). It is a commercial component that supports printing, saving, search/selection, forms, bookmarks, reorderable thumbnails, annotations. It has full support for PDFs up to Acrobat 9 and can be controlled from JavaScript.
  • And finally, Jean Francois Poilpret provides an update on his “takeover” of the DesignGridLayout project, fixing the last outstanding high priority bug. He is seeking feedback on the release schedule for the official “big” 1.0 release, contemplating whether it is worth to postpone it to make room for a few enhancement requests.