My Dream JDesktopPane..
One area of Swing that does not appear to be getting much attention
these days (or that may have fallen out of favor with developers)
are the elements that make up the Multiple Document Interface: JDesktopPane
I believe that there's tremendous potential in further developing
the Swing features in this space.
What I am envisioning is nothing less than a JDesktop that rivals
the modern desktops of operating systems today, in terms of feature sets.
I'd like to share this vision with you. These would be some of the
features in 'my ideal java desktop':
- the ability to easily dock panels along the edges of
a JDesktopPane (I do realize that there exist commercial implementations
of this feature today)
- multiple workspaces (like we have on linux desktops)
- apple-like features: minimizing frames with effects?
- ctrl-tabbing to switch between jinternalframes
- a dock
- easy default keyboard shortcuts for hiding the current internal
frame, or, the one i really like from the macos is 'hide others'
- a trash
- standard window arrangement features such as tile & cascade (why not?)
- the ability to move/place iconized views of jinternalframes anywhere
on the jdesktoppane, to configure the placement behavior ('snap to grid'
Opportunities are rife for improving this area of the Swing API. I believe
such an environment could become the basis for some really nice and powerful
rich desktop applications.
I realize I'm not explaining myself fully here. "Why would one want to create
effectively a 'desktop within a desktop' type of application??" you may ask.
This raises a much deeper question. It is my belief that desktops today, albeit
nice, are an incomplete model of a virtual world. The world of today's operating
systems desktops is a poor world of files, folder, and applications. It is a
primitive model that I believe could be made significantly richer. The desktop
metaphor is effectively an object oriented user interface platform and is an
excellent foundation upon which to build applications with rich domains. Imagine
the ability to place representations of domain objects in folders, to search/query for
objects with the facility that we query files today, to invoke their methods with
a right-click gesture, to plug in model extensions, to integrate different models
into a single user interface substrate. You'd use the same environment, the same
runtime application to do email, to file documents, to write checks, or to do
software development. More so, there would exist an overarching consistency in
terms of how you manipulate objects, regardless of their type.
Well, I've gone considerably beyond the scope of this blog entry, so I better
stop here. :-)