Replace variables in file/live template programatically

Hi,

I have such simple code (shortened to just one template)

public class CreateOMIFileFromTemplateAction extends CreateFileFromTemplateAction {

private static final String ENTITY_TEMPLATE = "Entity";

public CreateOMIFileFromTemplateAction() {
super("OMI", "Create new OMI file", null);
}

@Override
protected void buildDialog(Project project, PsiDirectory directory, CreateFileFromTemplateDialog.Builder builder) {
builder.setTitle("New OMI file");
builder.addKind("Entity ", null, ENTITY_TEMPLATE);
}

@Override
protected String getActionName(PsiDirectory directory, String name, String template) {
return "Creating new OMI file";
}

@Override
protected PsiFile createFile(String name, String templateName, PsiDirectory dir) {
final FileTemplate template = FileTemplateManager.getInstance(dir.getProject()).getInternalTemplate(templateName);
String templateText = template.getText().replace("#[[ENTITY_NAME]]", "entity name here build from modified file path");
template.setText(templateText);
return createFileFromTemplate(name, template, dir);
}

 

I don't know if this is recommend way to do it, but it works OK. But in case I call template directly from Add->New Entity, not Wrapper dialog I am done. I can not override ActionPerformed because is final.

Is there any way to do that?

Thank you.

 

 

0

Please sign in to leave a comment.