r22977Just to make things interesting, the Forge look and feel (L&F) is dependent not only on the theme selected (Default, Journeyman, etc) but also the L&F associated with the Swing architecture which is responsible for how a JTextArea, JComboBox, etc is displayed (
http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html).
Prior to r22977, Forge was not specifically setting the Swing L&F which meant it was leaving the decision to the OS. On Windows and Linux the default appears to be the standard "Metal" cross-platform L&F. However, on the Mac it uses a different L&F that displays GUI components using a native L&F.
The problem is that setting the properties of a GUI component in one L&F might not necessarily work in another. In this case, setting the background color of the JComboBox worked fine using the "Metal" L&F but had absolutely no effect on the Mac L&F.
Therefore, Forge now explicitly sets the L&F at startup to the cross-platform "Metal" scheme. How jarring this is will be dependent on your OS but considering that Forge is attempting a skinnable L&F I think this is acceptable.
Theorectically, this means that we can now use the UIManager to globally set the look of the various GUI components instead of hardcoding display characteristics. I say "theoretically" because the UIManager works fine 98% of the time but there can be irritating edge case properties which stubbonly refuse to conform.
UIManager TODO :
- Checkboxes
- Radio Buttons
- Modal dialogs
- Menus
- Lists
- Tables
While working on this I would like to mention the
UIManager Defaults tool which is extremely useful for displaying the various properties that can be set for each GUI component using UIManager. Also, I would like to mention the
Substance L&F which I think could be used to really polish the Forge interface - what do you think?
Finally, a big thanks to ChrisH for his help in resolving this issue.
Cheers,
Steve