mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-159007 Allow to keep class fields in enumeration children renderers
This commit is contained in:
+19
-8
@@ -68,6 +68,7 @@ class CompoundRendererConfigurable extends JPanel {
|
||||
private XDebuggerExpressionEditor myListChildrenEditor;
|
||||
private final JLabel myExpandedLabel;
|
||||
private JBTable myTable;
|
||||
private final JBCheckBox myAppendDefaultChildren;
|
||||
@NonNls private static final String EMPTY_PANEL_ID = "EMPTY";
|
||||
@NonNls private static final String DATA_PANEL_ID = "DATA";
|
||||
private static final int NAME_TABLE_COLUMN = 0;
|
||||
@@ -132,6 +133,8 @@ class CompoundRendererConfigurable extends JPanel {
|
||||
}
|
||||
});
|
||||
|
||||
myAppendDefaultChildren = new JBCheckBox(DebuggerBundle.message("label.compound.renderer.configurable.append.default.children"));
|
||||
|
||||
JPanel panel = new JPanel(new GridBagLayout());
|
||||
panel.add(new JLabel(DebuggerBundle.message("label.compound.renderer.configurable.apply.to")),
|
||||
new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 1.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE,
|
||||
@@ -176,6 +179,9 @@ class CompoundRendererConfigurable extends JPanel {
|
||||
panel.add(myChildrenListEditor,
|
||||
new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 1.0, 1.0, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH,
|
||||
JBUI.insets(4, 30, 0, 0), 0, 0));
|
||||
panel.add(myAppendDefaultChildren,
|
||||
new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 1.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE,
|
||||
JBUI.insetsLeft(25), 0, 0));
|
||||
add(new JPanel(), EMPTY_PANEL_ID);
|
||||
add(panel, DATA_PANEL_ID);
|
||||
}
|
||||
@@ -214,7 +220,10 @@ class CompoundRendererConfigurable extends JPanel {
|
||||
myChildrenExpandedEditor.setEnabled(isChildrenExpression);
|
||||
myExpandedLabel.setEnabled(isChildrenExpression);
|
||||
myChildrenEditor.setEnabled(isChildrenExpression);
|
||||
myTable.setEnabled(myRbListChildrenRenderer.isSelected());
|
||||
|
||||
boolean isListChildren = myRbListChildrenRenderer.isSelected();
|
||||
myTable.setEnabled(isListChildren);
|
||||
myAppendDefaultChildren.setEnabled(isListChildren);
|
||||
}
|
||||
|
||||
private JComponent createChildrenListEditor(JavaDebuggerEditorsProvider editorsProvider) {
|
||||
@@ -318,7 +327,9 @@ class CompoundRendererConfigurable extends JPanel {
|
||||
((ExpressionChildrenRenderer)childrenRenderer).setChildrenExpandable(TextWithImportsImpl.fromXExpression(myChildrenExpandedEditor.getExpression()));
|
||||
}
|
||||
else if (myRbListChildrenRenderer.isSelected()) {
|
||||
childrenRenderer = new EnumerationChildrenRenderer(getTableModel().getExpressions());
|
||||
EnumerationChildrenRenderer enumerationChildrenRenderer = new EnumerationChildrenRenderer(getTableModel().getExpressions());
|
||||
enumerationChildrenRenderer.setAppendDefaultChildren(myAppendDefaultChildren.isSelected());
|
||||
childrenRenderer = enumerationChildrenRenderer;
|
||||
}
|
||||
renderer.setChildrenRenderer(childrenRenderer);
|
||||
// classname
|
||||
@@ -351,28 +362,28 @@ class CompoundRendererConfigurable extends JPanel {
|
||||
myLabelEditor.setExpression(TextWithImportsImpl.toXExpression(((LabelRenderer)labelRenderer).getLabelExpression()));
|
||||
}
|
||||
|
||||
getTableModel().clear();
|
||||
myAppendDefaultChildren.setSelected(false);
|
||||
|
||||
if (rendererSettings.isBase(childrenRenderer)) {
|
||||
myRbDefaultChildrenRenderer.setSelected(true);
|
||||
myChildrenEditor.setExpression(TextWithImportsImpl.toXExpression(emptyExpressionFragment));
|
||||
myChildrenExpandedEditor.setExpression(TextWithImportsImpl.toXExpression(emptyExpressionFragment));
|
||||
getTableModel().clear();
|
||||
}
|
||||
else if (childrenRenderer instanceof ExpressionChildrenRenderer) {
|
||||
myRbExpressionChildrenRenderer.setSelected(true);
|
||||
final ExpressionChildrenRenderer exprRenderer = (ExpressionChildrenRenderer)childrenRenderer;
|
||||
myChildrenEditor.setExpression(TextWithImportsImpl.toXExpression(exprRenderer.getChildrenExpression()));
|
||||
myChildrenExpandedEditor.setExpression(TextWithImportsImpl.toXExpression(exprRenderer.getChildrenExpandable()));
|
||||
getTableModel().clear();
|
||||
}
|
||||
else {
|
||||
myRbListChildrenRenderer.setSelected(true);
|
||||
myChildrenEditor.setExpression(TextWithImportsImpl.toXExpression(emptyExpressionFragment));
|
||||
myChildrenExpandedEditor.setExpression(TextWithImportsImpl.toXExpression(emptyExpressionFragment));
|
||||
if (childrenRenderer instanceof EnumerationChildrenRenderer) {
|
||||
getTableModel().init(((EnumerationChildrenRenderer)childrenRenderer).getChildren());
|
||||
}
|
||||
else {
|
||||
getTableModel().clear();
|
||||
EnumerationChildrenRenderer enumerationRenderer = (EnumerationChildrenRenderer)childrenRenderer;
|
||||
getTableModel().init(enumerationRenderer.getChildren());
|
||||
myAppendDefaultChildren.setSelected(enumerationRenderer.isAppendDefaultChildren());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+25
-1
@@ -16,6 +16,7 @@
|
||||
package com.intellij.debugger.ui.tree.render;
|
||||
|
||||
import com.intellij.debugger.DebuggerContext;
|
||||
import com.intellij.debugger.engine.DebugProcessImpl;
|
||||
import com.intellij.debugger.engine.DebuggerUtils;
|
||||
import com.intellij.debugger.engine.evaluation.EvaluateException;
|
||||
import com.intellij.debugger.engine.evaluation.EvaluationContext;
|
||||
@@ -24,6 +25,7 @@ import com.intellij.debugger.impl.descriptors.data.UserExpressionData;
|
||||
import com.intellij.debugger.ui.impl.watch.ValueDescriptorImpl;
|
||||
import com.intellij.debugger.ui.tree.*;
|
||||
import com.intellij.openapi.util.InvalidDataException;
|
||||
import com.intellij.openapi.util.JDOMExternalizerUtil;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.WriteExternalException;
|
||||
import com.intellij.psi.PsiElement;
|
||||
@@ -42,7 +44,10 @@ import java.util.List;
|
||||
public final class EnumerationChildrenRenderer extends ReferenceRenderer implements ChildrenRenderer{
|
||||
public static final @NonNls String UNIQUE_ID = "EnumerationChildrenRenderer";
|
||||
|
||||
private boolean myAppendDefaultChildren;
|
||||
private List<Pair<String, TextWithImports>> myChildren;
|
||||
|
||||
public static final @NonNls String APPEND_DEFAULT_NAME = "AppendDefault";
|
||||
public static final @NonNls String CHILDREN_EXPRESSION = "ChildrenExpression";
|
||||
public static final @NonNls String CHILD_NAME = "Name";
|
||||
|
||||
@@ -55,6 +60,14 @@ public final class EnumerationChildrenRenderer extends ReferenceRenderer impleme
|
||||
myChildren = children;
|
||||
}
|
||||
|
||||
public void setAppendDefaultChildren(boolean appendDefaultChildren) {
|
||||
myAppendDefaultChildren = appendDefaultChildren;
|
||||
}
|
||||
|
||||
public boolean isAppendDefaultChildren() {
|
||||
return myAppendDefaultChildren;
|
||||
}
|
||||
|
||||
public String getUniqueId() {
|
||||
return UNIQUE_ID;
|
||||
}
|
||||
@@ -68,6 +81,8 @@ public final class EnumerationChildrenRenderer extends ReferenceRenderer impleme
|
||||
|
||||
myChildren.clear();
|
||||
|
||||
myAppendDefaultChildren = "true".equals(JDOMExternalizerUtil.readField(element, APPEND_DEFAULT_NAME));
|
||||
|
||||
List<Element> children = element.getChildren(CHILDREN_EXPRESSION);
|
||||
for (Element item : children) {
|
||||
String name = item.getAttributeValue(CHILD_NAME);
|
||||
@@ -80,6 +95,10 @@ public final class EnumerationChildrenRenderer extends ReferenceRenderer impleme
|
||||
public void writeExternal(Element element) throws WriteExternalException {
|
||||
super.writeExternal(element);
|
||||
|
||||
if (myAppendDefaultChildren) {
|
||||
JDOMExternalizerUtil.writeField(element, APPEND_DEFAULT_NAME, "true");
|
||||
}
|
||||
|
||||
for (Pair<String, TextWithImports> pair : myChildren) {
|
||||
Element child = new Element(CHILDREN_EXPRESSION);
|
||||
child.setAttribute(CHILD_NAME, pair.getFirst());
|
||||
@@ -101,6 +120,10 @@ public final class EnumerationChildrenRenderer extends ReferenceRenderer impleme
|
||||
);
|
||||
}
|
||||
builder.setChildren(children);
|
||||
|
||||
if (myAppendDefaultChildren) {
|
||||
DebugProcessImpl.getDefaultRenderer(value).buildChildren(value, builder, evaluationContext);
|
||||
}
|
||||
}
|
||||
|
||||
public PsiElement getChildValueExpression(DebuggerTreeNode node, DebuggerContext context) throws EvaluateException {
|
||||
@@ -108,7 +131,8 @@ public final class EnumerationChildrenRenderer extends ReferenceRenderer impleme
|
||||
}
|
||||
|
||||
public boolean isExpandable(Value value, EvaluationContext evaluationContext, NodeDescriptor parentDescriptor) {
|
||||
return myChildren.size() > 0;
|
||||
return myChildren.size() > 0 ||
|
||||
(myAppendDefaultChildren && DebugProcessImpl.getDefaultRenderer(value).isExpandable(value, evaluationContext, parentDescriptor));
|
||||
}
|
||||
|
||||
public List<Pair<String, TextWithImports>> getChildren() {
|
||||
|
||||
@@ -215,6 +215,7 @@ label.compound.renderer.configurable.when.expanding=When expanding a node
|
||||
label.compound.renderer.configurable.test.can.expand=Test if a node can be expanded (optional):
|
||||
title.compound.renderer.configurable.choose.renderer.reference.type=Renderer Reference Type
|
||||
text.base.renderer.configurable.no.class.patterns=No class patterns configured
|
||||
label.compound.renderer.configurable.append.default.children=Append default children
|
||||
button.add=Add
|
||||
button.remove=&Remove
|
||||
button.move.up=Move &Up
|
||||
|
||||
Reference in New Issue
Block a user