The first thing I want to say is: JUCE is awesome, it really fits my needs. Thank you Jules for the good work.
The second thing is a suggestion for the TabbedButtonBar: If there are more TabBarButton’s than displayable at once, it will show a little plus-button with a menu to access the hidden TabBarButton’s. But the TabbedButtonBar can’t reorder its TabBarButton’s, so the currently selected TabBarButton could be hidden and you have to remember which one it is or have to open up the menu and look which one is ticked.
My suggestion for this is to give the TabbedButtonBar the ability to reorder its TabBarButton’s like the TableHeaderComponent is able to get its columns reorderd, by programm and by user.
This way it would be possible to move a hidden TabBarButton to the visible area of the TabbedButtonBar when the user selects it from the menu. Also the user would have the possibility to reorder (drag’n’drop around) the TabBarButton’s like the columns of the TableHeaderComponent or the tabs of a tabbed-browser like Firefox.
I didn’t take a closer look at the code for all details yet, but I think it could be possible to use some code and logic from the TableHeaderComponent to do this.
An other thing I just noticed is the way the message given by setTextToShowWhenEmpty(…) to a TextEditor is displayed. It’s drawn a bit nearer to the top border. As I looked at the code this behaviour seems to be intended, but it looks odd in my opinion.