void () { for (ServiceViewContributor<?> contributor : CONTRIBUTOR_EP_NAME.getExtensionList()) { addToGroup(contributor); myNotInitializedContributors.add(contributor); } registerToolWindows(myGroups.keySet()); Disposable disposable = Disposer.newDisposable(); Disposer.register(myProject, disposable); myProject.getMessageBus().connect(disposable).subscribe(ToolWindowManagerListener.TOPIC, new ToolWindowManagerListener() { @Override public void toolWindowShown(@NotNull ToolWindow toolWindow) { Collection<ServiceViewContributor<?>> contributors = myGroups.get(toolWindow.getId()); if (contributors != null) { for (ServiceViewContributor<?> contributor : contributors) { if (myNotInitializedContributors.remove(contributor)) { ServiceEvent e = ServiceEvent.createResetEvent(contributor.getClass()); myModel.handle(e); } } } if (myNotInitializedContributors.isEmpty()) { Disposer.dispose(disposable); } } }); }