void (@Nullable VirtualFile selectedFile) { for (PaletteGroupHeader groupHeader : myGroupHeaders) { groupHeader.getComponentList().removeListSelectionListener(myListSelectionListener); } String[] oldTabNames = collectTabNames(myGroups); myTabbedPane.removeAll(); myGroupHeaders.clear(); myGroups.clear(); final ArrayList<PaletteGroup> currentGroups = collectCurrentGroups(selectedFile); String[] tabNames = collectTabNames(currentGroups); if (tabNames.length == 1) { if (oldTabNames.length != 1) { remove(myTabbedPane); add(myScrollPane); } PaletteContentWindow contentWindow = new PaletteContentWindow(); myScrollPane.getViewport().setView(contentWindow); for (PaletteGroup group : currentGroups) { addGroupToControl(group, contentWindow); } final JComponent view = (JComponent)myScrollPane.getViewport().getView(); if (view != null) { view.revalidate(); for (Component component : view.getComponents()) { component.revalidate(); } } } else { if (oldTabNames.length <= 1) { remove(myScrollPane); add(myTabbedPane); } for (@NlsSafe String tabName : tabNames) { PaletteContentWindow contentWindow = new PaletteContentWindow(); JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(contentWindow); scrollPane.addMouseListener(new MyScrollPanePopupHandler()); myTabbedPane.add(tabName, scrollPane); for (PaletteGroup group : currentGroups) { if (group.getTabName().equals(tabName)) { addGroupToControl(group, contentWindow); } } } myTabbedPane.revalidate(); } }