boolean () { if (getPropertiesFile() != null) return true; final String path = getPropertiesFilePath(); if (StringUtil.isEmptyOrSpaces(path)) { String message = PropertiesBundle.message("i18nize.empty.file.path", path); Messages.showErrorDialog(myProject, message, PropertiesBundle.message("i18nize.error.creating.properties.file")); myPropertiesFile.requestFocusInWindow(); return false; } final FileType fileType = FileTypeManager.getInstance().getFileTypeByFileName(FileUtil.toSystemIndependentName(path)); if (fileType != PropertiesFileType.INSTANCE && fileType != XmlFileType.INSTANCE) { String message = PropertiesBundle.message("i18nize.cant.create.properties.file.because.its.name.is.associated", getPropertiesFilePath(), fileType.getDescription()); Messages.showErrorDialog(myProject, message, PropertiesBundle.message("i18nize.error.creating.properties.file")); myPropertiesFile.requestFocusInWindow(); return false; } try { final File file = new File(path).getCanonicalFile(); FileUtil.createParentDirs(file); ApplicationManager.getApplication().runWriteAction(new ThrowableComputable<PsiFile, Exception>() { @Override public PsiFile compute() throws Exception { VirtualFile dir = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(file.getParentFile()); final PsiManager psiManager = PsiManager.getInstance(myProject); if (dir == null) { throw new IOException("Error creating directory structure for file '" + path + "'"); } if (fileType == PropertiesFileType.INSTANCE) { return psiManager.findFile(dir.createChildData(this, file.getName())); } else { FileTemplate template = FileTemplateManager.getInstance(myProject).getInternalTemplate("XML Properties File.xml"); return (PsiFile)FileTemplateUtil.createFromTemplate(template, file.getName(), null, psiManager.findDirectory(dir)); } } }); } catch (Exception e) { Messages.showErrorDialog(myProject, e.getLocalizedMessage(), PropertiesBundle.message("i18nize.error.creating.properties.file")); return false; } return true; }