void (@NotNull String toolWindowId, boolean active, boolean show) { if (myProject.isDisposed() || myProject.isDefault()) { return; } ApplicationManager.getApplication().invokeLater(() -> { ToolWindow toolWindow = ToolWindowManager.getInstance(myProject).getToolWindow(toolWindowId); if (toolWindow == null) { return; } if (active) { boolean doShow = show && !myActiveToolWindowIds.contains(toolWindowId); myActiveToolWindowIds.add(toolWindowId); if (doShow) { toolWindow.show(); } } else if (myActiveToolWindowIds.remove(toolWindowId)) { // Hide tool window only if model roots became empty and there were some services shown before update. toolWindow.hide(); } }, ModalityState.nonModal(), myProject.getDisposed()); }