@Override public void visit(Tree.TypedDeclaration that) { super.visit(that); Tree.Identifier id = that.getIdentifier(); if (id != null) { Type type = that.getType().getTypeModel(); if (type != null) { TypeDeclaration td = type.getDeclaration(); if ((td instanceof ClassOrInterface || td instanceof TypeParameter) && td.equals(declaration)) { String text = id.getText(); String name = declaration.getName(); if (text.equalsIgnoreCase(name) || text.endsWith(name)) { identifiers.add(id); } } } } }
static StyledString getStyledLabelFor(Node n) { // TODO: it would be much better to render types // from the tree nodes instead of from the // model nodes if (n instanceof Tree.TypeParameterDeclaration) { Tree.TypeParameterDeclaration ac = (Tree.TypeParameterDeclaration) n; return new StyledString(name(ac.getIdentifier())); } if (n instanceof Tree.AnyClass) { Tree.AnyClass ac = (Tree.AnyClass) n; StyledString label = new StyledString("class ", KW_STYLER); label.append(name(ac.getIdentifier()), TYPE_ID_STYLER); parameters(ac.getTypeParameterList(), label); parameters(ac.getParameterList(), label); return label; } else if (n instanceof Tree.AnyInterface) { Tree.AnyInterface ai = (Tree.AnyInterface) n; StyledString label = new StyledString("interface ", KW_STYLER); label.append(name(ai.getIdentifier()), TYPE_ID_STYLER); parameters(ai.getTypeParameterList(), label); return label; } else if (n instanceof Tree.ObjectDefinition) { Tree.ObjectDefinition ai = (Tree.ObjectDefinition) n; return new StyledString("object ", KW_STYLER).append(name(ai.getIdentifier()), ID_STYLER); } else if (n instanceof Tree.AttributeSetterDefinition) { Tree.AttributeSetterDefinition ai = (Tree.AttributeSetterDefinition) n; return new StyledString("assign ", KW_STYLER).append(name(ai.getIdentifier()), ID_STYLER); } else if (n instanceof Tree.TypedDeclaration) { Tree.TypedDeclaration td = (Tree.TypedDeclaration) n; String type; Styler styler; if (td.getType() instanceof Tree.VoidModifier) { type = "void"; styler = KW_STYLER; } else { type = type(td.getType()); styler = TYPE_STYLER; } StyledString label = new StyledString(type, styler); label.append(" ").append(name(td.getIdentifier()), ID_STYLER); if (n instanceof Tree.AnyMethod) { Tree.AnyMethod am = (Tree.AnyMethod) n; parameters(am.getTypeParameterList(), label); for (Tree.ParameterList pl : am.getParameterLists()) { parameters(pl, label); } } return label; } else if (n instanceof Tree.CompilationUnit) { Tree.CompilationUnit ai = (Tree.CompilationUnit) n; return new StyledString(ai.getUnit().getFilename()); } else if (n instanceof Tree.ImportList) { return new StyledString("imports"); } else if (n instanceof Tree.Import) { Tree.Import ai = (Tree.Import) n; if (ai.getImportPath() != null && !ai.getImportPath().getIdentifiers().isEmpty()) { return new StyledString(toPath(ai), QUALIFIER_STYLER); } } else if (n instanceof PackageNode) { PackageNode pn = (PackageNode) n; if (pn.getPackageName().isEmpty()) { return new StyledString("default package"); } else { return new StyledString(pn.getPackageName(), QUALIFIER_STYLER); } } return new StyledString("<something>"); }