From e122c5662165fce23d3e3b529b763010dcaa736c Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Tue, 4 Jul 2017 20:34:32 +0300 Subject: [PATCH] IDEA-175168 On-demand renderers - use on-demand for filtered out toString enabled types --- .../ui/tree/render/LabelRenderer.java | 4 ++-- .../ui/tree/render/OnDemandRenderer.java | 6 ++--- .../ui/tree/render/ToStringRenderer.java | 24 +++++++++---------- .../ui/tree/render/UnboxableTypeRenderer.java | 2 +- 4 files changed, 17 insertions(+), 19 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/LabelRenderer.java b/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/LabelRenderer.java index 75055969cdc2..577ecc6e317f 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/LabelRenderer.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/LabelRenderer.java @@ -122,8 +122,8 @@ public class LabelRenderer extends TypeRenderer implements ValueLabelRenderer, O } @Override - public boolean isOnDemand(EvaluationContext evaluationContext) { - return myOnDemand || OnDemandRenderer.super.isOnDemand(evaluationContext); + public boolean isOnDemand(EvaluationContext evaluationContext, ValueDescriptor valueDescriptor) { + return myOnDemand || OnDemandRenderer.super.isOnDemand(evaluationContext, valueDescriptor); } public boolean isOnDemand() { diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/OnDemandRenderer.java b/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/OnDemandRenderer.java index 0b39caa9450b..ef3509aacbdc 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/OnDemandRenderer.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/OnDemandRenderer.java @@ -40,7 +40,7 @@ public interface OnDemandRenderer extends FullValueEvaluatorProvider { @Override default XFullValueEvaluator getFullValueEvaluator(EvaluationContextImpl evaluationContext, ValueDescriptorImpl valueDescriptor) { - if (isOnDemand(evaluationContext) && !isCalculated(valueDescriptor)) { + if (isOnDemand(evaluationContext, valueDescriptor) && !isCalculated(valueDescriptor)) { return createFullValueEvaluator(getLinkText()); } return null; @@ -48,12 +48,12 @@ public interface OnDemandRenderer extends FullValueEvaluatorProvider { String getLinkText(); - default boolean isOnDemand(EvaluationContext evaluationContext) { + default boolean isOnDemand(EvaluationContext evaluationContext, ValueDescriptor valueDescriptor) { return isOnDemandForced(evaluationContext); } default boolean isShowValue(ValueDescriptor valueDescriptor, EvaluationContext evaluationContext) { - return !isOnDemand(evaluationContext) || isCalculated(valueDescriptor); + return !isOnDemand(evaluationContext, valueDescriptor) || isCalculated(valueDescriptor); } static XFullValueEvaluator createFullValueEvaluator(String text) { diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/ToStringRenderer.java b/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/ToStringRenderer.java index 5de3c1f16d64..21ccbcc53195 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/ToStringRenderer.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/ToStringRenderer.java @@ -116,27 +116,25 @@ public class ToStringRenderer extends NodeRendererImpl implements OnDemandRender USE_CLASS_FILTERS = value; } + @Override + public boolean isOnDemand(EvaluationContext evaluationContext, ValueDescriptor valueDescriptor) { + if (USE_CLASS_FILTERS && !isFiltered(valueDescriptor.getType())) { + return true; + } + return OnDemandRenderer.super.isOnDemand(evaluationContext, valueDescriptor); + } + @Override public boolean isApplicable(Type type) { - if(!(type instanceof ReferenceType)) { + if (!(type instanceof ReferenceType)) { return false; } - if(JAVA_LANG_STRING.equals(type.name())) { + if (JAVA_LANG_STRING.equals(type.name())) { return false; // do not render 'String' objects for performance reasons } - if(!overridesToString(type)) { - return false; - } - - if (USE_CLASS_FILTERS) { - if (!isFiltered(type)) { - return false; - } - } - - return true; + return overridesToString(type); } @SuppressWarnings({"HardCodedStringLiteral"}) diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/UnboxableTypeRenderer.java b/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/UnboxableTypeRenderer.java index 56e8a8293c5a..e33b6038b6e1 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/UnboxableTypeRenderer.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/UnboxableTypeRenderer.java @@ -40,7 +40,7 @@ public abstract class UnboxableTypeRenderer extends CompoundReferenceRenderer { } @Override - public boolean isOnDemand(EvaluationContext evaluationContext) { + public boolean isOnDemand(EvaluationContext evaluationContext, ValueDescriptor valueDescriptor) { return false; } }, null);