Anyone making a desktop application in Swing and several other platforms will be struck by the absense of a framework for the basic user interaction.
Spurred on by the recent discussions on XML-DEV about a common platform for XML applications, by the current work at Sun on their Swing application framework, and by the need to brainstorm user interface ideas at Topologi, I’ve made up spec for office desktop application user interfaces called Doxology (Download PDF file). Documents and Topologi, geddit. It addresses a fairly basic functionality that is missing from current Swing APIs, for example. Feel free to adopt or adapt it, as part of your designs, if you need something like this. I don’t intend to provide code, its not that level.
I’ve also submitted Doxology as an input into JSR 296; the note to Sun’s Hans Muller follows.
[Note: the link above is to the most recent version of Doxology. The link below is the version I sent Hans.]
As a supplier of almost a dozen commercial Java/Swing desktop applications, most of which were based on our in-house application framework, I applaud the JSR 296 effort and I would like to contribute to that effort.
Please find attached in PDF the specification for Doxology, a simple framework described in general user interface terms rather than in class terms. If I were implementing our products again today from scratch, Doxology represents the kind of features that I would want a framework to provide or support.
Now I am not suggesting that JSR should necessarily adopt Doxology, or that it is particularly wonderful; instead I suggest that it is typical of the kinds of designs that JSR 296 should support, and so perhaps useful as a benchmark.
From the Swing point of view, I note that there is currently (AFAIK) any Swing classes or interfaces for the almost all the important parts of the Doxology model, and it would be great if some combination of JSR 296 and SwingLabs/SwingX could provide them:
* generalized Screen View
* generalized Document with dirty bit
* generalized Document View
* generalized Application with dirty bit
* state machine (for disabling controls based on selected object)
* Status bar
* Navigation box (tape transport) controls
* Ribbon controll (but Substance will provide this)
I have also posted this email to my blog on O’Reilly’s www.xml.com