Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@
import java.util.List;

public abstract class ArrayAction extends DebuggerAction {
@RequiredUIAccess
@Override
@RequiredUIAccess
public void actionPerformed(@Nonnull AnActionEvent e) {
DebuggerContextImpl debuggerContext = DebuggerAction.getDebuggerContext(e.getDataContext());

Expand All @@ -55,7 +55,7 @@ public void actionPerformed(@Nonnull AnActionEvent e) {
return;
}

final XValueNode node = tree.getSelectedNode();
XValueNode node = tree.getSelectedNode();
if (node == null) {
return;
}
Expand All @@ -69,13 +69,22 @@ public void actionPerformed(@Nonnull AnActionEvent e) {
//String label = selectedNode.toString();
//int index = label.indexOf('=');
//if (index > 0) {
// title = title + " " + label.substring(index);
// title = title + " " + label.substring(index);
//}
createNewRenderer(node, renderer, debuggerContext, node.getName()).doWhenDone(newRenderer -> setArrayRenderer(newRenderer, node, debuggerContext));
createNewRenderer(node, renderer, debuggerContext, node.getName()).doWhenDone(newRenderer -> setArrayRenderer(
newRenderer,
node,
debuggerContext
));
}

@Nonnull
protected abstract AsyncResult<ArrayRenderer> createNewRenderer(XValueNode node, ArrayRenderer original, @Nonnull DebuggerContextImpl debuggerContext, String title);
protected abstract AsyncResult<ArrayRenderer> createNewRenderer(
XValueNode node,
ArrayRenderer original,
@Nonnull DebuggerContextImpl debuggerContext,
String title
);

@RequiredUIAccess
@Override
Expand All @@ -90,20 +99,19 @@ public void update(@Nonnull AnActionEvent e) {

@Nullable
public static ArrayRenderer getArrayRenderer(XValue value) {
if (value instanceof JavaValue) {
ValueDescriptorImpl descriptor = ((JavaValue) value).getDescriptor();
if (value instanceof JavaValue javaValue) {
ValueDescriptorImpl descriptor = javaValue.getDescriptor();
Renderer lastRenderer = descriptor.getLastRenderer();
if (lastRenderer instanceof CompoundNodeRenderer) {
ChildrenRenderer childrenRenderer = ((CompoundNodeRenderer) lastRenderer).getChildrenRenderer();
if (childrenRenderer instanceof ExpressionChildrenRenderer) {
lastRenderer = ExpressionChildrenRenderer.getLastChildrenRenderer(descriptor);
if (lastRenderer == null) {
lastRenderer = ((ExpressionChildrenRenderer) childrenRenderer).getPredictedRenderer();
}
if (lastRenderer instanceof CompoundNodeRenderer compoundNodeRenderer
&& compoundNodeRenderer.getChildrenRenderer() instanceof ExpressionChildrenRenderer expressionChildrenRenderer) {
lastRenderer = ExpressionChildrenRenderer.getLastChildrenRenderer(descriptor);
if (lastRenderer == null) {
lastRenderer = expressionChildrenRenderer.getPredictedRenderer();
}
}
if (lastRenderer instanceof ArrayRenderer) {
return (ArrayRenderer) lastRenderer;

if (lastRenderer instanceof ArrayRenderer arrayRenderer) {
return arrayRenderer;
}
}
return null;
Expand All @@ -117,24 +125,22 @@ public static void setArrayRenderer(ArrayRenderer newRenderer, @Nonnull XValueNo
return;
}

ValueDescriptorImpl descriptor = ((JavaValue) container).getDescriptor();
ValueDescriptorImpl descriptor = ((JavaValue)container).getDescriptor();

DebugProcessImpl debugProcess = debuggerContext.getDebugProcess();
if (debugProcess != null) {
debugProcess.getManagerThread().schedule(new SuspendContextCommandImpl(debuggerContext.getSuspendContext()) {
@Override
public void contextAction(@Nonnull SuspendContextImpl suspendContext) throws Exception {
final Renderer lastRenderer = descriptor.getLastRenderer();
Renderer lastRenderer = descriptor.getLastRenderer();
if (lastRenderer instanceof ArrayRenderer) {
((JavaValue) container).setRenderer(newRenderer, node);
((JavaValue)container).setRenderer(newRenderer, node);
Application.get().invokeLater(() -> node.getTree().expand(node));
}
else if (lastRenderer instanceof CompoundNodeRenderer) {
final CompoundNodeRenderer compoundRenderer = (CompoundNodeRenderer) lastRenderer;
final ChildrenRenderer childrenRenderer = compoundRenderer.getChildrenRenderer();
if (childrenRenderer instanceof ExpressionChildrenRenderer) {
else if (lastRenderer instanceof CompoundNodeRenderer compoundRenderer) {
if (compoundRenderer.getChildrenRenderer() instanceof ExpressionChildrenRenderer) {
ExpressionChildrenRenderer.setPreferableChildrenRenderer(descriptor, newRenderer);
((JavaValue) container).reBuild(node);
((JavaValue)container).reBuild(node);
}
}
}
Expand All @@ -146,7 +152,7 @@ private static String createNodeTitle(String prefix, DebuggerTreeNodeImpl node)
if (node != null) {
DebuggerTreeNodeImpl parent = node.getParent();
NodeDescriptorImpl descriptor = parent.getDescriptor();
if (descriptor instanceof ValueDescriptorImpl && ((ValueDescriptorImpl) descriptor).isArray()) {
if (descriptor instanceof ValueDescriptorImpl valueDescriptor && valueDescriptor.isArray()) {
int index = parent.getIndex(node);
return createNodeTitle(prefix, parent) + "[" + index + "]";
}
Expand Down Expand Up @@ -179,21 +185,32 @@ public static class AdjustArrayRangeAction extends ArrayAction {
@Nonnull
@Override
@RequiredUIAccess
protected AsyncResult<ArrayRenderer> createNewRenderer(XValueNode node, ArrayRenderer original, @Nonnull DebuggerContextImpl debuggerContext, String title) {
protected AsyncResult<ArrayRenderer> createNewRenderer(
XValueNode node,
ArrayRenderer original,
@Nonnull DebuggerContextImpl debuggerContext,
String title
) {
ArrayRenderer clonedRenderer = original.clone();
clonedRenderer.setForced(true);
AsyncResult<ArrayRenderer> result = AsyncResult.undefined();
AsyncResult<Void> showResult = ShowSettingsUtil.getInstance().editConfigurable(debuggerContext.getProject(), new NamedArrayConfigurable(title, clonedRenderer));
AsyncResult<Void> showResult = ShowSettingsUtil.getInstance()
.editConfigurable(debuggerContext.getProject(), new NamedArrayConfigurable(title, clonedRenderer));
showResult.doWhenDone(() -> result.setDone(clonedRenderer));
showResult.doWhenRejected((Runnable) result::setRejected);
showResult.doWhenRejected((Runnable)result::setRejected);
return result;
}
}

public static class FilterArrayAction extends ArrayAction {
@Nonnull
@Override
protected AsyncResult<ArrayRenderer> createNewRenderer(XValueNode node, ArrayRenderer original, @Nonnull DebuggerContextImpl debuggerContext, String title) {
protected AsyncResult<ArrayRenderer> createNewRenderer(
XValueNode node,
ArrayRenderer original,
@Nonnull DebuggerContextImpl debuggerContext,
String title
) {
//TODO [VISTALL] ArrayFilterInplaceEditor.editParent(node);
return AsyncResult.rejected();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,32 +15,33 @@
*/
package com.intellij.java.debugger.impl.actions;

import com.intellij.java.debugger.impl.engine.events.DebuggerContextCommandImpl;
import com.intellij.java.debugger.impl.DebuggerContextImpl;
import com.intellij.java.debugger.impl.engine.events.DebuggerContextCommandImpl;
import com.intellij.java.debugger.impl.ui.impl.watch.DebuggerTreeNodeImpl;
import com.intellij.java.debugger.impl.ui.impl.watch.NodeDescriptorImpl;
import com.intellij.java.debugger.impl.ui.impl.watch.ValueDescriptorImpl;
import consulo.ui.annotation.RequiredUIAccess;
import consulo.ui.ex.action.AnAction;
import consulo.ui.ex.action.AnActionEvent;

public class AutoRendererAction extends AnAction{
public void actionPerformed(AnActionEvent e) {
final DebuggerContextImpl debuggerContext = DebuggerAction.getDebuggerContext(e.getDataContext());
final DebuggerTreeNodeImpl[] selectedNodes = DebuggerAction.getSelectedNodes(e.getDataContext());
public class AutoRendererAction extends AnAction {
@Override
@RequiredUIAccess
public void actionPerformed(AnActionEvent e) {
DebuggerContextImpl debuggerContext = DebuggerAction.getDebuggerContext(e.getDataContext());
DebuggerTreeNodeImpl[] selectedNodes = DebuggerAction.getSelectedNodes(e.getDataContext());

if(debuggerContext != null && debuggerContext.getDebugProcess() != null) {
debuggerContext.getDebugProcess().getManagerThread().schedule(new DebuggerContextCommandImpl(debuggerContext) {
public void threadAction() {
for (int i = 0; i < selectedNodes.length; i++) {
DebuggerTreeNodeImpl selectedNode = selectedNodes[i];
NodeDescriptorImpl descriptor = selectedNode.getDescriptor();
if (descriptor instanceof ValueDescriptorImpl) {
((ValueDescriptorImpl) descriptor).setRenderer(null);
selectedNode.calcRepresentation();
}
}
}
});
if (debuggerContext != null && debuggerContext.getDebugProcess() != null) {
debuggerContext.getDebugProcess().getManagerThread().schedule(new DebuggerContextCommandImpl(debuggerContext) {
@Override
public void threadAction() {
for (DebuggerTreeNodeImpl selectedNode : selectedNodes) {
if (selectedNode.getDescriptor() instanceof ValueDescriptorImpl valueDescriptor) {
valueDescriptor.setRenderer(null);
selectedNode.calcRepresentation();
}
}
}
});
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,80 +15,88 @@
*/
package com.intellij.java.debugger.impl.actions;

import com.intellij.java.debugger.DebuggerBundle;
import com.intellij.java.debugger.impl.DebuggerContextImpl;
import com.intellij.java.debugger.impl.engine.DebugProcessImpl;
import com.intellij.java.debugger.impl.engine.JavaValue;
import com.intellij.java.debugger.impl.engine.events.DebuggerContextCommandImpl;
import com.intellij.java.debugger.impl.settings.NodeRendererSettings;
import com.intellij.java.debugger.impl.settings.UserRenderersConfigurable;
import com.intellij.java.debugger.impl.ui.tree.render.NodeRenderer;
import com.intellij.java.debugger.localize.JavaDebuggerLocalize;
import consulo.application.Application;
import consulo.configurable.IdeaConfigurableBase;
import consulo.ide.impl.idea.openapi.options.ex.SingleConfigurableEditor;
import consulo.internal.com.sun.jdi.Type;
import consulo.project.Project;
import consulo.ui.annotation.RequiredUIAccess;
import consulo.ui.ex.action.AnAction;
import consulo.ui.ex.action.AnActionEvent;
import consulo.util.lang.StringUtil;

import jakarta.annotation.Nonnull;

import java.util.List;

public class CreateRendererAction extends AnAction {
@Override
public void update(AnActionEvent e) {
final List<JavaValue> values = ViewAsGroup.getSelectedValues(e);
if (values.size() != 1) {
e.getPresentation().setEnabledAndVisible(false);
@Override
@RequiredUIAccess
public void update(@Nonnull AnActionEvent e) {
List<JavaValue> values = ViewAsGroup.getSelectedValues(e);
if (values.size() != 1) {
e.getPresentation().setEnabledAndVisible(false);
}
}
}

public void actionPerformed(@Nonnull final AnActionEvent event) {
final DebuggerContextImpl debuggerContext = DebuggerAction.getDebuggerContext(event.getDataContext());
final List<JavaValue> values = ViewAsGroup.getSelectedValues(event);
if (values.size() != 1) {
return;
}
@Override
@RequiredUIAccess
public void actionPerformed(@Nonnull AnActionEvent event) {
DebuggerContextImpl debuggerContext = DebuggerAction.getDebuggerContext(event.getDataContext());
List<JavaValue> values = ViewAsGroup.getSelectedValues(event);
if (values.size() != 1) {
return;
}

final JavaValue javaValue = values.get(0);
JavaValue javaValue = values.get(0);

final DebugProcessImpl process = debuggerContext.getDebugProcess();
if (process == null) {
return;
}
DebugProcessImpl process = debuggerContext.getDebugProcess();
if (process == null) {
return;
}

final Project project = event.getData(Project.KEY);
Project project = event.getData(Project.KEY);

process.getManagerThread().schedule(new DebuggerContextCommandImpl(debuggerContext) {
public void threadAction() {
Type type = javaValue.getDescriptor().getType();
final String name = type != null ? type.name() : null;
Application.get().invokeLater(() ->
{
final UserRenderersConfigurable ui = new UserRenderersConfigurable();
IdeaConfigurableBase<UserRenderersConfigurable, NodeRendererSettings> configurable = new IdeaConfigurableBase<UserRenderersConfigurable, NodeRendererSettings>("reference.idesettings" +
".debugger.typerenderers", DebuggerBundle.message("user.renderers.configurable.display.name"), "reference.idesettings.debugger.typerenderers") {
@Nonnull
process.getManagerThread().schedule(new DebuggerContextCommandImpl(debuggerContext) {
@Override
protected NodeRendererSettings getSettings() {
return NodeRendererSettings.getInstance();
}
public void threadAction() {
Type type = javaValue.getDescriptor().getType();
String name = type != null ? type.name() : null;
Application.get().invokeLater(() -> {
UserRenderersConfigurable ui = new UserRenderersConfigurable();
IdeaConfigurableBase<UserRenderersConfigurable, NodeRendererSettings> configurable = new IdeaConfigurableBase<>(
"reference.idesettings.debugger.typerenderers",
JavaDebuggerLocalize.userRenderersConfigurableDisplayName().get(),
"reference.idesettings.debugger.typerenderers"
) {
@Nonnull
@Override
protected NodeRendererSettings getSettings() {
return NodeRendererSettings.getInstance();
}

@Override
protected UserRenderersConfigurable createUi() {
return ui;
@Override
protected UserRenderersConfigurable createUi() {
return ui;
}
};
SingleConfigurableEditor editor = new SingleConfigurableEditor(project, configurable);
if (name != null) {
NodeRenderer renderer =
NodeRendererSettings.getInstance().createCompoundTypeRenderer(StringUtil.getShortName(name), name, null, null);
renderer.setEnabled(true);
ui.addRenderer(renderer);
}
editor.show();
});
}
};
SingleConfigurableEditor editor = new SingleConfigurableEditor(project, configurable);
if (name != null) {
NodeRenderer renderer = NodeRendererSettings.getInstance().createCompoundTypeRenderer(StringUtil.getShortName(name), name, null, null);
renderer.setEnabled(true);
ui.addRenderer(renderer);
}
editor.show();
});
}
});
}
}
}
Loading
Loading