In the evening, Hermien and Chris turned up again, this time at a JUG event in a bar (is there a better place for a JUG event?), organized primarily by Mark Clarke (the extremely versatile organizer of the courses I am delivering in South Africa) from Jumping Bean. Here are some nice pics to evoke the feeling of the evening. (All you need to do is pretend there's semi-loud pumping disco type music in the background and you'll be very close to where we were in reality.)
Chris in action:
Hermien (author of On the NetBeans Platform Build System) in action:
Earlier in the day, during his presentation during the course, Chris announced the release of PinkMatter's Ribbon bar library for the NetBeans Platform. (Based on the work by Kirill and Gunnar and others, but this time independent of look and feel.)
And today the first day of the two day advanced training started. Of the original 16 in the basic course, 5 students remained in the advanced course, during which we're porting Robert Kelsey's AMSWin to the NetBeans Platform!
The same training is being held in Stellenbosch next week... and Chris will be there too to talk about Maltego, artificial intelligence, three-letter companies, and the NetBeans Platform. You can still join in!
But this new paradigm reveals flaws in some Netbeans actions. I've been struggling to correctly use CloseAllDocumentsAction and UndockWindowAction on the Ribbon, for instance. These actions are always disabled on the Ribbon, because they do not update their enabled state dynamically (because they are not listening to anything). The implementation is expecting that the isEnabled() method will be called whenever the action is about to be used, which i guess it happens when the user presses the "Window" menu or invokes a TopComponent popup menu. This means that these actions will *only* work under that circumstances, which also means that they are *logically dependent* on the UI.
So, i worked around this problem by implementing an Action that delegates its actionPerformed() to some other Action (something similar to CallableSystemAction) and also allows me to control its enabled state.