public Tab addTab(Component tabComponent, String caption, Resource icon, int position) { if (tabComponent == null) return null; TabImpl tab = new TabImpl(tabComponent); Label tabbarTabComponent = new Label(); tabToContentMap.put(tabbarTabComponent, tab); tabs.put(tabComponent, tab); TabSheet.Tab tabbarTab = tabbedHeader.addTab(tabbarTabComponent, caption, icon, position); tab.setTabbarTab(tabbarTab); addComponent(tab); tabbedHeader.setVisible(true); if (tabComponents.isEmpty()) setSelected(tab); tabComponents.add(position, tabComponent); return tab; }
protected void _closeTab(Component tabContent) { CloseHandler closeHandler = ((TabImpl) tabs.get(tabContent)).getCloseHandler(); closeHandler.onTabClose(this, tabContent); }
@Override public void setTabPosition(Tab tab, int position) { super.setTabPosition(tab, position); TabImpl tabImpl = (TabImpl) tabToContentMap.get(tab.getComponent()); if (tabImpl != null) { Component tabComponent = tabImpl.getComponent(); tabComponents.remove(tabComponent); tabComponents.add(position, tabComponent); } } };
closeHandler.onTabClose(CubaManagedTabSheet.this, getContentTab(tabContent).getComponent()); });
@Override protected Component getActionTarget(Tab tab) { return getContentTab(tab.getComponent()).getComponent(); }
@Override public void removeComponent(Component c) { Tab tab = tabs.get(c); //noinspection RedundantCast Component tabComponent = getTabComponent((Component) tab); tabToContentMap.inverse().remove(tab); tabIds.remove(tab.getId()); tabs.remove(c); tabbedHeader.removeComponent(tabComponent); tabComponents.remove(c); ((TabImpl) tab).setCloseHandler(null); super.removeComponent(((TabImpl) tab)); }
protected void unselectTab(Component component) { ContentSwitchMode switchMode = ((TabImpl) component).getContentSwitchMode(); if (switchMode == ContentSwitchMode.HIDE) { hideTabContent(component); return; } else if (switchMode == ContentSwitchMode.UNLOAD) { unloadTabContent(component); return; } if (tabSheetMode == Mode.HIDE_TABS) { hideTabContent(component); } else { unloadTabContent(component); } }
@Override public Component getSelectedTab() { return tabSheet.selected != null ? ((TabImpl) tabSheet.selected).getComponent() : null; }
@Override public int getTabPosition(String tabId) { Tab tab = getTabNN(tabId); return tabSheet.tabbedHeader.getTabPosition(((TabImpl) tab).getTabbarTab()); }
@Override public void setTabDescription(String tabId, String description) { Tab tab = getTabNN(tabId); ((TabImpl) tab).getTabbarTab() .setDescription(description); }
protected void selectTab(Component component) { ContentSwitchMode contentSwitchMode = ((TabImpl) component).getContentSwitchMode(); if (contentSwitchMode == HIDE) { showTabContent(component); return; } else if (contentSwitchMode == UNLOAD) { loadTabContent(component); return; } if (tabSheetMode == Mode.HIDE_TABS) { showTabContent(component); } else { loadTabContent(component); } }
@Override public void setTabCubaId(String tabId, String id) { Tab tab = getTabNN(tabId); tabSheet.tabbedHeader.setCubaId(((TabImpl) tab).getTabbarTab(), id); }
@Override public void setTabTestId(String tabId, String testId) { TabImpl tabImpl = (TabImpl) getTabNN(tabId); tabSheet.tabbedHeader.setTestId(tabImpl.getTabbarTab(), testId); }
@Override public void setTabCloseHandler(Component tabContent, BiConsumer<HasTabSheetBehaviour, Component> closeHandler) { Tab tab = tabSheet.tabs.get(tabContent); if (tab != null) { ((TabImpl) tab).setCloseHandler(closeHandler::accept); } }
protected TabImpl(Component component) { this.component = component; addComponent(component); setSizeFull(); setPrimaryStyleName(MANAGED_TAB_STYLENAME); }
protected void loadTabContent(Component component) { // in case of new tab it will be added later if (!components.contains(component) && tabComponents.contains(((TabImpl) component).getComponent())) { addComponent(component); } }
@Override public String getTab(Component component) { TabImpl tab = (TabImpl) tabSheet.tabs.get(component); return tab.getId(); }
@Override public void replaceComponent(Component oldComponent, Component newComponent) { Tab tab = tabs.get(oldComponent); if (tab != null) { ((TabImpl) tab).setComponent(newComponent); } }
protected void setComponent(Component component) { this.removeComponent(this.component); this.component = component; addComponent(component); }