Wednesday, July 23, 2008

Crippled Apple LaF for Java Swing

Recently I found very-very unpleasant thing with Apple Look & Feel for Swing on OSX. On JDesktopPane, to get all the internal frames getAllFrames() is called. Works fine everywhere except OSX: it does not returns iconified frames. The reason, because they are not JInternalFrame.JDesktopIcon instances as normally everybody else in the World does, but are apple.laf.CUIAquaInternalFramePane.Dock instead. WTF?.. At first, I wanted to abandon OSX LaF and use something else instead. But "Substance" release that works on Java 5 is hell buggy and still very ugly on the same Java 5. New Nimbus LaF is really cool, look great, works and feels awesome, but... looks like an alien in OSX reminding me all this GTK things with X11. Additionally, it does not run on Java 5 at all.

Why Java 5? Yes, it is old, but thanks to (inaudible) Apple, there is no Java 6 on Tiger that the whole thing should also run. In fact, Apple LaF is the best for Java 5, allows font anti-aliasing, behaves correctly as OSX app should and overall looks great, so I do not really want to abandon entire LaF either.

Thus ss a consequence, to get code working everywhere without tweaks and if/else uglyness to detect what platform it runs on, I had to implement my own window tracker.

* * *

Works fine, but still pisses developers off, when everybody have to have dozen workarounds or class extensions to fix here/there various "broken bones".

Apple wants to go Enterprise? Steve, which object of your body you use when you are thinking about Java versions interoperability (an enterprise industry standard, no matter somebody wants to accept it or not) between OSX versions? So what should I do if I have heterogeneous environment with various Macs and PCs and want to go with less old stuff (soon we will have Java 7, while Apple is enforcing me to use Java 4 or even 4)?.. Right: throw macs away from the Enterprise, because they are not compatible between each other, install PCs and bite yourself for other things they brings to you... But to get rid of most advanced desktop OSX workstations is what I definitely do NOT want to do either.

Very stupid.

No comments: