mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
correctly set edited value
This commit is contained in:
@@ -53,13 +53,7 @@ public abstract class ArrayAction extends DebuggerAction {
|
||||
return;
|
||||
}
|
||||
|
||||
final XValue container = node.getValueContainer();
|
||||
if (!(container instanceof JavaValue)) {
|
||||
return;
|
||||
}
|
||||
|
||||
final ValueDescriptorImpl descriptor = ((JavaValue)container).getDescriptor();
|
||||
ArrayRenderer renderer = getArrayRenderer(descriptor);
|
||||
ArrayRenderer renderer = getArrayRenderer(node.getValueContainer());
|
||||
if (renderer == null) {
|
||||
return;
|
||||
}
|
||||
@@ -85,21 +79,25 @@ public abstract class ArrayAction extends DebuggerAction {
|
||||
boolean enable = false;
|
||||
List<JavaValue> values = ViewAsGroup.getSelectedValues(e);
|
||||
if (values.size() == 1) {
|
||||
enable = getArrayRenderer(values.get(0).getDescriptor()) != null;
|
||||
enable = getArrayRenderer(values.get(0)) != null;
|
||||
}
|
||||
e.getPresentation().setEnabledAndVisible(enable);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static ArrayRenderer getArrayRenderer(ValueDescriptorImpl descriptor) {
|
||||
final Renderer lastRenderer = descriptor.getLastRenderer();
|
||||
if (lastRenderer instanceof ArrayRenderer) {
|
||||
return (ArrayRenderer)lastRenderer;
|
||||
}
|
||||
if (lastRenderer instanceof CompoundNodeRenderer && ((CompoundNodeRenderer)lastRenderer).getChildrenRenderer() instanceof ExpressionChildrenRenderer) {
|
||||
final NodeRenderer lastChildrenRenderer = ExpressionChildrenRenderer.getLastChildrenRenderer(descriptor);
|
||||
if (lastChildrenRenderer instanceof ArrayRenderer) {
|
||||
return (ArrayRenderer)lastChildrenRenderer;
|
||||
public static ArrayRenderer getArrayRenderer(XValue value) {
|
||||
if (value instanceof JavaValue) {
|
||||
ValueDescriptorImpl descriptor = ((JavaValue)value).getDescriptor();
|
||||
final Renderer lastRenderer = descriptor.getLastRenderer();
|
||||
if (lastRenderer instanceof ArrayRenderer) {
|
||||
return (ArrayRenderer)lastRenderer;
|
||||
}
|
||||
if (lastRenderer instanceof CompoundNodeRenderer &&
|
||||
((CompoundNodeRenderer)lastRenderer).getChildrenRenderer() instanceof ExpressionChildrenRenderer) {
|
||||
final NodeRenderer lastChildrenRenderer = ExpressionChildrenRenderer.getLastChildrenRenderer(descriptor);
|
||||
if (lastChildrenRenderer instanceof ArrayRenderer) {
|
||||
return (ArrayRenderer)lastChildrenRenderer;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
@@ -107,15 +105,13 @@ public abstract class ArrayAction extends DebuggerAction {
|
||||
|
||||
public static void setArrayRenderer(ArrayRenderer newRenderer, @NotNull XValueNodeImpl node, @NotNull DebuggerContextImpl debuggerContext) {
|
||||
XValue container = node.getValueContainer();
|
||||
if (!(container instanceof JavaValue)) {
|
||||
|
||||
ArrayRenderer renderer = getArrayRenderer(container);
|
||||
if (renderer == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
ValueDescriptorImpl descriptor = ((JavaValue)container).getDescriptor();
|
||||
ArrayRenderer renderer = getArrayRenderer(descriptor);
|
||||
if (renderer == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
DebugProcessImpl debugProcess = debuggerContext.getDebugProcess();
|
||||
if (debugProcess != null) {
|
||||
|
||||
+5
@@ -38,6 +38,11 @@ import javax.swing.tree.TreeNode
|
||||
* @author egor
|
||||
*/
|
||||
class ArrayFilterInplaceEditor(node: XDebuggerTreeNode, val myTemp : Boolean) : XDebuggerTreeInplaceEditor(node, "arrayFilter") {
|
||||
init {
|
||||
val arrayRenderer = ArrayAction.getArrayRenderer((myNode.parent as XValueNodeImpl).valueContainer)
|
||||
myExpressionEditor.expression = if (arrayRenderer is ArrayRenderer.Filtered) arrayRenderer.expression else null
|
||||
}
|
||||
|
||||
override fun cancelEditing() {
|
||||
super.cancelEditing()
|
||||
if (myTemp) (myNode.parent as XValueNodeImpl).removeTemporaryEditorNode(myNode)
|
||||
|
||||
Reference in New Issue
Block a user