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

  • Nazmul Idris has created a tutorial on SwingX painters. The painters generated quite a lot of heated discussion and development about half a year ago, and there were passionate talks about restructuring the entire Swing painting pipeline around the painters. It seems that once the big plan was shot down by the Swing team (and quite rightfully so since that would result in breaking a lot of existing code), no effort has been done to search for alternative ways to introduce painters into the core Swing library. The active development of SwingX painters seems to have died pretty much after that.
  • Mikhail Lapshin answers a question posted on Swing forum on how to create menus that pop up only on mouse click (and not on mouse over). While this might confuse a user (i’ve tried a few native Windows applications and they all pop up menus on mouse over), some applications can still find this technique very useful.
  • Eugene Kuleshov posts a riddle on achieving the specific layout with SWT, AWT or Swing. The simple answer is – do not use titled borders and nested panels. This has been long considered a bad design decision that adds unnecessary noise to the form. Use white space, tabbing and separators to create visual groups.
  • Jan Haderka continues working on various parts of SwingX, and this time he presents his improvements on BusyPainter and JXBusyLabel. The demo comes with a very useful option to play with the settings and then generate the matching code (copied to the clipboard). My only recommendation would be to drop some of the irrelevant features (such as trajectory shifts and dimensions) and look at some other ways to convey infinite progress (warning, high visual overload :) )
  • Andres Almiray wraps up version 0.4.3 of GraphicsBuilder, showing its many new features (the multipaints example looks very good) and hints at the forthcoming support for SVG in version 0.4.4.

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

  • Laird Nelson dives into intricacies of keyboard shortcuts, actions maps and focus state inheritance to show you how to make all dialogs and frames to be disposed on pressing the ESC key. Hopefully this will be one of many entries in this series, and the Bricks project will live long and prosper :)
  • Angry Mongoose laments the lack of Swing best practices. It is indeed the unfortunate reality that Swing developers live in. The wealth of well-compiled, updated and comprehensive information available to the consumers of alternative desktop technologies (such as WPF or Flex / Flash / Apollo) is astounding, compared to what is produced by training / marketing / evangelizing departments behind Swing (if any).
  • Chiral Software brings the power of of JBoss, JSF, iText and JFreeChart together, showing how to create PDFs with rendered Swing components. The first part lays the groundwork, and the second part shows how to create vector-based charts.
  • Sergey Malenkov is working on enhancements to the core JColorChooser component, and is asking for the community to step up and weigh in on the design. Unfortunately, the actual designers do not read programmers’ blogs, so this is most probably a lost call. Hopefully, there are some professional designers working on the JavaFX design tool. If it’s designed by the programmers, the end result will not move the designers away from the competing tools.
  • Tim Dalton continues his explorations with Scala, using Swing as the “native” UI toolkit. This time, he takes a look at the newly announced Scene Graph library. While the first example shows just a few shapes and a translucent button, the second one is a little more interesting. Building on his previous example, he shows a rotatable calculator. It would be extremely interesting to know whether the rotated Swing controls continue responding correctly to the mouse events, something that Alex has had quite a few problems with.
  • Andres Almiray continues beefing up the Groovy bindings for Swing, adding more capabilities to the GraphicsBuilder (here, here and here), and showing a nice example of the Linux penguin mascot done in Groovy.

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

  • Dave Gilbert of JFreeChart project follows in the footsteps of Google Chart and provides a servlet that generates embeddable chart images for web applications. While not strictly relevant to Swing, it employs the same approach as outlined by Jacobus Steenkamp in this article from java.net – using Swing as backend to generate images to be displayed in web pages.
  • Ramon Ramos has announced a NetBeans plugin that installs the Synthetica look and feel with matching delegates for custom NetBeans components (editor tabs, viewer tabs and sliding buttons). The plugin itself can be downloaded here, and while the sources are not publicly available, it appears that it uses internal Synthetica APIs to paint the relevant component visuals. Before using this module in your NetBeans RCP applications, make sure that you comply with the licensing terms of Synthetica itself – while the declared license of the plugin is “Netbeans”, some Synthetica skins can not be used without a commercial license. This marks the third look-and-feel plugin for NetBeans after Substance and Napkin.
  • JIDE Software has announced the second major update to JIDE Desktop Application Framework (JDAF). I would really like to see David and his team to have regular updates to the company blog, showcasing their excellent products
  • Eric Burke writes on a more compact way to fire property change events on Swing components. I jumped the gun a little too early in the comments, and his implementation is correct. The compactness sacrifices the readability a little, and i think that i still would prefer the usual way.
  • Sun started (a potentially long) wave of announcements leading to the Update N and JavaFX this week at JavaPolis with the Scene Graph project. Geertjan has a small example over at this Javalobby thread, but i am much more interested to see how this will be supported in the JavaFX designer tool chain. Obviously, the designer must support visual editing and creating the JavaFX code / matching scene graph in the underlying code. But will it be able to go the other way around – be able to parse a Java class with scene graph definition and show the resulting scene at design time? Or even better, will it be able to parse an arbitrary scene graph definition, or still have the same “guarded” blocks in NetBeans?
  • The second announcement from Sun is about the all-Java PDF renderer project. It’s quite illuminating to read the comments on the original announcement and this Javalobby thread. The most interesting part of the project page reads: “The PDF Renderer currently supports a subset 1.4 of the PDF specification. It does not support transparency, various font encodings or fill-in forms. These are the first features we hope the community will tackle“. Applying the usual rules of “it takes 90% of the time to get the first 90% of the features, and then the rest 90% of the time to get the rest 10% of the features”, these are obviously not the easiest parts of the spec (which is not even the latest spec). Will it follow in the footsteps of Flying Saucer, providing support for only a subset of the (quite big) spec? Will it follow in the footsteps of SwingX, with the community finally stepping in after more than two years since the project inception? Hopefully, this will not result in the same fallout as the announcement of SwingX painters, the bitter reaction of WingZ developers and the eventual closing of ZValley company.

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

  • Jasper Potts posted an update on the Nimbus development progress. The screenshot shows the support for the different component sizes (using the same client properties as the latest Aqua drop). As the comments point out, there are quite a few visual inconsistencies which will be hopefully addressed (small and mini scroll bars, inconsistent scaling of arrow icons across different controls, small and mini indeterminate progress bars and text field shadows are among these).
  • The latest drop of Dolphin addresses bug 6438179, providing correct implementation of tray service availability on Unix platforms. Backport to Update N highly desired.
  • Danno Ferrin kicks off the slew of Groovy-related items with his overview of new Swing features in Groovy 1.5.
  • Andres Almiray is back with a few postings of his own. Starting with CSS support in Swing / Groovy applications, he provides a little more information (and a screenshot) on GraphicsPad, and finishes off with updates on builders for WingS and Jide.
  • Geertjan Wielenga blogs about integrating a YouTube player inside NetBeans IDE. A sad tribute to the lack of open-source video playback components in Java (he is using the commercial WebRenderer library). This is still on top of my wishlist for 2008, and is still foolish to hope for.