AbstractPopup (Supplier<? extends AbstractPopup> popupSupplier) { AbstractPopup popup = popupSupplier.get().init( myProject, myComponent, myPreferredFocusedComponent, myRequestFocus, myFocusable, myMovable, myDimensionServiceKey, myResizable, myTitle, myCallback, myCancelOnClickOutside, myListeners, myUseDimServiceForXYLocation, myCommandButton, myCancelButton, myCancelOnMouseOutCallback, myCancelOnWindow, myTitleIcon, myCancelKeyEnabled, myLocateByContent, myPlaceWithinScreen, myMinSize, myAlpha, myMaskProvider, myInStack, myModalContext, myFocusOwners, myAd, myAdAlignment, false, myKeyboardActions, mySettingsButtons, myPinCallback, myMayBeParent, myShowShadow, myShowBorder, myBorderColor, myCancelOnWindowDeactivation, myKeyEventHandler ); popup.setStretchToOwnerWidth(myStretchToOwnerWidth); popup.setStretchToOwnerHeight(myStretchToOwnerHeight); popup.setNormalWindowLevel(myNormalWindowLevel); popup.setOkHandler(myOkHandler); if (myAdvertiser != null) { popup.setFooterComponent(myAdvertiser); } if (myUserData != null) { popup.setUserData(myUserData); } Disposer.register(ApplicationManager.getApplication(), popup); return popup; }