/* * Copyright 2010 Jon S Akhtar (Sylvanaar) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.sylvanaar.idea.Lua.actions; import com.intellij.ide.fileTemplates.FileTemplate; import com.intellij.ide.fileTemplates.FileTemplateManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFileFactory; import com.intellij.util.IncorrectOperationException; import com.sylvanaar.idea.Lua.LuaFileType; import org.jetbrains.annotations.NonNls; import java.util.Properties; public class LuaTemplatesFactory { public static final String NEW_SCRIPT_FILE_NAME = "Lua Script.lua"; public static final String LUA_HEADER_NAME = "Lua File Header.lua"; // private final FileTemplateGroupDescriptor templateGroup; private static final Logger log = Logger.getInstance("Lua.TemplatesFactory"); // public LuaTemplatesFactory() { // templateGroup = // new FileTemplateGroupDescriptor(LuaBundle.message("file.template.group.title.lua"), LuaIcons.LUA_ICON); // templateGroup.addTemplate(NEW_SCRIPT_FILE_NAME); // templateGroup.addTemplate(LUA_HEADER_NAME); // } // // public FileTemplateGroupDescriptor getFileTemplatesDescriptor() { // return templateGroup; // } public static PsiFile createFromTemplate(final PsiDirectory directory, final String name, String fileName, String templateName, @NonNls String... parameters) throws IncorrectOperationException { log.debug("createFromTemplate: dir:" + directory + ", filename: " + fileName); final FileTemplate template = FileTemplateManager.getInstance().getTemplate(templateName); Properties properties = new Properties(FileTemplateManager.getInstance().getDefaultProperties()); String text; try { text = template.getText(properties); } catch (Exception e) { throw new RuntimeException("Unable to load template for " + FileTemplateManager.getInstance().internalTemplateToSubject(templateName), e); } final PsiFileFactory factory = PsiFileFactory.getInstance(directory.getProject()); log.debug("Create file from text"); final PsiFile file = factory.createFileFromText(fileName, LuaFileType.LUA_FILE_TYPE, text); log.debug("Adding file to directory"); return (PsiFile) directory.add(file); } }