PsiFile (@Nullable String name, @NotNull FileTemplate template, @NotNull PsiDirectory dir, @Nullable String defaultTemplateProperty, boolean openFile, @NotNull Map<String, String> liveTemplateDefaultValues, @NotNull Map<String, String> extraTemplateProperties) { if (name != null) { CreateFileAction.MkDirs mkdirs = new CreateFileAction.MkDirs(name, dir); name = mkdirs.newName; dir = mkdirs.directory; } Project project = dir.getProject(); try { Properties templateProperties = FileTemplateManager.getInstance(dir.getProject()).getDefaultProperties(); templateProperties.putAll(extraTemplateProperties); PsiFile psiFile = FileTemplateUtil.createFromTemplate(template, name, templateProperties, dir) .getContainingFile(); SmartPsiElementPointer<PsiFile> pointer = SmartPointerManager.getInstance(project).createSmartPsiElementPointer(psiFile); VirtualFile virtualFile = psiFile.getVirtualFile(); if (virtualFile != null) { if (openFile) { if (template.isLiveTemplateEnabled()) { CreateFromTemplateActionBase.startLiveTemplate(psiFile, liveTemplateDefaultValues); } else { FileEditorManager.getInstance(project).openFile(virtualFile, true); } } if (defaultTemplateProperty != null) { PropertiesComponent.getInstance(project).setValue(defaultTemplateProperty, template.getName()); } return pointer.getElement(); } } catch (ParseException e) { throw new IncorrectOperationException("Error parsing Velocity template: " + e.getMessage(), (Throwable)e); } catch (IncorrectOperationException e) { throw e; } catch (Exception e) { LOG.error(e); } return null; }