* Make subTab visible.
*
* @param subTab not null
*/
public void showSubTab(SubTab subTab) {
Button button = subTab.getButton();
if (null == button) {
button = createSubTabButton(subTab);
if (head == null && tail == null) {
head = subTab;
tail = subTab;
buttonBar.addMember(button);
} else {
SubTab successor = findClosestVisibleSuccessor(subTab);
// if successor is null then that means we are updating the tail
if (successor == null) {
tail.setVisibleNext(subTab);
subTab.setVisibleNext(null);
tail = subTab;
buttonBar.addMember(button);
} else {
SubTab previous = findClosestVisiblePredecessor(successor);
// if previous is null then that means we are updating the head
if (previous == null) {
subTab.setVisibleNext(head);
head = subTab;
buttonBar.addMember(button, 0);
} else {
subTab.setVisibleNext(previous.getVisibleNext());
previous.setVisibleNext(subTab);
buttonBar.addMember(button, buttonBar.getMemberNumber(previous.getButton().getID()) + 1);
}
}
}
subTab.setButton(button);
}
button.show();
}