In the spirit of transparency and openness, the submission process for EclipseCon 2009 conference is very refreshing. As the main site says
The selection is done transparently and in the open. Specifically, all submissions are made through our submission system. Everyone in the community (including you) is invited to review the submissions, ask for more information, provide comments and critiques – just as everyone in community is invited and encouraged to do for Eclipse bugs and features.
I have just submitted a proposal to talk about our experiences in developing a visual designer for form-based applications, built on top of rich Eclipse tools such as the core platform itself, as well as JDT, EMF, GEF, VE and JEM. The proposal is called “On The Shoulders of Giants: Harnessing the Power of Eclipse Enterprise Ecosystem“, and you are more than welcome to leave comments on the entry. Here is the abstract:
Code reuse in large projects is not just a trendy buzzword. If you can build upon solid, evolving and well tested foundations that are developed and maintained by committed teams, you have much less code to test, integrate and support. The Eclipse Ecosystem is a prime example of an extremely rich foundation for building enterprise grade applications, and this talk is going to show the diverse, yet interoperable technologies that allow businesses to concentrate on their specific requirements without reinventing the plumbing layers.
A part of a larger client-facing offering, Amdocs Smart Client Designer is an advanced visual designer that allows seamless collaboration between designers and developers in creating complex business form-based applications for Support Call Centers in the telecommunication industry. Harnessing the power of such technologies as JDT, GEF, EMF, JEM and VE has allowed us to dramatically reduce the effort to build the basic blocks of the tool (such as persistence, code generation and java syntax tree manipulations). In addition, core platform features such as task and job managers, builders, natures, markers and many more are enabling user-centric asynchronous business flows in a clean, simple and maintainable way.
Building on top of a vibrant and evolving ecosystem has been a pleasant experience, further strengthened by a recent migration to Java 6, Eclipse 3.4 and the latest version of the dependent plugins. In addition, we are going to talk about the “Eclipse way” of designing the flows, where the existing core features guide the design process to facilitate familiar flows and simpler implementation.
If you are developing a large Eclipse-based offering, or considering Eclipse as the vehicle for your next enterprise-grade tool, come to our session to hear about our experiences in this area.
This blog is about putting pixels on screen. If i need to choose between getting a bunch of finished images from a graphics designer and hand coding each and every pixels in the code, you know my choice. We must, however, acknowledge our limitations and strive to better our understanding of what a good design is. Only exceedingly few have equal talent and passion for both design and programming, but the rest of us can at least try and learn from the best minds on the other side of “the fence”.
Below you will find links to twenty design sites and blogs that i currently follow. Unfortunately, the lack of time has me use an RSS reader, and as such a site that does not publish full article feeds is simply not going to make it. This might weed out a few good sites, but that is an unfortunate consequence of the information deluge age that we are living in.
The sites are listed alphabetically – click on the banner to visit the site and to subscribe to its RSS feed.
1. 84 Bytes

2. Architectures of Control

3. Beeex

4. Boxes and Arrows

5. Designm.ag

6. Digital Artist Toolbox

7. Freelance Folder

8. Fuel Your Creativity

9. Functioning Form

10. Function Web Design

11. Graphics Design Blog

12. Hongkiat

13. Just Creative Design

14. Observin

15. Outlaw Design Blog

16. Positive Space

17. Smashing Magazine

18. Usability Counts

19. Usability Post

20. Vandelay Design

Are SWT and Eclipse moving away from native widgets? If you follow the development mailing lists of the relevant Eclipse subprojects, this might be one of the more interesting questions for Java UI developers.
Much has been said over the past few years about the relative merits of Swing and SWT. SWT has always prided itself on using native widgets (wherever possible), sporting better platform fidelity and performance. In the meantime, the competitive pressure from SWT has, in the view of many observers, made Sun invest much-needed attention in Swing. It zigzagged a little in its priorities regarding native look-and-feels; much work has been done in Mustang for Windows and GTK LAFs, but the few glaring remaining bugs have been ignored ever since. However, Swing, AWT and Java2D teams at Sun have been at work bringing significant performance improvements (and not only for hardware-accelerated pipelines), using native font rasterizer on Windows, support for translucent and shaped windows and more.
The flexibility and extensibility of Swing painting pipeline allows creating applications that bear little semblance to the dated Ocean look, and it looks like SWT might be moving in this direction as well. Lotus Software has been purchased by IBM back in 1996 for 3.5 billion dollars, and IBM has put a lot of resources to continue the development of different Lotus components (such as Domino and Notes). Unbeknownst to many (which is a good sign for any software in general), Lotus is an SWT application. It certainly doesn’t look one – click the screenshot for the full size view:

Not much information is available on custom Lotus SWT components (or i haven’t looked hard enough), but this presentation (zipped PowerPoint) provides some insights – the UI guidelines are implemented with CSS:
A majority of our CSS support was intended to give the custom Lotus SWT widgets as much flexibility as possible. Styling standard SWT widgets is supported but very limited (fonts, colors, background image).
Another interesting development comes in the form of Eclipse Riena which is currently in the incubation stage. While you might want to skip the buzzword soup in the project description (enterprise service oriented blah blah), Riena aims to bring a fresh look to Eclipse RCP applications. The presentations at Eclipse Summit (PDF) and Eclipse Forum Europe (PDF) show these designs (click for full size view):


And while the UI of the sample applications shipped with milestone 4 of Riena 1.0 is quite far from the design mockups above, the trends are quite clear – Eclipse / SWT based applications are trying to break away from the native look-and-feel. So what are the plans for core SWT layer?
The answer to this question might be found in the mailing lists of e4 project. e4 is the codename for the next major release of Eclipse (hence the number 4). There are a lot of interesting ideas bouncing around the lists, including using EMF for driving the UI definitions (aiming, perhaps, at the same level of design/development separation as available in WPF, Apollo and JavaFX) and targetting different runtime environments such as Web browsers. It appears that one of the fundamental shifts is going to be the support for CSS skinning for the UI components.
Kevin McGuire is a platform UI contributor working for IBM on Eclipse UI, and his views on Eclipse-based RCP applications are quite refreshing:
As I survey the Eclipse based applications, RCP or not, they all look, well, like Eclipse based applications. Eclipse provides much power through reuse of existing components and extension of frameworks. But my goal as an application developer is to build software that is as appropriate for my audience as possible. That audience could be anybody. However, many choices we made early on in Eclipse were with an IDE user in mind and just don’t work well for other user types.
Why should my choice of technology so blatantly drive the UI experience? I’d like all that reuse and power, thank you, but the end result shouldn’t betray the technology used to build it, provided I am willing to invest in specializing it.[…] I’d like to see as rich a set of graphical front ends for Eclipse. Certainly CSS helps by providing good separation of behaviour and UI, but the components must be designed to make use of this separation.
[…] Eclipse based applications should be capable of the same degree of visual and interaction sophistication as web based applications. This is essential for reaching a wider audience.
This point of view is also shared by Christian Campo from the Riena project:
- RCP UI looks like the IDE
- is not that easy on endusers
- while there is an option to allow “freestyle” there is certain of look that seems well established i.e. Outlook and others (including Riena)
- there is already some common sense how user interfaces for endusers are designed like MS Office, Lotus etc.
- wouldn’t it be cool that we have more support for that in Eclipse rather than each application has to build that from scratch.
- endusers no longer expect their tools to have a native platform look
Are we going to see a UI customization layer in SWT that is similar to Swing’s look-and-feels?
Here are some Swing links that you might have missed during the last three weeks:
- Gregg Bolinger extends the application-wide hotkeys with a lookup dialog, complete with wiring the events for navigating and canceling.
- Roman Kennke summarizes the Caciocavallo project that aimed to create portable GUI backends for OpenJDK graphics stack.
- Santhosh Kumar has an interesting solution for cross-LAF combobox with group separators. The solution involves putting the grouping logic inside the renderer, and one of the commenters wonders whether this logic should be part of the model or of the specific view.
- Piet Blok writes about the JXLayer project and his experiments with multiple layers and sharing UI instances.
- Alexander Potochkin has assumed the role of specification lead for reference implementation of JSR 295 (Swing Application Framework). He shares his thoughts, outlining the proposed changes and soliciting feedback on his blog, and has already submitted a few changes to the project source repository.
- Native font rasterization is one of the major features added to JDK 6u10 on Windows platforms, and has impressed Naiden Gochev that has screenshots of old rasterizer, SWT (native) rasterizer and NetBeans running under the new rasterizer. Too bad that the Windows look-and-feel only uses Segoe UI on the menus…
- Jasper Potts sums up the work he and Richard Bair have been doing on Nimbus look-and-feel. Perhaps the more disappointing part is that the highly-anticipated designer tool announced last September still can’t be made available to the public. The followup post has an example of skinning a slider under Nimbus. If you plan on customizing Nimbus with painters, note that the com.sun.java.swing.Painter interface is only available in JDK 6u10, so you might as well instantiate Nimbus with the fully qualified class name instead of iterating over available LAFs and querying their names.
- On the Synth-related note, Xavier Young has started a series of tutorials on configuring the EaSynth look-and-feel. The first part is on general button customization, and the second part is on arrow buttons, check boxes, radio buttons and toggle buttons.
- Yves Zoundi has announced release 0.0.3 of VFSJFileChooser component that extends the JFileChooser to browse remote file repositories such as FTP, SFTP, WEBDAV and more.
- Andres Almiray writes about Groovy new binding features, their applicability to SwingBuilder and the comparison with JavaFX binding.
- Christophe Le Besnerais continues his explorations on modern interfaces, aiming to recreate the look similar to that of OnWired web site in Swing.
- Michael Bar-Sinai proposes solutions for complex table cell rendering logic in his java.net article. In particular, he has a class-based and rule-based approaches for separating same-column rendering logic into more manageable code.
- Finally, Maxim Zakharenkov has released version 1.3 of SwingExplorer project. New in this release – NetBeans plugin and tracing component addition.