The games we play

April 13th, 2009

With the latest addition of multi-row functionality in the Flamingo ribbon bands, it is now possible to circumvent the deliberate restriction that was enforced previously. One of the main ribbon tenets states that UI controls should never be hidden or redisplayed (except contextual tasks) – you should rather disable / enable controls as necessary.

While it has been possible to hide / show controls before by wrapping a JPanel in a JRibbonComponent and changing the visibility state of the panel children, it has now become even easier under the new multi-row mode. I most certainly do not want to see such usage, and i do not have any plans to make code changes for scenarios that involve such usage.

However, i am a realistic person, and i understand that a determined developer armed with enough knowledge of Swing will find a way to circumvent restrictions that i place in the code. Even such draconian measures as tracking all hierarchy events in all JRibbonComponents and throwing exceptions when visibility changes are detected can be thwarted by ignoring / uninstalling the hierarchy listeners registered by the Flamingo UI delegates. I certainly do not want to go down that route, but i do want to ask you to respect the philosophy behind the ribbon and to not try cheating the APIs and the implementation. Doing so will make me even less open to provide additional ribbon APIs in the future.