mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
made toString - default label renderer for compound renderers
This commit is contained in:
@@ -31,6 +31,7 @@ import com.intellij.debugger.ui.impl.DebuggerTreeRenderer;
|
||||
import com.intellij.debugger.ui.impl.watch.*;
|
||||
import com.intellij.debugger.ui.tree.*;
|
||||
import com.intellij.debugger.ui.tree.render.*;
|
||||
import com.intellij.debugger.ui.tree.render.Renderer;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -294,17 +295,20 @@ public class JavaValue extends XNamedValue implements NodeDescriptorProvider, XV
|
||||
}
|
||||
}
|
||||
|
||||
String value = myValue;
|
||||
if (myValueDescriptor.isString()) {
|
||||
renderer.renderStringValue(myValue, "\"", XValueNode.MAX_VALUE_LENGTH);
|
||||
return;
|
||||
}
|
||||
else if (myValueDescriptor.getLastRenderer() instanceof ToStringRenderer ||
|
||||
myValueDescriptor.getLastRenderer() instanceof ToStringBasedRenderer) {
|
||||
value = StringUtil.wrapWithDoubleQuote(truncateToMaxLength(myValue));
|
||||
|
||||
String value = truncateToMaxLength(myValue);
|
||||
Renderer lastRenderer = myValueDescriptor.getLastRenderer();
|
||||
if (lastRenderer instanceof CompoundTypeRenderer) {
|
||||
lastRenderer = ((CompoundTypeRenderer)lastRenderer).getLabelRenderer();
|
||||
}
|
||||
else if (myValueDescriptor.getLastRenderer() instanceof CompoundTypeRenderer) {
|
||||
value = truncateToMaxLength(myValue);
|
||||
if (lastRenderer instanceof ToStringRenderer) {
|
||||
if (!StringUtil.isEmpty(value)) {
|
||||
value = StringUtil.wrapWithDoubleQuote(value);
|
||||
}
|
||||
}
|
||||
renderer.renderValue(value);
|
||||
}
|
||||
|
||||
+2
-3
@@ -357,11 +357,10 @@ class CompoundRendererConfigurable extends JPanel {
|
||||
|
||||
final ValueLabelRenderer labelRenderer = myRenderer.getLabelRenderer();
|
||||
final ChildrenRenderer childrenRenderer = myRenderer.getChildrenRenderer();
|
||||
final NodeRendererSettings rendererSettings = NodeRendererSettings.getInstance();
|
||||
|
||||
myShowTypeCheckBox.setSelected(myRenderer.isShowType());
|
||||
|
||||
if (rendererSettings.isBase(labelRenderer)) {
|
||||
if (myRenderer.isBaseRenderer(labelRenderer)) {
|
||||
myLabelEditor.setExpression(TextWithImportsImpl.toXExpression(emptyExpressionFragment));
|
||||
myRbDefaultLabel.setSelected(true);
|
||||
}
|
||||
@@ -373,7 +372,7 @@ class CompoundRendererConfigurable extends JPanel {
|
||||
getTableModel().clear();
|
||||
myAppendDefaultChildren.setSelected(false);
|
||||
|
||||
if (rendererSettings.isBase(childrenRenderer)) {
|
||||
if (myRenderer.isBaseRenderer(childrenRenderer)) {
|
||||
myRbDefaultChildrenRenderer.setSelected(true);
|
||||
myChildrenEditor.setExpression(TextWithImportsImpl.toXExpression(emptyExpressionFragment));
|
||||
myChildrenExpandedEditor.setExpression(TextWithImportsImpl.toXExpression(emptyExpressionFragment));
|
||||
|
||||
@@ -263,10 +263,6 @@ public class NodeRendererSettings implements PersistentStateComponent<Element> {
|
||||
return allRenderers;
|
||||
}
|
||||
|
||||
public boolean isBase(final Renderer renderer) {
|
||||
return renderer == myPrimitiveRenderer || renderer == myArrayRenderer || renderer == myClassRenderer;
|
||||
}
|
||||
|
||||
public Renderer readRenderer(Element root) throws InvalidDataException {
|
||||
if (root == null) {
|
||||
return null;
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@ import java.util.Collections;
|
||||
/**
|
||||
* @author egor
|
||||
*/
|
||||
class ClassObjectRenderer extends ToStringBasedRenderer implements FullValueEvaluatorProvider {
|
||||
class ClassObjectRenderer extends CompoundReferenceRenderer implements FullValueEvaluatorProvider {
|
||||
private static final Logger LOG = Logger.getInstance(ClassObjectRenderer.class);
|
||||
|
||||
public ClassObjectRenderer(final NodeRendererSettings rendererSettings) {
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 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.
|
||||
@@ -28,7 +28,7 @@ import java.awt.*;
|
||||
/**
|
||||
* Created by Egor on 04.10.2014.
|
||||
*/
|
||||
class ColorObjectRenderer extends ToStringBasedRenderer {
|
||||
class ColorObjectRenderer extends CompoundReferenceRenderer {
|
||||
public ColorObjectRenderer(final NodeRendererSettings rendererSettings) {
|
||||
super(rendererSettings, "Color", null, null);
|
||||
setClassName("java.awt.Color");
|
||||
|
||||
+44
-5
@@ -18,14 +18,20 @@ package com.intellij.debugger.ui.tree.render;
|
||||
import com.intellij.debugger.DebuggerContext;
|
||||
import com.intellij.debugger.engine.DebugProcess;
|
||||
import com.intellij.debugger.engine.DebuggerUtils;
|
||||
import com.intellij.debugger.engine.evaluation.EvaluateException;
|
||||
import com.intellij.debugger.engine.evaluation.EvaluationContext;
|
||||
import com.intellij.debugger.settings.NodeRendererSettings;
|
||||
import com.intellij.debugger.ui.tree.DebuggerTreeNode;
|
||||
import com.intellij.debugger.ui.tree.ValueDescriptor;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.PsiJavaParserFacadeImpl;
|
||||
import com.intellij.psi.CommonClassNames;
|
||||
import com.intellij.psi.JavaPsiFacade;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiElementFactory;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.sun.jdi.ReferenceType;
|
||||
import com.sun.jdi.Type;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -33,6 +39,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
public class CompoundTypeRenderer extends CompoundNodeRenderer {
|
||||
public static final @NonNls String UNIQUE_ID = "CompoundTypeRenderer";
|
||||
protected static final Logger LOG = Logger.getInstance("#com.intellij.debugger.ui.tree.render.CompoundReferenceRenderer");
|
||||
private static final AutoToStringRenderer AUTO_TO_STRING_RENDERER = new AutoToStringRenderer();
|
||||
|
||||
public CompoundTypeRenderer(NodeRendererSettings rendererSettings,
|
||||
String name,
|
||||
@@ -46,7 +53,7 @@ public class CompoundTypeRenderer extends CompoundNodeRenderer {
|
||||
|
||||
public void setLabelRenderer(ValueLabelRenderer labelRenderer) {
|
||||
final ValueLabelRenderer prevRenderer = getLabelRenderer();
|
||||
super.setLabelRenderer(myRendererSettings.isBase(labelRenderer) ? null : labelRenderer);
|
||||
super.setLabelRenderer(isBaseRenderer(labelRenderer) ? null : labelRenderer);
|
||||
final ValueLabelRenderer currentRenderer = getLabelRenderer();
|
||||
if (prevRenderer != currentRenderer) {
|
||||
if (currentRenderer instanceof TypeRenderer) {
|
||||
@@ -57,7 +64,7 @@ public class CompoundTypeRenderer extends CompoundNodeRenderer {
|
||||
|
||||
public void setChildrenRenderer(ChildrenRenderer childrenRenderer) {
|
||||
final ChildrenRenderer prevRenderer = getChildrenRenderer();
|
||||
super.setChildrenRenderer(myRendererSettings.isBase(childrenRenderer) ? null : childrenRenderer);
|
||||
super.setChildrenRenderer(isBaseRenderer(childrenRenderer) ? null : childrenRenderer);
|
||||
final ChildrenRenderer currentRenderer = getChildrenRenderer();
|
||||
if (prevRenderer != currentRenderer) {
|
||||
if (currentRenderer instanceof TypeRenderer) {
|
||||
@@ -76,7 +83,7 @@ public class CompoundTypeRenderer extends CompoundNodeRenderer {
|
||||
if (TypeConversionUtil.isPrimitive(name)) {
|
||||
return myRendererSettings.getPrimitiveRenderer();
|
||||
}
|
||||
return name.endsWith("]") ? myRendererSettings.getArrayRenderer() : myRendererSettings.getClassRenderer();
|
||||
return name.endsWith("]") ? myRendererSettings.getArrayRenderer() : AUTO_TO_STRING_RENDERER;
|
||||
}
|
||||
|
||||
public ValueLabelRenderer getLabelRenderer() {
|
||||
@@ -142,4 +149,36 @@ public class CompoundTypeRenderer extends CompoundNodeRenderer {
|
||||
PsiElementFactory elementFactory = JavaPsiFacade.getInstance(project).getElementFactory();
|
||||
return elementFactory.createExpressionFromText(text, getContext(project, context));
|
||||
}
|
||||
|
||||
public boolean isBaseRenderer(Renderer renderer) {
|
||||
return renderer == AUTO_TO_STRING_RENDERER ||
|
||||
renderer == myRendererSettings.getClassRenderer() ||
|
||||
renderer == myRendererSettings.getPrimitiveRenderer() ||
|
||||
renderer == myRendererSettings.getArrayRenderer();
|
||||
}
|
||||
|
||||
private static class AutoToStringRenderer extends ToStringRenderer {
|
||||
@Override
|
||||
public String getUniqueId() {
|
||||
return "AutoToString";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isApplicable(Type type) {
|
||||
return type instanceof ReferenceType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String calcLabel(ValueDescriptor descriptor, EvaluationContext evaluationContext, DescriptorLabelListener listener)
|
||||
throws EvaluateException {
|
||||
NodeRendererSettings nodeRendererSettings = NodeRendererSettings.getInstance();
|
||||
ToStringRenderer toStringRenderer = nodeRendererSettings.getToStringRenderer();
|
||||
if (toStringRenderer.isEnabled() && toStringRenderer.isApplicable(descriptor.getType())) {
|
||||
return toStringRenderer.calcLabel(descriptor, evaluationContext, listener);
|
||||
}
|
||||
else {
|
||||
return nodeRendererSettings.getClassRenderer().calcLabel(descriptor, evaluationContext, listener);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ import com.intellij.openapi.util.registry.Registry;
|
||||
/**
|
||||
* @author egor
|
||||
*/
|
||||
public class FileObjectRenderer extends ToStringBasedRenderer {
|
||||
public class FileObjectRenderer extends CompoundReferenceRenderer {
|
||||
public FileObjectRenderer(final NodeRendererSettings rendererSettings) {
|
||||
super(rendererSettings, "File", null, NodeRendererSettings.createExpressionChildrenRenderer("listFiles()", null));
|
||||
setClassName("java.io.File");
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 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.
|
||||
@@ -30,7 +30,7 @@ import javax.swing.*;
|
||||
/**
|
||||
* @author egor
|
||||
*/
|
||||
public class GraphicsObjectRenderer extends ToStringBasedRenderer implements FullValueEvaluatorProvider {
|
||||
public class GraphicsObjectRenderer extends CompoundReferenceRenderer implements FullValueEvaluatorProvider {
|
||||
public GraphicsObjectRenderer(final NodeRendererSettings rendererSettings) {
|
||||
super(rendererSettings, "Graphics", null, null);
|
||||
setClassName("sun.java2d.SunGraphics2D");
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 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.
|
||||
@@ -36,7 +36,7 @@ import javax.swing.*;
|
||||
/**
|
||||
* Created by Egor on 04.10.2014.
|
||||
*/
|
||||
class IconObjectRenderer extends ToStringBasedRenderer implements FullValueEvaluatorProvider {
|
||||
class IconObjectRenderer extends CompoundReferenceRenderer implements FullValueEvaluatorProvider {
|
||||
public IconObjectRenderer(final NodeRendererSettings rendererSettings) {
|
||||
super(rendererSettings, "Icon", null, null);
|
||||
setClassName("javax.swing.Icon");
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 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.
|
||||
@@ -41,7 +41,7 @@ import java.util.List;
|
||||
/**
|
||||
* Created by Egor on 04.10.2014.
|
||||
*/
|
||||
class ImageObjectRenderer extends ToStringBasedRenderer implements FullValueEvaluatorProvider {
|
||||
class ImageObjectRenderer extends CompoundReferenceRenderer implements FullValueEvaluatorProvider {
|
||||
private static final Logger LOG = Logger.getInstance(ImageObjectRenderer.class);
|
||||
|
||||
public ImageObjectRenderer(final NodeRendererSettings rendererSettings) {
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 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.
|
||||
@@ -38,7 +38,7 @@ import java.util.Collections;
|
||||
/**
|
||||
* @author egor
|
||||
*/
|
||||
class StackTraceElementObjectRenderer extends ToStringBasedRenderer implements FullValueEvaluatorProvider {
|
||||
class StackTraceElementObjectRenderer extends CompoundReferenceRenderer implements FullValueEvaluatorProvider {
|
||||
private static final Logger LOG = Logger.getInstance(StackTraceElementObjectRenderer.class);
|
||||
|
||||
public StackTraceElementObjectRenderer(final NodeRendererSettings rendererSettings) {
|
||||
|
||||
+3
-26
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 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.
|
||||
@@ -15,16 +15,13 @@
|
||||
*/
|
||||
package com.intellij.debugger.ui.tree.render;
|
||||
|
||||
import com.intellij.debugger.DebuggerManagerEx;
|
||||
import com.intellij.debugger.engine.evaluation.EvaluateException;
|
||||
import com.intellij.debugger.engine.evaluation.EvaluationContext;
|
||||
import com.intellij.debugger.settings.NodeRendererSettings;
|
||||
import com.intellij.debugger.ui.tree.ValueDescriptor;
|
||||
import com.intellij.debugger.ui.tree.render.*;
|
||||
|
||||
/**
|
||||
* @author egor
|
||||
* @deprecated all CompoundTypeRenderers now have default toString renderer
|
||||
*/
|
||||
@Deprecated
|
||||
public abstract class ToStringBasedRenderer extends CompoundReferenceRenderer {
|
||||
public ToStringBasedRenderer(NodeRendererSettings rendererSettings,
|
||||
String name,
|
||||
@@ -32,24 +29,4 @@ public abstract class ToStringBasedRenderer extends CompoundReferenceRenderer {
|
||||
ChildrenRenderer childrenRenderer) {
|
||||
super(rendererSettings, name, labelRenderer, childrenRenderer);
|
||||
}
|
||||
|
||||
public String calcLabel(ValueDescriptor descriptor,
|
||||
EvaluationContext evaluationContext,
|
||||
DescriptorLabelListener listener) throws EvaluateException {
|
||||
String res = calcToStringLabel(descriptor, evaluationContext, listener);
|
||||
if (res != null) {
|
||||
return res;
|
||||
}
|
||||
return super.calcLabel(descriptor, evaluationContext, listener);
|
||||
}
|
||||
|
||||
protected String calcToStringLabel(ValueDescriptor descriptor, EvaluationContext evaluationContext, DescriptorLabelListener listener)
|
||||
throws EvaluateException {
|
||||
final ToStringRenderer toStringRenderer = myRendererSettings.getToStringRenderer();
|
||||
if (toStringRenderer.isEnabled() && DebuggerManagerEx.getInstanceEx(evaluationContext.getProject()).getContext().isEvaluationPossible()) {
|
||||
return toStringRenderer.calcLabel(descriptor, evaluationContext, listener);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user