TemplateImpl (String groupName, @NotNull Element element, @NotNull ClassLoader classLoader, @NotNull LiveTemplateContextService ltContextService) { String name = element.getAttributeValue(NAME); String value = element.getAttributeValue(VALUE); String description; String resourceBundle = element.getAttributeValue(RESOURCE_BUNDLE); String key = element.getAttributeValue(KEY); String id = element.getAttributeValue(ID); if (resourceBundle != null && key != null) { ResourceBundle bundle = DynamicBundle.getResourceBundle(classLoader, resourceBundle); description = bundle.getString(key); } else { description = element.getAttributeValue(DESCRIPTION); //NON-NLS } String shortcut = element.getAttributeValue(SHORTCUT); TemplateImpl template = createTemplate(name, value, groupName, description, shortcut, id); template.setToReformat(Boolean.parseBoolean(element.getAttributeValue(TO_REFORMAT))); template.setToShortenLongNames(Boolean.parseBoolean(element.getAttributeValue(TO_SHORTEN_FQ_NAMES))); template.setDeactivated(Boolean.parseBoolean(element.getAttributeValue(DEACTIVATED))); String useStaticImport = element.getAttributeValue(USE_STATIC_IMPORT); if (useStaticImport != null) { template.setValue(TemplateImpl.Property.USE_STATIC_IMPORT_IF_POSSIBLE, Boolean.parseBoolean(useStaticImport)); } for (Element e : element.getChildren(VARIABLE)) { String variableName = e.getAttributeValue(NAME); String expression = e.getAttributeValue(EXPRESSION); String defaultValue = e.getAttributeValue(DEFAULT_VALUE); boolean isAlwaysStopAt = Boolean.parseBoolean(e.getAttributeValue(ALWAYS_STOP_AT)); template.addVariable(variableName, expression, defaultValue, isAlwaysStopAt); } Element context = element.getChild(CONTEXT); if (context != null) { template.getTemplateContext().readTemplateContext(context, ltContextService); } return template; }