ClassDefRow cdr = (ClassDefRow)er;
if (cdr.isClosing()) {
sd.drawDefault("}");
} else {
ClassFile cf = cdr.getClassFile();
ClassSignature classSig = null;
boolean displayGenerics = SystemFacade.getInstance().getPreferences().isSettingTrue(Settings.DISPLAY_GENERICS);
if (displayGenerics) {
SignatureAttribute signature = cf.getAttributes().getSignatureAttribute();
if (signature != null) {
classSig = Signatures.getClassSignature(signature.getSignatureString());
}
}
String access = cf.getAccessString();
if (access.length() > 0) {
sd.drawKeyword(access + " ");
}
if (AccessFlags.isEnum(cf.getAccessFlags())) {
sd.drawKeyword("enum ");
} else if (AccessFlags.isAnnotation(cf.getAccessFlags())) {
sd.drawKeyword("@interface ");
} else if (AccessFlags.isInterface(cf.getAccessFlags())) {
sd.drawKeyword("interface ");
} else {
sd.drawKeyword("class ");
}
sd.drawDefault(cf.getShortClassName());
String superClass = cf.getSuperClassName();
if (classSig != null) {
renderFormalTypeParameters(sd, ia, classSig.getFormalTypeParameters());
}
sd.drawDefault(" ");
if (superClass != null) {
boolean displayExtendsObject = SystemFacade.getInstance().getPreferences().isSettingTrue(Settings.DISPLAY_EXTENDS_OBJECT);
if (!superClass.equals("java.lang.Object") ||
displayExtendsObject) {
sd.drawKeyword("extends ");
if (classSig == null) {
sd.drawDefault(ia.getShortName(superClass));
} else {
renderGenericJavaType(sd, ia, classSig.getSuperClassSignature());
}
sd.drawDefault(" ");
}
}
List interfaces = cf.getInterfaces();
if (interfaces.size() > 0) {
if (AccessFlags.isInterface(cf.getAccessFlags())) {
sd.drawKeyword("extends ");
} else {
sd.drawKeyword("implements ");
}
if (classSig == null) {
for (int i = 0; i < interfaces.size(); i++) {
Interface interface0 = (Interface) interfaces.get(i);
if (i > 0) {
sd.drawDefault(", ");
}
sd.drawDefault(ia.getShortName(interface0.getName()));
}
} else {
boolean first = true;
for (GenericJavaType intf : classSig.getSuperInterfaceSignatures()) {
if (first) {
first = false;
} else {
sd.drawDefault(", ");
}