package com.github.setial.intellijjavadocs.template;
import com.intellij.openapi.components.ApplicationComponent;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiField;
import com.intellij.psi.PsiMethod;
import freemarker.template.Template;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Map;
/**
* The interface Doc template manager.
*
* @author Sergey Timofiychuk
*/
public interface DocTemplateManager extends ApplicationComponent {
/**
* The constant COMPONENT_NAME.
*/
String COMPONENT_NAME = "DocTemplateManager";
/**
* Gets the class template.
*
* @param classElement the Class element
* @return the Class template
*/
@Nullable
Template getClassTemplate(@NotNull PsiClass classElement);
/**
* Gets class templates.
*
* @return the class templates
*/
@NotNull
Map<String, String> getClassTemplates();
/**
* Sets class templates.
*
* @param templates the templates
*/
void setClassTemplates(@NotNull Map<String, String> templates);
/**
* Gets the method template.
*
* @param methodElement the Method element
* @return the Method template
*/
@Nullable
Template getMethodTemplate(@NotNull PsiMethod methodElement);
/**
* Gets method templates.
*
* @return the method templates
*/
@NotNull
Map<String, String> getMethodTemplates();
/**
* Sets method templates.
*
* @param templates the templates
*/
void setMethodTemplates(@NotNull Map<String, String> templates);
/**
* Gets constructor templates.
*
* @return the constructor templates
*/
@NotNull
Map<String, String> getConstructorTemplates();
/**
* Sets constructor templates.
*
* @param templates the templates
*/
void setConstructorTemplates(@NotNull Map<String, String> templates);
/**
* Gets the field template.
*
* @param psiField the Field element
* @return the Field template
*/
@Nullable
Template getFieldTemplate(@NotNull PsiField psiField);
/**
* Gets field templates.
*
* @return the field templates
*/
@NotNull
Map<String, String> getFieldTemplates();
/**
* Sets field templates.
*
* @param templates the templates
*/
void setFieldTemplates(@NotNull Map<String, String> templates);
}