protected void buildTemplate(final Template template, final JSClass jsClass) { if (JSInheritanceUtil.findMember( "tearDown", jsClass, JSInheritanceUtil.SearchedMemberType.Methods, JSFunction.FunctionKind.SIMPLE, true) != null) { template.addTextSegment( "[After]\npublic override function tearDown():void{\nsuper.tearDown();"); template.addEndVariable(); template.addTextSegment("\n}"); } else { template.addTextSegment("[After]\npublic function tearDown():void{\n"); template.addEndVariable(); template.addTextSegment("\n}"); } }
private static Template generateTemplate( Project project, String exprText, final PsiType[] suggestedTypes) { final TemplateManager templateManager = TemplateManager.getInstance(project); final Template template = templateManager.createTemplate("", ""); template.setToReformat(true); Set<LookupElement> itemSet = new LinkedHashSet<>(); for (PsiType type : suggestedTypes) { itemSet.add(PsiTypeLookupItem.createLookupItem(type, null)); } final LookupElement[] lookupItems = itemSet.toArray(new LookupElement[itemSet.size()]); final Result result = suggestedTypes.length > 0 ? new PsiTypeResult(suggestedTypes[0], project) : null; Expression expr = new Expression() { @Override public LookupElement[] calculateLookupItems(ExpressionContext context) { return lookupItems.length > 1 ? lookupItems : null; } @Override public Result calculateResult(ExpressionContext context) { return result; } @Override public Result calculateQuickResult(ExpressionContext context) { return null; } }; template.addTextSegment("(("); template.addVariable(TYPE_TEMPLATE_VARIABLE, expr, expr, true); template.addTextSegment(")" + exprText + ")"); template.addEndVariable(); return template; }