jsf generate templates added
[fedora-idea.git] / dom / openapi / src / com / intellij / util / xml / actions / generate / AbstractDomGenerateProvider.java
blob5b378d2fd9e8d774d54e62fd00e7c6a6cee48175
1 package com.intellij.util.xml.actions.generate;
3 import com.intellij.openapi.editor.Editor;
4 import com.intellij.openapi.project.Project;
5 import com.intellij.openapi.util.text.StringUtil;
6 import com.intellij.psi.PsiFile;
7 import com.intellij.psi.codeStyle.NameUtil;
8 import com.intellij.util.xml.DomElement;
9 import com.intellij.util.xml.DomElementNavigationProvider;
10 import org.jetbrains.annotations.Nullable;
12 import java.util.Arrays;
14 public abstract class AbstractDomGenerateProvider<T extends DomElement> extends DefaultGenerateElementProvider<T> {
16 @Nullable private final String myMappingId;
18 public AbstractDomGenerateProvider(final String description, final Class<T> aClass) {
19 this(description, aClass, null);
22 public AbstractDomGenerateProvider(final String description, final Class<T> aClass, String mappingId) {
23 super(description, aClass);
24 myMappingId = mappingId;
27 public T generate(final Project project, final Editor editor, final PsiFile file) {
28 final T t = super.generate(project, editor, file);
30 runTemplate(editor, file, t);
32 return t;
35 protected void runTemplate(final Editor editor, final PsiFile file, final T t) {
36 DomTemplateRunner.getInstance(file.getProject()).runTemplate(t, myMappingId, editor);
39 protected abstract DomElement getParentDomElement(final Project project, final Editor editor, final PsiFile file);
41 protected void doNavigate(final DomElementNavigationProvider navigateProvider, final DomElement copy) {
42 final DomElement element = getElementToNavigate((T)copy);
43 if (element != null) {
44 super.doNavigate(navigateProvider, element);
48 @Nullable
49 protected DomElement getElementToNavigate(final T t) {
50 return t;
53 protected static String getDescription(final Class<? extends DomElement> aClass) {
54 return StringUtil.join(Arrays.asList(NameUtil.nameToWords(aClass.getSimpleName())), " ");