I’ve two tabs A & B. A contains a text area and B contains a grid. My requirement is, when I click a column in the grid, it has to show some values in the Tab A → text area. So, I’m switching the tabs by using method setVisible & setSelected.
The problem is, when I switch to Tab A by making selected and if I click Tab B, it is not getting selected, visible. I need to click Tab A again and then Tab B to switch. Is this due to addSelectedChangeListener
?
Tabs tabs = new Tabs(editor, explorer);
tabs.setOrientation(Tabs.Orientation.HORIZONTAL);
tabs.setFlexGrowForEnclosedTabs(1);
tabs.setWidthFull();
Map<Tab, Component> tabsToPages = new HashMap<>();
tabsToPages.put(editor, msgEditor);
// tabsToPages.put(explorer, listing.getComponent());
tabsToPages.put(explorer, page2);
// Div pages = new Div(page1, page2);
Div pages = new Div(msgEditor, page2);
pages.setSizeFull();
Set<Component> pagesShown = Stream.of(msgEditor)
.collect(Collectors.toSet());
tabs.addSelectedChangeListener(event -> {
pagesShown.forEach(page -> page.setVisible(false));
pagesShown.clear();
Component selectedPage = tabsToPages.get(event.getSelectedTab());
selectedPage.setVisible(true);
pagesShown.add(selectedPage);
});
and method to switch is
private void showEditor(boolean show) {
if (show) {
if (!editor.isSelected()) {
editor.setSelected(true);
explorer.setSelected(false);
}
page2.setVisible(false);
msgEditor.setVisible(true);
} else {
if (!explorer.isSelected()) {
editor.setSelected(false);
explorer.setSelected(true);
}
page2.removeAll();
page2.add(searchField.getComponent(), this.listing.getComponent());
page2.setVisible(true);
msgEditor.setVisible(false);
}
}
```