diff --git a/platform/lang-impl/src/com/intellij/ide/actions/CreateFileAction.java b/platform/lang-impl/src/com/intellij/ide/actions/CreateFileAction.java index 249d0e1e78a0..a708a7aa54d0 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/CreateFileAction.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/CreateFileAction.java @@ -74,18 +74,30 @@ public class CreateFileAction extends CreateElementActionBase implements DumbAwa @NotNull protected PsiElement[] create(String newName, PsiDirectory directory) throws Exception { - if (SystemInfo.isWindows) { - newName = newName.replace('\\', '/'); - } - if (newName.contains("/")) { - final List subDirs = StringUtil.split(newName, "/"); - newName = subDirs.remove(subDirs.size() - 1); - for (String dir : subDirs) { - final PsiDirectory sub = directory.findSubdirectory(dir); - directory = sub == null ? directory.createSubdirectory(dir) : sub; + MkDirs mkdirs = new MkDirs(newName, directory); + return new PsiElement[]{mkdirs.directory.createFile(getFileName(mkdirs.newName))}; + } + + public static class MkDirs { + public final String newName; + public final PsiDirectory directory; + + public MkDirs(String newName, PsiDirectory directory) { + if (SystemInfo.isWindows) { + newName = newName.replace('\\', '/'); } + if (newName.contains("/")) { + final List subDirs = StringUtil.split(newName, "/"); + newName = subDirs.remove(subDirs.size() - 1); + for (String dir : subDirs) { + final PsiDirectory sub = directory.findSubdirectory(dir); + directory = sub == null ? directory.createSubdirectory(dir) : sub; + } + } + + this.newName = newName; + this.directory = directory; } - return new PsiElement[]{directory.createFile(getFileName(newName))}; } protected String getActionName(PsiDirectory directory, String newName) { diff --git a/platform/lang-impl/src/com/intellij/ide/actions/CreateFileFromTemplateAction.java b/platform/lang-impl/src/com/intellij/ide/actions/CreateFileFromTemplateAction.java index 4b147e6eadfb..5c1e43ccad85 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/CreateFileFromTemplateAction.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/CreateFileFromTemplateAction.java @@ -52,6 +52,9 @@ public abstract class CreateFileFromTemplateAction extends CreateFromTemplateAct @NotNull FileTemplate template, @NotNull PsiDirectory dir, @Nullable String defaultTemplateProperty) { + CreateFileAction.MkDirs mkdirs = new CreateFileAction.MkDirs(name, dir); + name = mkdirs.newName; + dir = mkdirs.directory; PsiElement element; Project project = dir.getProject(); try {