This is an example from Satoshi Ishii working on PhotonicsDB. He was trying
to setup tabs in the gui by using groups of groups. He wanted the first and
last tab to always be enabled. The tabs in between the first and last
contained enable tests.

Rappture was able to successfully create the tabs, but the last tab always
contained data from the first disabled tab. The cause of this problem is that
gui/scripts/control.tcl, which is in charge of setting up the tabs, gets an
index of which tab was selected and uses this index to access the name and
value of the tab to be shown. The index is used in a list which contains all
possible tabs, not a list that contains only the enabled tabs. The result is
that when we have a list containing five total tabs numbered 1-5, and tabs
1,2, and 5 are enabled, an index of 3 would choose a disabled tab to show.

This problem was solved by adding an additional private variable to the
controls object that keeps track of which tabs are enabled and shown. We now
index into the _showing list instead of the _controls list. In the example
above the _showing list would contain tabs 1, 2 and 5. When the last tab was
chosen in the graphical user interface, _changeTabs function would receive
an index of 3 referencing tab 5 and the correct tab would be displayed to the
user.
