diff --git a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRenderer.java b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRenderer.java index e160e304a3b..69db8d5598a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRenderer.java +++ b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRenderer.java @@ -24,13 +24,24 @@ import org.jetbrains.jet.lang.diagnostics.rendering.Renderer; import org.jetbrains.jet.lang.types.JetType; public interface DescriptorRenderer extends Renderer { - DescriptorRenderer COMPACT_WITH_MODIFIERS = new DescriptorRendererImpl(false, false, true, false, false, null, TextFormat.PLAIN); - DescriptorRenderer COMPACT = new DescriptorRendererImpl(false, false, false, false, false, null, TextFormat.PLAIN); - DescriptorRenderer STARTS_FROM_NAME = new DescriptorRendererImpl(false, false, false, true, false, null, TextFormat.PLAIN); - DescriptorRenderer TEXT = new DescriptorRendererImpl(false, true, true, false, false, null, TextFormat.PLAIN); - DescriptorRenderer SHORT_NAMES_IN_TYPES = new DescriptorRendererImpl(true, true, true, false, false, null, TextFormat.PLAIN); - DescriptorRenderer DEBUG_TEXT = new DescriptorRendererImpl(false, true, true, false, true, null, TextFormat.PLAIN); - DescriptorRenderer HTML = new DescriptorRendererImpl(false, true, true, false, false, null, TextFormat.HTML); + DescriptorRenderer COMPACT_WITH_MODIFIERS = new DescriptorRendererBuilder().setWithDefinedIn(false).build(); + + DescriptorRenderer COMPACT = new DescriptorRendererBuilder() + .setWithDefinedIn(false) + .setModifiers(false).build(); + + DescriptorRenderer STARTS_FROM_NAME = new DescriptorRendererBuilder() + .setWithDefinedIn(false) + .setModifiers(false) + .setStartFromName(true).build(); + + DescriptorRenderer TEXT = new DescriptorRendererBuilder().build(); + + DescriptorRenderer SHORT_NAMES_IN_TYPES = new DescriptorRendererBuilder().setShortNames(true).build(); + + DescriptorRenderer DEBUG_TEXT = new DescriptorRendererBuilder().setDebugMode(true).build(); + + DescriptorRenderer HTML = new DescriptorRendererBuilder().setTextFormat(TextFormat.HTML).build(); String renderType(JetType type); diff --git a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererBuilder.java b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererBuilder.java new file mode 100644 index 00000000000..295b899d0e9 --- /dev/null +++ b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererBuilder.java @@ -0,0 +1,74 @@ +/* + * Copyright 2010-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.jet.renderer; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class DescriptorRendererBuilder { + private boolean shortNames = false; + private boolean withDefinedIn = true; + private boolean modifiers = true; + private boolean startFromName = false; + private boolean debugMode = false; + @Nullable + private DescriptorRenderer.ValueParametersHandler valueParametersHandler = null; + @NotNull + private DescriptorRenderer.TextFormat textFormat = DescriptorRenderer.TextFormat.PLAIN; + + public DescriptorRendererBuilder() { + } + + public DescriptorRendererBuilder setShortNames(boolean shortNames) { + this.shortNames = shortNames; + return this; + } + + public DescriptorRendererBuilder setWithDefinedIn(boolean withDefinedIn) { + this.withDefinedIn = withDefinedIn; + return this; + } + + public DescriptorRendererBuilder setModifiers(boolean modifiers) { + this.modifiers = modifiers; + return this; + } + + public DescriptorRendererBuilder setStartFromName(boolean startFromName) { + this.startFromName = startFromName; + return this; + } + + public DescriptorRendererBuilder setDebugMode(boolean debugMode) { + this.debugMode = debugMode; + return this; + } + + public DescriptorRendererBuilder setValueParametersHandler(@Nullable DescriptorRenderer.ValueParametersHandler valueParametersHandler) { + this.valueParametersHandler = valueParametersHandler; + return this; + } + + public DescriptorRendererBuilder setTextFormat(@NotNull DescriptorRenderer.TextFormat textFormat) { + this.textFormat = textFormat; + return this; + } + + public DescriptorRenderer build() { + return new DescriptorRendererImpl(shortNames, withDefinedIn, modifiers, startFromName, debugMode, valueParametersHandler, textFormat); + } +} diff --git a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java index 41e4a43aac2..744c71855ec 100644 --- a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java @@ -75,7 +75,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer { @NotNull private final TextFormat textFormat; - public DescriptorRendererImpl( + /* package */ DescriptorRendererImpl( boolean shortNames, boolean withDefinedIn, boolean modifiers, diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/ktSignature/AddKotlinSignatureAnnotation.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/ktSignature/AddKotlinSignatureAnnotation.java index 5ec74ae4861..50d002232d4 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/ktSignature/AddKotlinSignatureAnnotation.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/ktSignature/AddKotlinSignatureAnnotation.java @@ -42,6 +42,7 @@ import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.plugin.JetBundle; import org.jetbrains.jet.plugin.JetIcons; import org.jetbrains.jet.renderer.DescriptorRenderer; +import org.jetbrains.jet.renderer.DescriptorRendererBuilder; import org.jetbrains.jet.renderer.DescriptorRendererImpl; import javax.swing.*; @@ -53,8 +54,10 @@ import static org.jetbrains.jet.plugin.codeInsight.ktSignature.KotlinSignatureUt * @since 16 Aug 2012 */ public class AddKotlinSignatureAnnotation extends BaseIntentionAction implements Iconable { - private static final DescriptorRenderer RENDERER = new DescriptorRendererImpl(true, false, false, false, false, null, - DescriptorRenderer.TextFormat.PLAIN); + private static final DescriptorRenderer RENDERER = new DescriptorRendererBuilder() + .setShortNames(true) + .setModifiers(false) + .setWithDefinedIn(false).build(); public AddKotlinSignatureAnnotation() { setText(JetBundle.message("add.kotlin.signature.action.text")); diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/HtmlTabledDescriptorRenderer.java b/idea/src/org/jetbrains/jet/plugin/highlighter/HtmlTabledDescriptorRenderer.java index 71065069102..47cc4e57f9b 100644 --- a/idea/src/org/jetbrains/jet/plugin/highlighter/HtmlTabledDescriptorRenderer.java +++ b/idea/src/org/jetbrains/jet/plugin/highlighter/HtmlTabledDescriptorRenderer.java @@ -28,7 +28,7 @@ import org.jetbrains.jet.lang.diagnostics.rendering.TabledDescriptorRenderer.Tab import org.jetbrains.jet.lang.resolve.calls.inference.ConstraintPosition; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.renderer.DescriptorRenderer; -import org.jetbrains.jet.renderer.DescriptorRendererImpl; +import org.jetbrains.jet.renderer.DescriptorRendererBuilder; import java.util.Iterator; import java.util.List; @@ -152,7 +152,7 @@ public class HtmlTabledDescriptorRenderer extends TabledDescriptorRenderer { super(); } - public static final DescriptorRenderer.ValueParametersHandler RENDERER_HANDLER = new DescriptorRenderer.ValueParametersHandler() { + private static final DescriptorRenderer.ValueParametersHandler VALUE_PARAMETERS_HANDLER = new DescriptorRenderer.ValueParametersHandler() { @Override public void appendBeforeValueParameter(@NotNull ValueParameterDescriptor parameter, @NotNull StringBuilder stringBuilder) { stringBuilder.append("
"); @@ -187,8 +187,11 @@ public class HtmlTabledDescriptorRenderer extends TabledDescriptorRenderer { } }; - public static final DescriptorRenderer DESCRIPTOR_IN_TABLE = - new DescriptorRendererImpl(false, false, false, false, false, RENDERER_HANDLER, DescriptorRenderer.TextFormat.HTML); + public static final DescriptorRenderer DESCRIPTOR_IN_TABLE = new DescriptorRendererBuilder() + .setWithDefinedIn(false) + .setModifiers(false) + .setValueParametersHandler(VALUE_PARAMETERS_HANDLER) + .setTextFormat(DescriptorRenderer.TextFormat.HTML).build(); private static void td(StringBuilder builder, String text) { builder.append("
").append(text).append("
");