void () { if (myWrapper != null) return; myProcessor = createProcessor(); String dialogGroupKey = ObjectUtils .notNull(myProcessor.getContextUserData(DiffUserDataKeys.DIALOG_GROUP_KEY), DEFAULT_DIALOG_GROUP_KEY); myWrapper = new WindowWrapperBuilder(DiffUtil.getWindowMode(myHints), new MyPanel(myProcessor.getComponent())) .setProject(myProject) .setParent(myHints.getParent()) .setDimensionServiceKey(dialogGroupKey) .setPreferredFocusedComponent(() -> myProcessor.getPreferredFocusedComponent()) .setOnShowCallback(() -> myProcessor.updateRequest()) .build(); myWrapper.setImages(DiffUtil.DIFF_FRAME_ICONS.getValue()); Disposer.register(myWrapper, myProcessor); Consumer<WindowWrapper> wrapperHandler = myHints.getWindowConsumer(); if (wrapperHandler != null) wrapperHandler.consume(myWrapper); MessageBusConnection appConnection = ApplicationManager.getApplication().getMessageBus().connect(myProcessor); appConnection.subscribe(ApplicationActivationListener.TOPIC, new ApplicationActivationListener() { @Override public void applicationActivated(@NotNull IdeFrame ideFrame) { DiffRequest request = myProcessor.getActiveRequest(); if (request != null) { VirtualFile[] files = VfsUtilCore.toVirtualFileArray(request.getFilesToRefresh()); DiffUtil.refreshOnFrameActivation(files); } } }); }