*/
tab.recalculateCaptionWidth();
- UIDL tabContentUIDL = null;
- ComponentConnector tabContentPaintable = null;
- Widget tabContentWidget = null;
- if (tabUidl.getChildCount() > 0) {
- tabContentUIDL = tabUidl.getChildUIDL(0);
- tabContentPaintable = client.getPaintable(tabContentUIDL);
- tabContentWidget = tabContentPaintable.getWidget();
- }
-
- if (tabContentPaintable != null) {
- /* This is a tab with content information */
-
- int oldIndex = tp.getWidgetIndex(tabContentWidget);
- if (oldIndex != -1 && oldIndex != index) {
- /*
- * The tab has previously been rendered in another position so
- * we must move the cached content to correct position
- */
- tp.insert(tabContentWidget, index);
- }
- } else {
- /* A tab whose content has not yet been loaded */
-
- /*
- * Make sure there is a corresponding empty tab in tp. The same
- * operation as the moving above but for not-loaded tabs.
- */
- if (index < tp.getWidgetCount()) {
- Widget oldWidget = tp.getWidget(index);
- if (!(oldWidget instanceof PlaceHolder)) {
- tp.insert(new PlaceHolder(), index);
- }
- }
-
- }
-
if (selected) {
- renderContent(tabContentUIDL);
+ renderContent(tabUidl.getChildUIDL(0));
tb.selectTab(index);
- } else {
- if (tabContentUIDL != null) {
- // updating a drawn child on hidden tab
- if (tp.getWidgetIndex(tabContentWidget) < 0) {
- tp.insert(tabContentWidget, index);
- }
- } else if (tp.getWidgetCount() <= index) {
- tp.add(new PlaceHolder());
- }
}
}
+ /**
+ * @deprecated as of 7.1, VTabsheet only keeps the active tab in the DOM
+ * without any place holders.
+ */
+ @Deprecated
public class PlaceHolder extends VLabel {
public PlaceHolder() {
super("");
private void renderContent(final UIDL contentUIDL) {
final ComponentConnector content = client.getPaintable(contentUIDL);
Widget newWidget = content.getWidget();
- if (tp.getWidgetCount() > activeTabIndex) {
- Widget old = tp.getWidget(activeTabIndex);
- if (old != newWidget) {
- tp.remove(activeTabIndex);
- tp.insert(content.getWidget(), activeTabIndex);
- }
- } else {
- tp.add(content.getWidget());
+
+ assert tp.getWidgetCount() <= 1;
+
+ if (tp.getWidgetCount() == 0) {
+ tp.add(newWidget);
+ } else if (tp.getWidget(0) != newWidget) {
+ tp.remove(0);
+ tp.add(newWidget);
}
- tp.showWidget(activeTabIndex);
+ assert tp.getWidgetCount() <= 1;
+
+ // There's never any other index than 0, but maintaining API for now
+ tp.showWidget(0);
VTabsheet.this.iLayout();
updateOpenTabSize();
@Override
public void removeTab(int index) {
tb.removeTab(index);
- /*
- * This must be checked because renderTab automatically removes the
- * active tab content when it changes
- */
- if (tp.getWidgetCount() > index) {
- tp.remove(index);
- }
+
+ // Removing content from tp is handled by the connector
}
@Override