Wednesday, January 14, 2009

X11 + Gnome with Bugs = Kick For Innovation

In my Java-based backup software that I am working on now, in the GUI (Swing) I have to pop-up a history of a file that has to be restored. Everything should be very simple: you click on an icon of the file you want to restore, pop-up with a table appears. Then you select the date you need and this little window disappears, file gets restored.

Window originally was implemented as typical JFrame, undecorated, always on top. Works fine on Mac OS X with native LaF (of course! who wants that fugly Java Metal LaF to see!?).

But when it comes to X11 and Gnome... :-( For some reason "always on top" gets to be "always on bottom" or "always depends on Moon phase and Solar interference with UPS". If I call it "window.toFront()" it takes only once-per-entire-software-session, and then gets down again. To fix the thing, I had switched to JInternalFrame. But then I found that native GTK look and feel looks acceptable only on Mac OS X with native LaF or Quaqua.

But on typical Gnome, JInternalFrame looks just that nasty and horrible on several want-to-be-default themes, especially on Linux Mint and Linux Ubuntu. Borders are mangled and of course there is no shadow at all. Title bar of the window on some themes is one pixel narrower than entire window (or sometimes one pixel wider that makes entire border make a vertical gap per window). Dragging performance is usually crappy and slow, especially on Mac OS X.

Trying on OpenSolaris's default theme that looks like new Nimbus theme, overall impression is also could be quite better. Additionally, I've got some very strange errors, when I am adding a reference of the window to current working space.

Rule: if you are GUI designer/programmer, you are responsible for each pixel user see.

Change native LaF and go with Metal is "No-no-no, hell, no-no-no-no-no!!". The people, who was made Metal LaF has no taste, no understanding what style is, no feeling of beauty, use always an axe even to cut an orange and probably it's graphical design was made by a programmer at Sun that was working for Microsoft before... I've decided to make my own hack and here how it looks like (same everywhere):

It is completely glassy, translucent and smooth. I think, it looks much better, performs really fast and has no nasty bugs I faced before.

Great, time to go to sleep finally. :-)

No comments: