public FormattingModel createModel(PsiElement element, CodeStyleSettings settings) {
if (!HbConfig.isFormattingEnabled()) {
// formatting is disabled, return the no-op formatter (note that this still delegates formatting
// to the templated language, which lets the users manage that separately)
return new SimpleTemplateLanguageFormattingModelBuilder().createModel(element, settings);
}
final PsiFile file = element.getContainingFile();
Block rootBlock;
ASTNode node = element.getNode();
if (node.getElementType() == HbTokenTypes.OUTER_ELEMENT_TYPE) {
// If we're looking at a HbTokenTypes.OUTER_ELEMENT_TYPE element, then we've been invoked by our templated
// language. Make a dummy block to allow that formatter to continue
return new SimpleTemplateLanguageFormattingModelBuilder().createModel(element, settings);
}
else {
rootBlock = getRootBlock(file, file.getViewProvider(), settings);
}
return new DocumentBasedFormattingModel(rootBlock, element.getProject(), settings, file.getFileType(), file);