I’m suck. I’m trying to add some functionality to TableHeaderComponent (i.e. combo boxes to be able to filter the contents of the table) but it seems not so easy to do that without modifying the source code of Juce. I can’t make use of inheritance from TableHeaderComponent and change its functionality because the variables it uses are private and they are not accessible to derived classes. I can’t wrap it in another Component and pass to TableListBox because TableListBox is programmed to use only concrete implementation of TableHeaderComponent. Of course I can copy and paste both classes changing their functionality (it’s not easy task too because TableListBox declared as a friend of ListBox) but then I won’t be able to use the default look and feel of Juce (at least I couldn’t figure out how).
Is it maybe possible to program Juce less restrictive in order to make it easy extendable? I mean less private variables, less private inheritance, less class friends, more abstractions and program not to concrete implementation but to interface. I think it could be advantageous to be able to extend the default widgets preserving the default look and feel (e.g. deriving a virtual ComboBox with default look and feel and a corresponding ComboBoxModel class) and at the same time keeping the maintainability of source code as low as possible. What do you think?