I wrote some custom classes to do this - this turned out to be less work than I expected. I split it into two separate components that can be used independently: the first handles the icons at the top and switches the view, and the second handles the extensible panels:


My code is available on github and is licensed under BSD 2.
source
share