May be this JavaPlugin
class (within org.eclipse.jdt.internal.ui
package of eclipse) may provide you with a first lead to follow.
/**
* Returns the template store for the code generation templates.
*
* @return the template store for the code generation templates
* @since 3.0
*/
public TemplateStore getCodeTemplateStore() {
if (fCodeTemplateStore == null) {
IPreferenceStore store= getPreferenceStore();
boolean alreadyMigrated= store.getBoolean(CODE_TEMPLATES_MIGRATION_KEY);
if (alreadyMigrated)
fCodeTemplateStore= new ContributionTemplateStore(getCodeTemplateContextRegistry(), store, CODE_TEMPLATES_KEY);
else {
fCodeTemplateStore= new CompatibilityTemplateStore(getCodeTemplateContextRegistry(), store, CODE_TEMPLATES_KEY, getOldCodeTemplateStoreInstance());
store.setValue(CODE_TEMPLATES_MIGRATION_KEY, true);
}
try {
fCodeTemplateStore.load();
} catch (IOException JavaDoc e) {
log(e);
}
fCodeTemplateStore.startListeningForPreferenceChanges();
// compatibility / bug fixing code for duplicated templates
// TODO remove for 3.0
CompatibilityTemplateStore.pruneDuplicates(fCodeTemplateStore, true);
}
return fCodeTemplateStore;
}
From there, you could find some class using that function:
NewASInterfaceWizard seems to need to access those code templates:
private String resolveTemplate(String templateName) {
Template template = ASEditorPlugin.getDefault().getCodeTemplateStore().findTemplate(templateName);
if (template == null) {
showErrorBox("Could not resolve template (" + templateName +").");
return "";
}
// Create the template context
TemplateContext templeteContext = new TemplateContext(new ASContextType()) {
public TemplateBuffer evaluate(Template template) throws BadLocationException, TemplateException {
TemplateTranslator translator = new TemplateTranslator();
TemplateBuffer buffer = translator.translate(template);
getContextType().resolve(buffer, this);
return buffer;
}
public boolean canEvaluate(Template template) {
return true;
}
};
try {
return templeteContext.evaluate(template).getString();
} catch (BadLocationException e) {
logger.error("Couldnt evaluate template",e);
} catch (TemplateException e) {
logger.error("Couldnt evaluate template",e);
}
return "";
}
Used like that:
private static final String FILE_HEADER_TEMPLATE = "file_header";
// Header
String header = resolveTemplate(FILE_HEADER_TEMPLATE);
if (header.length() > 0) {
content.append(header + "
");
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…