public void visitXmlAttribute(XmlAttribute attribute) {
super.visitXmlAttribute(attribute);
if (Constants.WICKET_ID.equals(attribute.getName())) {
XmlAttributeValue attributeValue = attribute.getValueElement();
if (attributeValue != null && hasReference(attributeValue, MarkupWicketIdReference.class)) {
HighlightInfo highlightInfo = createHighlightInfo(WicketForgeColorSettingsPage.HIGHLIGHT_MARKUPWICKETID, attributeValue.getTextRange());
if (highlightInfo != null) {
workList.add(highlightInfo);
}
}
}
}
});
highlights = workList;
} else if (file instanceof PsiJavaFile) {
// Class
final List<HighlightInfo> workList = new SmartList<HighlightInfo>();
for (PsiClass psiClass : ((PsiJavaFile) file).getClasses()) {
psiClass.accept(new JavaRecursiveElementVisitor() {
@Override
public void visitCallExpression(PsiCallExpression callExpression) {
super.visitCallExpression(callExpression);
PsiClass classToBeCreated = WicketPsiUtil.getClassToBeCreated(callExpression);
// if its a component
if (classToBeCreated != null && WicketPsiUtil.isWicketComponent(classToBeCreated)) {
// highlight wicketId expression (but only if its not a page)
if (!WicketPsiUtil.isWicketPage(classToBeCreated)) {
PsiExpression wicketIdExpression = WicketPsiUtil.getWicketIdExpressionFromArguments(callExpression);
if (wicketIdExpression != null) {
// only PsiLiteralExpression are resolvable wicketIds
HighlightInfoType type;
if (hasReference(wicketIdExpression, ClassWicketIdReference.class)) {
type = WicketForgeColorSettingsPage.HIGHLIGHT_JAVAWICKETID;
} else {
type = WicketForgeColorSettingsPage.HIGHLIGHT_JAVAWICKETID_NOTRESOLVABLE;
}
HighlightInfo highlightInfo = createHighlightInfo(type, wicketIdExpression.getTextRange());
if (highlightInfo != null) {
workList.add(highlightInfo);
}
}
}