void (final String subDirName, final boolean createFile) { Runnable command = () -> { final Runnable run = () -> { String dirPath = myDirectory.getVirtualFile().getPresentableUrl(); String actionName = IdeBundle.message("progress.creating.directory", dirPath, File.separator, subDirName); LocalHistoryAction action = LocalHistory.getInstance().startAction(actionName); try { if (createFile) { CreateFileAction.MkDirs mkdirs = new CreateFileAction.MkDirs(subDirName, myDirectory); myCreatedElement = mkdirs.directory.createFile(mkdirs.newName); } else { createDirectories(subDirName); } } catch (final IncorrectOperationException ex) { ApplicationManager.getApplication().invokeLater(() -> showErrorDialog(CreateElementActionBase.filterMessage(ex.getMessage()))); } finally { action.finish(); } }; ApplicationManager.getApplication().runWriteAction(run); }; CommandProcessor.getInstance().executeCommand(myProject, command, createFile ? IdeBundle.message("command.create.file") : myIsDirectory ? IdeBundle.message("command.create.directory") : IdeBundle.message("command.create.package"), null); }