CreateClassDialog (PsiClass psiClass, final String targetClassName) { final PsiDirectory sourceDir = psiClass.getContainingFile().getContainingDirectory(); ProjectFileIndex fileIndex = ProjectRootManager.getInstance(psiClass.getProject()).getFileIndex(); final PsiPackage aPackage = sourceDir != null ? JavaDirectoryService.getInstance().getPackage(sourceDir) : null; final CreateClassDialog dialog = new CreateClassDialog( psiClass.getProject(), getTitle(psiClass), targetClassName, aPackage != null ? aPackage.getQualifiedName() : "", CreateClassKind.CLASS, true, ModuleUtilCore.findModuleForPsiElement(psiClass)) { @Override protected PsiDirectory getBaseDir(String packageName) { return sourceDir != null && fileIndex.getSourceRootForFile(sourceDir.getVirtualFile()) != null ? sourceDir : super.getBaseDir(packageName); } @Override protected boolean reportBaseInTestSelectionInSource() { return true; } }; if (!dialog.showAndGet()) { return null; } final PsiDirectory targetDirectory = dialog.getTargetDirectory(); if (targetDirectory == null) return null; return dialog; }