Я написал несколько пользовательских классов для этого - это оказалось меньше работы, чем я ожидал. Я разбил его на два отдельных компонента, которые можно использовать независимо - первый обрабатывает значки сверху и выполняет переключение видов, а второй - расширяемые панели:

Мой код доступен на github и под лицензией BSD 2-пункт.