extension for node descriptor names - single place where we apply name adjuster

This commit is contained in:
Egor.Ushakov
2015-08-24 11:22:00 +03:00
parent bcf34170a4
commit 6d91b142e5
5 changed files with 12 additions and 19 deletions
@@ -23,10 +23,8 @@ import com.intellij.debugger.engine.evaluation.EvaluateException;
import com.intellij.debugger.engine.evaluation.EvaluateExceptionUtil;
import com.intellij.debugger.engine.evaluation.EvaluationContextImpl;
import com.intellij.debugger.impl.PositionUtil;
import com.intellij.debugger.settings.NodeRendererSettings;
import com.intellij.debugger.ui.tree.FieldDescriptor;
import com.intellij.debugger.ui.tree.NodeDescriptor;
import com.intellij.debugger.ui.tree.NodeDescriptorNameAdjuster;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.JavaPsiFacade;
@@ -107,12 +105,7 @@ public class FieldDescriptorImpl extends ValueDescriptorImpl implements FieldDes
@Override
public String getName() {
final String fieldName = myField.name();
NodeDescriptorNameAdjuster nameAdjuster = NodeDescriptorNameAdjuster.findFor(this);
if (nameAdjuster != null) {
return nameAdjuster.fixName(fieldName, this);
}
return fieldName;
return myField.name();
}
public boolean isOuterLocalVariableValue() {
@@ -27,7 +27,7 @@ import org.jetbrains.annotations.NotNull;
public class FieldOuterLocalNameAdjuster extends NodeDescriptorNameAdjuster {
@Override
public boolean shouldApply(@NotNull NodeDescriptor descriptor) {
public boolean isApplicable(@NotNull NodeDescriptor descriptor) {
if (descriptor instanceof FieldDescriptorImpl && NodeRendererSettings.getInstance().getClassRenderer().SHOW_VAL_FIELDS_AS_LOCAL_VARIABLES) {
return ((FieldDescriptorImpl)descriptor).isOuterLocalVariableValue();
}
@@ -25,7 +25,6 @@ import com.intellij.debugger.jdi.LocalVariableProxyImpl;
import com.intellij.debugger.jdi.StackFrameProxyImpl;
import com.intellij.debugger.ui.tree.LocalVariableDescriptor;
import com.intellij.debugger.ui.tree.NodeDescriptor;
import com.intellij.debugger.ui.tree.NodeDescriptorNameAdjuster;
import com.intellij.openapi.project.Project;
import com.intellij.psi.JavaPsiFacade;
import com.intellij.psi.PsiElementFactory;
@@ -93,12 +92,7 @@ public class LocalVariableDescriptorImpl extends ValueDescriptorImpl implements
@Override
public String getName() {
String varName = myLocalVariable.name();
NodeDescriptorNameAdjuster nameAdjuster = NodeDescriptorNameAdjuster.findFor(this);
if (nameAdjuster != null) {
return nameAdjuster.fixName(varName, this);
}
return varName;
return myLocalVariable.name();
}
@Nullable
@@ -27,6 +27,7 @@ import com.intellij.debugger.jdi.VirtualMachineProxyImpl;
import com.intellij.debugger.settings.NodeRendererSettings;
import com.intellij.debugger.ui.tree.DebuggerTreeNode;
import com.intellij.debugger.ui.tree.NodeDescriptor;
import com.intellij.debugger.ui.tree.NodeDescriptorNameAdjuster;
import com.intellij.debugger.ui.tree.ValueDescriptor;
import com.intellij.debugger.ui.tree.render.*;
import com.intellij.debugger.ui.tree.render.Renderer;
@@ -378,7 +379,12 @@ public abstract class ValueDescriptorImpl extends NodeDescriptorImpl implements
}
public String calcValueName() {
return getName();
String name = getName();
NodeDescriptorNameAdjuster nameAdjuster = NodeDescriptorNameAdjuster.findFor(this);
if (nameAdjuster != null) {
return nameAdjuster.fixName(name, this);
}
return name;
}
@Nullable
@@ -24,13 +24,13 @@ import org.jetbrains.annotations.NotNull;
public abstract class NodeDescriptorNameAdjuster {
public static ExtensionPointName<NodeDescriptorNameAdjuster> EP_NAME = ExtensionPointName.create("com.intellij.debugger.nodeNameAdjuster");
public abstract boolean shouldApply(@NotNull NodeDescriptor descriptor);
public abstract boolean isApplicable(@NotNull NodeDescriptor descriptor);
public abstract String fixName(String name, @NotNull NodeDescriptor descriptor);
public static NodeDescriptorNameAdjuster findFor(@NotNull NodeDescriptor descriptor) {
for (NodeDescriptorNameAdjuster adjuster:EP_NAME.getExtensions()) {
if (adjuster.shouldApply(descriptor)) return adjuster;
if (adjuster.isApplicable(descriptor)) return adjuster;
}
return null;
}