Hierarchy providers refactored
[fedora-idea.git] / lang-impl / src / com / intellij / ide / actions / SaveFileAsTemplateAction.java
blob969e5551f8fbebb68d43da5ce18aee6bd825a172
1 package com.intellij.ide.actions;
3 import com.intellij.ide.fileTemplates.impl.AllFileTemplatesConfigurable;
4 import com.intellij.ide.fileTemplates.ui.ConfigureTemplatesDialog;
5 import com.intellij.openapi.actionSystem.AnAction;
6 import com.intellij.openapi.actionSystem.AnActionEvent;
7 import com.intellij.openapi.actionSystem.LangDataKeys;
8 import com.intellij.openapi.actionSystem.PlatformDataKeys;
9 import com.intellij.openapi.extensions.Extensions;
10 import com.intellij.openapi.project.Project;
11 import com.intellij.openapi.vfs.VirtualFile;
12 import com.intellij.psi.PsiFile;
14 public class SaveFileAsTemplateAction extends AnAction{
15 public void actionPerformed(AnActionEvent e){
16 Project project = e.getData(PlatformDataKeys.PROJECT);
17 String fileText = e.getData(PlatformDataKeys.FILE_TEXT);
18 VirtualFile file = e.getData(PlatformDataKeys.VIRTUAL_FILE);
19 String extension = file.getExtension();
20 String nameWithoutExtension = file.getNameWithoutExtension();
21 AllFileTemplatesConfigurable fileTemplateOptions = new AllFileTemplatesConfigurable();
22 ConfigureTemplatesDialog dialog = new ConfigureTemplatesDialog(project, fileTemplateOptions);
23 PsiFile psiFile = e.getData(LangDataKeys.PSI_FILE);
24 for(SaveFileAsTemplateHandler handler: Extensions.getExtensions(SaveFileAsTemplateHandler.EP_NAME)) {
25 String textFromHandler = handler.getTemplateText(psiFile, fileText, nameWithoutExtension);
26 if (textFromHandler != null) {
27 fileText = textFromHandler;
28 break;
31 fileTemplateOptions.createNewTemplate(nameWithoutExtension, extension, fileText);
32 dialog.show();
35 public void update(AnActionEvent e) {
36 VirtualFile file = e.getData(PlatformDataKeys.VIRTUAL_FILE);
37 String fileText = e.getData(PlatformDataKeys.FILE_TEXT);
38 e.getPresentation().setEnabled((fileText != null) && (file != null));