1 package com
.intellij
.ide
.fileTemplates
.actions
;
3 import com
.intellij
.ide
.IdeView
;
4 import com
.intellij
.ide
.fileTemplates
.FileTemplate
;
5 import com
.intellij
.ide
.fileTemplates
.FileTemplateManager
;
6 import com
.intellij
.ide
.fileTemplates
.ui
.CreateFromTemplateDialog
;
7 import com
.intellij
.ide
.util
.DirectoryChooserUtil
;
8 import com
.intellij
.openapi
.actionSystem
.*;
9 import com
.intellij
.openapi
.project
.Project
;
10 import com
.intellij
.psi
.PsiDirectory
;
11 import com
.intellij
.psi
.PsiElement
;
12 import org
.jetbrains
.annotations
.Nullable
;
16 public abstract class CreateFromTemplateActionBase
extends AnAction
{
18 public CreateFromTemplateActionBase(final String title
, final String description
, final Icon icon
) {
19 super (title
,description
,icon
);
22 public final void actionPerformed(AnActionEvent e
){
23 DataContext dataContext
= e
.getDataContext();
25 IdeView view
= LangDataKeys
.IDE_VIEW
.getData(dataContext
);
29 Project project
= PlatformDataKeys
.PROJECT
.getData(dataContext
);
31 PsiDirectory dir
= DirectoryChooserUtil
.getOrChooseDirectory(view
);
32 if (dir
== null) return;
34 FileTemplate selectedTemplate
= getTemplate(project
, dir
);
35 if(selectedTemplate
!= null){
36 AnAction action
= getReplacedAction(selectedTemplate
);
38 action
.actionPerformed(e
);
41 FileTemplateManager
.getInstance().addRecentName(selectedTemplate
.getName());
42 PsiElement createdElement
= new CreateFromTemplateDialog(project
, dir
, selectedTemplate
, getDefaultFileName()).create();
43 if (createdElement
!= null) {
44 view
.selectElement(createdElement
);
51 protected abstract AnAction
getReplacedAction(final FileTemplate selectedTemplate
);
53 protected abstract FileTemplate
getTemplate(final Project project
, final PsiDirectory dir
);
56 public String
getDefaultFileName() {