@Override
public Accordion.Tab addLazyTab(String name,
Element descriptor,
ComponentLoader loader) {
ComponentsFactory cf = AppBeans.get(ComponentsFactory.NAME);
CssLayout tabContent = cf.createComponent(CssLayout.NAME);
tabContent.setStyleName("c-tabsheet-lazytab");
tabContent.setSizeFull();
Tab tab = new Tab(name, tabContent);
tabs.put(name, tab);
com.vaadin.ui.Component tabComponent = tabContent.unwrapComposition(com.vaadin.ui.Component.class);
tabMapping.put(tabComponent, new ComponentDescriptor(name, tabContent));
com.vaadin.ui.Accordion.Tab tabControl = this.component.addTab(tabComponent);
getLazyTabs().add(tabComponent);
this.component.addSelectedTabChangeListener(new LazyTabChangeListener(tabContent, descriptor, loader));
context = loader.getContext();
if (!postInitTaskAdded) {
context.addPostInitTask((c, w) -> initComponentTabChangeListener());
postInitTaskAdded = true;
}
if (getDebugId() != null) {
this.component.setTestId(tabControl,
AppUI.getCurrent().getTestIdManager().getTestId(getDebugId() + "." + name));
}
if (AppUI.getCurrent().isTestMode()) {
this.component.setCubaId(tabControl, name);
}
tabContent.setFrame(context.getFrame());
return tab;
}