@NotNull static ModalityStateEx modalityStateForWindow(@NotNull Window window) { int index = ourModalEntities.indexOf(window); if (index < 0) { Window owner = window.getOwner(); if (owner == null) { return (ModalityStateEx) ApplicationManager.getApplication().getNoneModalityState(); } ModalityStateEx ownerState = modalityStateForWindow(owner); if (window instanceof Dialog && ((Dialog) window).isModal()) { return ownerState.appendEntity(window); } return ownerState; } List<Object> result = new ArrayList<Object>(); for (Object entity : ourModalEntities) { if (entity instanceof Window || entity instanceof ProgressIndicator && ((ProgressIndicator) entity).isModal()) { result.add(entity); } } return new ModalityStateEx(result.toArray()); }