@NotNull public Object[] getVariants() { final AntDomMacroDef parentMacrodef = getParentMacrodef(); if (parentMacrodef != null) { final List variants = new ArrayList(); for (AntDomMacrodefAttribute attribute : parentMacrodef.getMacroAttributes()) { final String attribName = attribute.getName().getStringValue(); if (attribName != null && attribName.length() > 0) { final LookupElementBuilder builder = LookupElementBuilder.create(attribName); final LookupElement element = AutoCompletionPolicy.GIVE_CHANCE_TO_OVERWRITE.applyPolicy(builder); variants.add(element); } } return ContainerUtil.toArray(variants, new Object[variants.size()]); } return EMPTY_ARRAY; }
public PsiElement resolve(PsiReference psiReference, boolean incompleteCode) { final PsiElement element = psiReference.getElement(); if (element == null) { return null; } final DomElement domElement = DomUtil.getDomElement(element); if (domElement == null) { return null; } final AntDomMacroDef macrodef = domElement.getParentOfType(AntDomMacroDef.class, false); if (macrodef == null) { return null; } final String name = AntStringResolver.computeString(domElement, psiReference.getCanonicalText()); for (AntDomMacrodefAttribute attribute : macrodef.getMacroAttributes()) { if (name.equals(attribute.getName().getStringValue())) { final DomTarget target = DomTarget.getTarget(attribute); return target != null ? PomService.convertToPsi(target) : null; } } return null; }