public static void editNew(@NotNull XValueNodeImpl parentNode) { ValueDescriptorImpl descriptor = ((JavaValue) parentNode.getValueContainer()).getDescriptor(); EnumerationChildrenRenderer renderer = EnumerationChildrenRenderer.getCurrent(descriptor); XDebuggerTreeNode newNode = parentNode.addTemporaryEditorNode(); DebuggerUIUtil.invokeLater( () -> new CustomFieldInplaceEditor(newNode, null, renderer) { @Override public void cancelEditing() { super.cancelEditing(); parentNode.removeTemporaryEditorNode(newNode); } @Override protected List<Pair<String, TextWithImports>> getRendererChildren() { if (myRenderer != null) { return myRenderer.getChildren(); } String name = getTypeName(descriptor); EnumerationChildrenRenderer enumerationChildrenRenderer = new EnumerationChildrenRenderer(); enumerationChildrenRenderer.setAppendDefaultChildren(true); Renderer lastRenderer = descriptor.getLastRenderer(); if (lastRenderer instanceof CompoundNodeRenderer && !(((CompoundNodeRenderer) lastRenderer).getChildrenRenderer() instanceof ExpressionChildrenRenderer)) { ((CompoundNodeRenderer) lastRenderer) .setChildrenRenderer(enumerationChildrenRenderer); } else { NodeRenderer renderer = NodeRendererSettings.getInstance() .createCompoundTypeRenderer( name, name, null, enumerationChildrenRenderer); renderer.setEnabled(true); NodeRendererSettings.getInstance().getCustomRenderers().addRenderer(renderer); NodeRendererSettings.getInstance().fireRenderersChanged(); } return enumerationChildrenRenderer.getChildren(); } }.show()); }
protected List<Pair<String, TextWithImports>> getRendererChildren() { return myRenderer.getChildren(); }