diff --git a/openapi/src/com/intellij/debugger/ui/tree/render/CompoundNodeRenderer.java b/openapi/src/com/intellij/debugger/ui/tree/render/CompoundNodeRenderer.java index 8e1250a231f1..2a3e3a8e144c 100644 --- a/openapi/src/com/intellij/debugger/ui/tree/render/CompoundNodeRenderer.java +++ b/openapi/src/com/intellij/debugger/ui/tree/render/CompoundNodeRenderer.java @@ -6,7 +6,6 @@ import com.intellij.debugger.engine.evaluation.EvaluationContext; import com.intellij.debugger.ui.tree.DebuggerTreeNode; import com.intellij.debugger.ui.tree.NodeDescriptor; import com.intellij.debugger.ui.tree.ValueDescriptor; -import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.WriteExternalException; import com.intellij.psi.PsiExpression; @@ -34,7 +33,7 @@ public class CompoundNodeRenderer extends NodeRendererImpl{ myChildrenRenderer = childrenRenderer; } - public NodeRenderer clone() { + public Renderer clone() { CompoundNodeRenderer renderer = (CompoundNodeRenderer)super.clone(); renderer.myLabelRenderer = myLabelRenderer != null ? (ValueLabelRenderer)myLabelRenderer.clone() : null; renderer.myChildrenRenderer = myChildrenRenderer != null ? (ChildrenRenderer)myChildrenRenderer.clone() : null; @@ -90,12 +89,8 @@ public class CompoundNodeRenderer extends NodeRendererImpl{ public void writeExternal(Element element) throws WriteExternalException { super.writeExternal(element); final Element labelRendererElement = NodeRendererExternalizer.writeRenderer(myLabelRenderer); - if (labelRendererElement != null) { - element.addContent(labelRendererElement); - } + element.addContent(labelRendererElement); final Element childrenRendererElement = NodeRendererExternalizer.writeRenderer(myChildrenRenderer); - if (childrenRendererElement != null) { - element.addContent(childrenRendererElement); - } + element.addContent(childrenRendererElement); } } diff --git a/openapi/src/com/intellij/debugger/ui/tree/render/RendererProvider.java b/openapi/src/com/intellij/debugger/ui/tree/render/RendererProvider.java index a20fb719356a..930962daa4c7 100644 --- a/openapi/src/com/intellij/debugger/ui/tree/render/RendererProvider.java +++ b/openapi/src/com/intellij/debugger/ui/tree/render/RendererProvider.java @@ -1,14 +1,11 @@ package com.intellij.debugger.ui.tree.render; -import com.intellij.openapi.util.JDOMExternalizable; import com.intellij.openapi.components.ApplicationComponent; import com.intellij.openapi.options.UnnamedConfigurable; import com.intellij.openapi.project.Project; import java.util.List; -import org.jdom.Element; - /* * Copyright (c) 2000-2004 by JetBrains s.r.o. All Rights Reserved. * Use is subject to license terms. diff --git a/source/com/intellij/debugger/settings/NodeRendererSettingsImpl.java b/source/com/intellij/debugger/settings/NodeRendererSettingsImpl.java index a7cb86380fb0..4454bc5b03b8 100644 --- a/source/com/intellij/debugger/settings/NodeRendererSettingsImpl.java +++ b/source/com/intellij/debugger/settings/NodeRendererSettingsImpl.java @@ -4,6 +4,7 @@ import com.intellij.debugger.impl.DebuggerUtilsEx; import com.intellij.debugger.ui.impl.watch.render.ArrayRenderer; import com.intellij.debugger.ui.impl.watch.render.ClassRenderer; import com.intellij.debugger.ui.impl.watch.render.PrimitiveRenderer; +import com.intellij.debugger.ui.impl.watch.render.DefaultRendererProvider; import com.intellij.debugger.ui.tree.render.*; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.NamedJDOMExternalizable; @@ -25,25 +26,14 @@ public class NodeRendererSettingsImpl extends NodeRendererSettings implements Cl private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.settings.NodeRendererSettingsImpl"); private static final String AUTO_NODE = "node"; - private static final int VERSION = 2; + private static final int VERSION = 3; private EventDispatcher myDispatcher = EventDispatcher.create(NodeRendererSettingsListener.class); private List myRepresentationNodes = new ArrayList(); - private PrimitiveRenderer myPrimitiveRenderer = new PrimitiveRenderer(); + private final DefaultRendererProvider myDefaultRendererProvider; - private ArrayRenderer myArrayRenderer = new ArrayRenderer() { - public void setClassName(String className) { - LOG.assertTrue(this != myArrayRenderer, "Cannot change default renderer"); - } - }; - - private ClassRenderer myClassRenderer = new ClassRenderer() { - public void setClassName(String name) { - LOG.assertTrue(this != myClassRenderer, "Cannot change default renderer"); - } - }; - - public NodeRendererSettingsImpl() { + public NodeRendererSettingsImpl(DefaultRendererProvider defaultRendererProvider) { + myDefaultRendererProvider = defaultRendererProvider; } public String getComponentName() { @@ -74,10 +64,6 @@ public class NodeRendererSettingsImpl extends NodeRendererSettings implements Cl result.addNode(autoRendererNode.clone()); } - result.myPrimitiveRenderer = myPrimitiveRenderer.clone(); - result.myArrayRenderer = myArrayRenderer.clone(); - result.myClassRenderer = myClassRenderer.clone(); - return result; } @@ -155,17 +141,17 @@ public class NodeRendererSettingsImpl extends NodeRendererSettings implements Cl AutoRendererNode autoRendererNode = iterator.next(); result.add(autoRendererNode.getRenderer()); } - result.add(getArrayRenderer()); - result.add(getClassRenderer()); - result.add(getPrimitiveRenderer()); + result.add(myDefaultRendererProvider.getArrayRenderer()); + result.add(myDefaultRendererProvider.getClassRenderer()); + result.add(myDefaultRendererProvider.getPrimitiveRenderer()); return result; } public boolean isDefault(Renderer renderer) { - return renderer == getArrayRenderer() || - renderer == getClassRenderer() || - renderer == getPrimitiveRenderer(); + return renderer == myDefaultRendererProvider.getArrayRenderer() || + renderer == myDefaultRendererProvider.getClassRenderer() || + renderer == myDefaultRendererProvider.getPrimitiveRenderer(); } public List getAutoNodes() { @@ -202,15 +188,15 @@ public class NodeRendererSettingsImpl extends NodeRendererSettings implements Cl } public PrimitiveRenderer getPrimitiveRenderer() { - return myPrimitiveRenderer; + return myDefaultRendererProvider.getPrimitiveRenderer(); } public ArrayRenderer getArrayRenderer() { - return myArrayRenderer; + return myDefaultRendererProvider.getArrayRenderer(); } public ClassRenderer getClassRenderer() { - return myClassRenderer; + return myDefaultRendererProvider.getClassRenderer(); } public void fireRenderersChanged() { diff --git a/source/com/intellij/debugger/ui/impl/watch/ValueDescriptorImpl.java b/source/com/intellij/debugger/ui/impl/watch/ValueDescriptorImpl.java index 913a0f5d2a11..62248a4a4e9f 100644 --- a/source/com/intellij/debugger/ui/impl/watch/ValueDescriptorImpl.java +++ b/source/com/intellij/debugger/ui/impl/watch/ValueDescriptorImpl.java @@ -8,7 +8,6 @@ import com.intellij.debugger.engine.evaluation.EvaluateException; import com.intellij.debugger.engine.evaluation.EvaluationContextImpl; import com.intellij.debugger.impl.DebuggerContextImpl; import com.intellij.debugger.ui.tree.ValueDescriptor; -import com.intellij.debugger.ui.tree.NodeDescriptor; import com.intellij.debugger.ui.tree.render.DescriptorLabelListener; import com.intellij.debugger.ui.tree.render.NodeRenderer; import com.intellij.openapi.application.ApplicationManager; @@ -177,7 +176,7 @@ public abstract class ValueDescriptorImpl extends NodeDescriptorImpl implements super.displayAs(descriptor); } - public NodeRenderer getLastRenderer() { + public com.intellij.debugger.ui.tree.render.Renderer getLastRenderer() { return myRenderer != null ? myRenderer: myAutoRenderer; } @@ -206,9 +205,9 @@ public abstract class ValueDescriptorImpl extends NodeDescriptorImpl implements //returns expression that evaluates tree to this descriptor public PsiExpression getTreeEvaluation(DebuggerTreeNodeImpl debuggerTreeNode, DebuggerContextImpl context) throws EvaluateException { if(debuggerTreeNode.getParent() != null && debuggerTreeNode.getParent().getDescriptor() instanceof ValueDescriptor) { - NodeDescriptorImpl descriptor = ((DebuggerTreeNodeImpl)debuggerTreeNode.getParent()).getDescriptor(); + NodeDescriptorImpl descriptor = debuggerTreeNode.getParent().getDescriptor(); ValueDescriptorImpl vDescriptor = ((ValueDescriptorImpl)descriptor); - PsiExpression parentEvaluation = vDescriptor.getTreeEvaluation((DebuggerTreeNodeImpl)debuggerTreeNode.getParent(), context); + PsiExpression parentEvaluation = vDescriptor.getTreeEvaluation(debuggerTreeNode.getParent(), context); return DebuggerTreeNodeExpression.substituteThis( vDescriptor.getRenderer(context.getDebugProcess()).getChildValueExpression(debuggerTreeNode, context), diff --git a/source/com/intellij/debugger/ui/impl/watch/render/ArrayRenderer.java b/source/com/intellij/debugger/ui/impl/watch/render/ArrayRenderer.java index d1e526d9c614..19064c6ddad3 100644 --- a/source/com/intellij/debugger/ui/impl/watch/render/ArrayRenderer.java +++ b/source/com/intellij/debugger/ui/impl/watch/render/ArrayRenderer.java @@ -13,10 +13,7 @@ import com.intellij.debugger.ui.tree.DebuggerTreeNode; import com.intellij.debugger.ui.tree.NodeDescriptor; import com.intellij.debugger.ui.tree.NodeDescriptorFactory; import com.intellij.debugger.ui.tree.ValueDescriptor; -import com.intellij.debugger.ui.tree.render.ChildrenBuilder; -import com.intellij.debugger.ui.tree.render.DescriptorLabelListener; -import com.intellij.debugger.ui.tree.render.NodeRenderer; -import com.intellij.debugger.ui.tree.render.ReferenceRenderer; +import com.intellij.debugger.ui.tree.render.*; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.DefaultJDOMExternalizer; import com.intellij.openapi.util.InvalidDataException; @@ -40,7 +37,7 @@ import java.util.ListIterator; * Date: Sep 18, 2003 * Time: 3:07:19 PM */ -public class ArrayRenderer extends ReferenceRenderer implements NodeRenderer, Cloneable{ +public class ArrayRenderer extends ReferenceRenderer implements NodeRenderer{ private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.ui.impl.watch.render.ArrayRenderer"); public static final String UNIQUE_ID = "ArrayRenderer"; @@ -50,8 +47,8 @@ public class ArrayRenderer extends ReferenceRenderer implements NodeRenderer, Cl public int ENTRIES_LIMIT = 100; private final static String MORE_ELEMENTS = "..."; - public ArrayRenderer() { - super(DefaultRendererProvider.getInstance(), UNIQUE_ID); + public ArrayRenderer(RendererProvider provider) { + super(provider, UNIQUE_ID); } public String getName() { diff --git a/source/com/intellij/debugger/ui/impl/watch/render/ClassRenderer.java b/source/com/intellij/debugger/ui/impl/watch/render/ClassRenderer.java index 0a141df39704..421c3860164e 100644 --- a/source/com/intellij/debugger/ui/impl/watch/render/ClassRenderer.java +++ b/source/com/intellij/debugger/ui/impl/watch/render/ClassRenderer.java @@ -9,10 +9,7 @@ import com.intellij.debugger.ui.impl.watch.MessageDescriptor; import com.intellij.debugger.ui.impl.watch.NodeManagerImpl; import com.intellij.debugger.ui.impl.watch.ValueDescriptorImpl; import com.intellij.debugger.ui.tree.*; -import com.intellij.debugger.ui.tree.render.ChildrenBuilder; -import com.intellij.debugger.ui.tree.render.DescriptorLabelListener; -import com.intellij.debugger.ui.tree.render.NodeRenderer; -import com.intellij.debugger.ui.tree.render.ReferenceRenderer; +import com.intellij.debugger.ui.tree.render.*; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.DefaultJDOMExternalizer; import com.intellij.openapi.util.InvalidDataException; @@ -45,8 +42,8 @@ public class ClassRenderer extends ReferenceRenderer implements NodeRenderer{ public boolean SHOW_STATIC_FINAL = false; public boolean CHILDREN_PHYSICAL = true; - public ClassRenderer() { - super(DefaultRendererProvider.getInstance(), UNIQUE_ID); + public ClassRenderer(RendererProvider provider) { + super(provider, UNIQUE_ID); } public ClassRenderer clone() { diff --git a/source/com/intellij/debugger/ui/impl/watch/render/PrimitiveRenderer.java b/source/com/intellij/debugger/ui/impl/watch/render/PrimitiveRenderer.java index 342ec27341c6..e44b9987e248 100644 --- a/source/com/intellij/debugger/ui/impl/watch/render/PrimitiveRenderer.java +++ b/source/com/intellij/debugger/ui/impl/watch/render/PrimitiveRenderer.java @@ -28,8 +28,8 @@ public class PrimitiveRenderer extends NodeRendererImpl { private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.ui.impl.watch.render.PrimitiveRenderer"); - public PrimitiveRenderer() { - super(DefaultRendererProvider.getInstance(), UNIQUE_ID); + public PrimitiveRenderer(final RendererProvider provider) { + super(provider, UNIQUE_ID); setName("Default"); }