Got rid of all subclasses of DescriptorRenderer but HTML.

This commit is contained in:
Evgeny Gerashchenko
2012-12-13 21:28:30 +04:00
parent 204ba8b2f4
commit 7047267937
3 changed files with 49 additions and 90 deletions
@@ -47,49 +47,13 @@ public class DescriptorRendererImpl implements Renderer<DeclarationDescriptor> {
} }
} }
public static final DescriptorRendererImpl COMPACT_WITH_MODIFIERS = new DescriptorRendererImpl(false, null) { public static final DescriptorRendererImpl COMPACT_WITH_MODIFIERS = new DescriptorRendererImpl(false, false, true, false, false, null);
@Override public static final DescriptorRendererImpl COMPACT = new DescriptorRendererImpl(false, false, false, false, false, null);
protected boolean shouldRenderDefinedIn() { public static final DescriptorRendererImpl STARTS_FROM_NAME = new DescriptorRendererImpl(false, false, false, true, false, null);
return false; public static final DescriptorRendererImpl TEXT = new DescriptorRendererImpl(false, true, true, false, false, null);
} public static final DescriptorRendererImpl SHORT_NAMES_IN_TYPES = new DescriptorRendererImpl(true, true, true, false, false, null);
}; public static final DescriptorRendererImpl DEBUG_TEXT = new DescriptorRendererImpl(false, true, true, false, true, null);
public static final DescriptorRendererImpl COMPACT = new DescriptorRendererImpl(false, null) { public static final DescriptorRendererImpl HTML = new HtmlDescriptorRendererImpl(false, true, true, false, null);
@Override
protected boolean shouldRenderDefinedIn() {
return false;
}
@Override
protected boolean shouldRenderModifiers() {
return false;
}
};
public static final DescriptorRendererImpl STARTS_FROM_NAME = new DescriptorRendererImpl(false, null) {
@Override
protected boolean shouldRenderDefinedIn() {
return false;
}
@Override
protected boolean shouldRenderModifiers() {
return false;
}
@Override
protected boolean shouldStartsFromName() {
return true;
}
};
public static final DescriptorRendererImpl TEXT = new DescriptorRendererImpl(false, null);
public static final DescriptorRendererImpl SHORT_NAMES_IN_TYPES = new DescriptorRendererImpl(true, null);
public static final DescriptorRendererImpl DEBUG_TEXT = new DescriptorRendererImpl(false, null) {
@Override
protected boolean hasDefaultValue(ValueParameterDescriptor descriptor) {
// hasDefaultValue() has effects
return descriptor.declaresDefaultValue();
}
};
public static final DescriptorRendererImpl HTML = new HtmlDescriptorRendererImpl(false, null);
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
protected final DeclarationDescriptorVisitor<Void, StringBuilder> subVisitor = new RenderDeclarationDescriptorVisitor() { protected final DeclarationDescriptorVisitor<Void, StringBuilder> subVisitor = new RenderDeclarationDescriptorVisitor() {
@Override @Override
@@ -110,16 +74,37 @@ public class DescriptorRendererImpl implements Renderer<DeclarationDescriptor> {
private final RenderDeclarationDescriptorVisitor rootVisitor = new RenderDeclarationDescriptorVisitor(); private final RenderDeclarationDescriptorVisitor rootVisitor = new RenderDeclarationDescriptorVisitor();
private final boolean shortNames; private final boolean shortNames;
private final boolean withDefinedIn;
private final boolean modifiers;
private final boolean startFromName;
private final boolean debugMode;
@Nullable @Nullable
private final ValueParametersHandler handler; private final ValueParametersHandler handler;
public DescriptorRendererImpl(boolean shortNames, @Nullable ValueParametersHandler handler) { public DescriptorRendererImpl(
boolean shortNames,
boolean withDefinedIn,
boolean modifiers,
boolean startFromName,
boolean debugMode,
@Nullable ValueParametersHandler handler
) {
this.shortNames = shortNames; this.shortNames = shortNames;
this.withDefinedIn = withDefinedIn;
this.modifiers = modifiers;
this.startFromName = startFromName;
this.handler = handler; this.handler = handler;
this.debugMode = debugMode;
} }
protected boolean hasDefaultValue(ValueParameterDescriptor descriptor) { private boolean hasDefaultValue(ValueParameterDescriptor descriptor) {
return descriptor.hasDefaultValue(); if (debugMode) {
// hasDefaultValue() has effects
return descriptor.declaresDefaultValue();
}
else {
return descriptor.hasDefaultValue();
}
} }
protected String renderKeyword(String keyword) { protected String renderKeyword(String keyword) {
@@ -258,7 +243,7 @@ public class DescriptorRendererImpl implements Renderer<DeclarationDescriptor> {
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
declarationDescriptor.accept(rootVisitor, stringBuilder); declarationDescriptor.accept(rootVisitor, stringBuilder);
if (shouldRenderDefinedIn()) { if (withDefinedIn) {
appendDefinedIn(declarationDescriptor, stringBuilder); appendDefinedIn(declarationDescriptor, stringBuilder);
} }
return stringBuilder.toString(); return stringBuilder.toString();
@@ -270,18 +255,6 @@ public class DescriptorRendererImpl implements Renderer<DeclarationDescriptor> {
return stringBuilder.toString(); return stringBuilder.toString();
} }
protected boolean shouldRenderDefinedIn() {
return true;
}
protected boolean shouldRenderModifiers() {
return true;
}
protected boolean shouldStartsFromName() {
return false;
}
private void appendDefinedIn(DeclarationDescriptor declarationDescriptor, StringBuilder stringBuilder) { private void appendDefinedIn(DeclarationDescriptor declarationDescriptor, StringBuilder stringBuilder) {
if (declarationDescriptor instanceof ModuleDescriptor) { if (declarationDescriptor instanceof ModuleDescriptor) {
stringBuilder.append(" is a module"); stringBuilder.append(" is a module");
@@ -323,8 +296,14 @@ public class DescriptorRendererImpl implements Renderer<DeclarationDescriptor> {
} }
public static class HtmlDescriptorRendererImpl extends DescriptorRendererImpl { public static class HtmlDescriptorRendererImpl extends DescriptorRendererImpl {
public HtmlDescriptorRendererImpl(boolean shortNames, @Nullable ValueParametersHandler handler) { public HtmlDescriptorRendererImpl(
super(shortNames, handler); boolean shortNames,
boolean withDefinedIn,
boolean modifiers,
boolean startFromName,
@Nullable ValueParametersHandler handler
) {
super(shortNames, withDefinedIn, modifiers, startFromName, false, handler);
} }
@Override @Override
@@ -390,7 +369,7 @@ public class DescriptorRendererImpl implements Renderer<DeclarationDescriptor> {
) { ) {
String typeString = lt() + "no type>"; String typeString = lt() + "no type>";
if (outType != null) { if (outType != null) {
if (isVar != null && !shouldStartsFromName()) { if (isVar != null && !startFromName) {
builder.append(renderKeyword(isVar ? "var" : "val")).append(" "); builder.append(renderKeyword(isVar ? "var" : "val")).append(" ");
} }
typeString = renderType(outType); typeString = renderType(outType);
@@ -407,7 +386,7 @@ public class DescriptorRendererImpl implements Renderer<DeclarationDescriptor> {
@Override @Override
public Void visitPropertyDescriptor(PropertyDescriptor descriptor, StringBuilder builder) { public Void visitPropertyDescriptor(PropertyDescriptor descriptor, StringBuilder builder) {
if (!shouldStartsFromName()) { if (!startFromName) {
renderVisibility(descriptor.getVisibility(), builder); renderVisibility(descriptor.getVisibility(), builder);
renderModality(descriptor.getModality(), builder); renderModality(descriptor.getModality(), builder);
} }
@@ -423,7 +402,7 @@ public class DescriptorRendererImpl implements Renderer<DeclarationDescriptor> {
} }
private void renderVisibility(Visibility visibility, StringBuilder builder) { private void renderVisibility(Visibility visibility, StringBuilder builder) {
if (!shouldRenderModifiers()) return; if (!modifiers) return;
if ("package".equals(visibility.toString())) { if ("package".equals(visibility.toString())) {
builder.append("public/*package*/ "); builder.append("public/*package*/ ");
} }
@@ -433,7 +412,7 @@ public class DescriptorRendererImpl implements Renderer<DeclarationDescriptor> {
} }
private void renderModality(Modality modality, StringBuilder builder) { private void renderModality(Modality modality, StringBuilder builder) {
if (!shouldRenderModifiers()) return; if (!modifiers) return;
String keyword = ""; String keyword = "";
switch (modality) { switch (modality) {
case FINAL: case FINAL:
@@ -451,7 +430,7 @@ public class DescriptorRendererImpl implements Renderer<DeclarationDescriptor> {
@Override @Override
public Void visitFunctionDescriptor(FunctionDescriptor descriptor, StringBuilder builder) { public Void visitFunctionDescriptor(FunctionDescriptor descriptor, StringBuilder builder) {
if (!shouldStartsFromName()) { if (!startFromName) {
renderVisibility(descriptor.getVisibility(), builder); renderVisibility(descriptor.getVisibility(), builder);
renderModality(descriptor.getModality(), builder); renderModality(descriptor.getModality(), builder);
builder.append(renderKeyword("fun")).append(" "); builder.append(renderKeyword("fun")).append(" ");
@@ -594,7 +573,7 @@ public class DescriptorRendererImpl implements Renderer<DeclarationDescriptor> {
public void renderClassDescriptor(ClassDescriptor descriptor, StringBuilder builder, String keyword) { public void renderClassDescriptor(ClassDescriptor descriptor, StringBuilder builder, String keyword) {
boolean isNotClassObject = descriptor.getKind() != ClassKind.CLASS_OBJECT; boolean isNotClassObject = descriptor.getKind() != ClassKind.CLASS_OBJECT;
if (!shouldStartsFromName()) { if (!startFromName) {
if (isNotClassObject) { if (isNotClassObject) {
renderVisibility(descriptor.getVisibility(), builder); renderVisibility(descriptor.getVisibility(), builder);
if (descriptor.getKind() != ClassKind.TRAIT && descriptor.getKind() != ClassKind.OBJECT) { if (descriptor.getKind() != ClassKind.TRAIT && descriptor.getKind() != ClassKind.OBJECT) {
@@ -627,7 +606,7 @@ public class DescriptorRendererImpl implements Renderer<DeclarationDescriptor> {
} }
} }
protected void renderName(DeclarationDescriptor descriptor, StringBuilder stringBuilder) { private void renderName(DeclarationDescriptor descriptor, StringBuilder stringBuilder) {
stringBuilder.append(escape(DescriptorRendererImpl.this.renderName(descriptor.getName()))); stringBuilder.append(escape(DescriptorRendererImpl.this.renderName(descriptor.getName())));
} }
@@ -52,17 +52,7 @@ import static org.jetbrains.jet.plugin.codeInsight.ktSignature.KotlinSignatureUt
* @since 16 Aug 2012 * @since 16 Aug 2012
*/ */
public class AddKotlinSignatureAnnotation extends BaseIntentionAction implements Iconable { public class AddKotlinSignatureAnnotation extends BaseIntentionAction implements Iconable {
private static final DescriptorRendererImpl RENDERER = new DescriptorRendererImpl(true, null) { private static final DescriptorRendererImpl RENDERER = new DescriptorRendererImpl(true, false, false, false, false, null);
@Override
protected boolean shouldRenderDefinedIn() {
return false;
}
@Override
protected boolean shouldRenderModifiers() {
return false;
}
};
public AddKotlinSignatureAnnotation() { public AddKotlinSignatureAnnotation() {
setText(JetBundle.message("add.kotlin.signature.action.text")); setText(JetBundle.message("add.kotlin.signature.action.text"));
@@ -187,17 +187,7 @@ public class HtmlTabledDescriptorRenderer extends TabledDescriptorRenderer {
}; };
public static final DescriptorRendererImpl DESCRIPTOR_IN_TABLE = public static final DescriptorRendererImpl DESCRIPTOR_IN_TABLE =
new DescriptorRendererImpl.HtmlDescriptorRendererImpl(false, RENDERER_HANDLER) { new DescriptorRendererImpl.HtmlDescriptorRendererImpl(false, false, false, false, RENDERER_HANDLER);
@Override
protected boolean shouldRenderDefinedIn() {
return false;
}
@Override
protected boolean shouldRenderModifiers() {
return false;
}
};
private static void td(StringBuilder builder, String text) { private static void td(StringBuilder builder, String text) {
builder.append("<td><div style=\"white-space:nowrap;\">").append(text).append("</div></td>"); builder.append("<td><div style=\"white-space:nowrap;\">").append(text).append("</div></td>");