Switching Tabs

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);
        }
    }
	```