summaryrefslogtreecommitdiff
path: root/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger
diff options
context:
space:
mode:
Diffstat (limited to 'platform/script-debugger/debugger-ui/src/org/jetbrains/debugger')
-rw-r--r--platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/BasicDebuggerViewSupport.java11
-rw-r--r--platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/LazyVariablesGroup.java2
-rw-r--r--platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/MemberFilter.java5
-rw-r--r--platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/VariableView.java42
-rw-r--r--platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/Variables.java32
-rw-r--r--platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/frame/CallFrameView.java5
6 files changed, 71 insertions, 26 deletions
diff --git a/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/BasicDebuggerViewSupport.java b/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/BasicDebuggerViewSupport.java
index a5cf778db7e2..b2fd544d0b86 100644
--- a/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/BasicDebuggerViewSupport.java
+++ b/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/BasicDebuggerViewSupport.java
@@ -97,6 +97,17 @@ public class BasicDebuggerViewSupport implements DebuggerViewSupport, MemberFilt
@NotNull
@Override
+ public String getName(@NotNull Variable variable) {
+ return variable.getName();
+ }
+
+ @Override
+ public boolean hasNameMappings() {
+ return false;
+ }
+
+ @NotNull
+ @Override
public String normalizeMemberName(@NotNull Variable variable) {
return variable.getName();
}
diff --git a/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/LazyVariablesGroup.java b/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/LazyVariablesGroup.java
index 25b8b3e11ee5..c00f6727203d 100644
--- a/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/LazyVariablesGroup.java
+++ b/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/LazyVariablesGroup.java
@@ -71,7 +71,7 @@ public final class LazyVariablesGroup extends XValueGroup {
@Override
public void consumeVariables(@NotNull List<Variable> variables) {
- node.addChildren(Variables.createVariablesList(variables, context), true);
+ node.addChildren(Variables.createVariablesList(variables, context, null), true);
}
}, componentType);
}
diff --git a/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/MemberFilter.java b/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/MemberFilter.java
index fb3a7c1f175c..b9b60178e5ff 100644
--- a/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/MemberFilter.java
+++ b/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/MemberFilter.java
@@ -9,4 +9,9 @@ public interface MemberFilter {
@NotNull
Collection<Variable> getAdditionalVariables();
+
+ @NotNull
+ String getName(@NotNull Variable variable);
+
+ boolean hasNameMappings();
} \ No newline at end of file
diff --git a/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/VariableView.java b/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/VariableView.java
index ada850da074b..9ee54199ff8c 100644
--- a/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/VariableView.java
+++ b/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/VariableView.java
@@ -57,7 +57,11 @@ public final class VariableView extends XNamedValue implements VariableContext {
private volatile int remainingChildrenOffset;
public VariableView(@NotNull Variable variable, @NotNull VariableContext context) {
- super(context.getViewSupport().normalizeMemberName(variable));
+ this(context.getViewSupport().normalizeMemberName(variable), variable, context);
+ }
+
+ public VariableView(@NotNull String name, @NotNull Variable variable, @NotNull VariableContext context) {
+ super(name);
this.context = context;
this.variable = variable;
@@ -162,14 +166,7 @@ public final class VariableView extends XNamedValue implements VariableContext {
@Override
public void consume(Value value, String error) {
if (!node.isObsolete()) {
- value = getViewSupport().transformErrorOnGetUsedReferenceValue(value, error);
- if (value == null) {
- node.setPresentation(AllIcons.Debugger.Db_primitive, null, error, false);
- }
- else {
- VariableView.this.value = value;
- computePresentation(value, node);
- }
+ setEvaluatedValue(getViewSupport().transformErrorOnGetUsedReferenceValue(value, error), error, node);
}
}
});
@@ -187,18 +184,29 @@ public final class VariableView extends XNamedValue implements VariableContext {
public void startEvaluation(@NotNull final XFullValueEvaluationCallback callback) {
ValueModifier valueModifier = variable.getValueModifier();
assert valueModifier != null;
- ObsolescentAsyncResults.consume(valueModifier.evaluateGet(variable, getEvaluateContext()), node, new PairConsumer<Value, XValueNode>() {
+ valueModifier.evaluateGet(variable, getEvaluateContext()).doWhenProcessed(new Consumer<Value>() {
@Override
- public void consume(Value value, XValueNode node) {
- callback.evaluated("");
- VariableView.this.value = value;
- computePresentation(value, node);
+ public void consume(Value value) {
+ if (!node.isObsolete()) {
+ callback.evaluated("");
+ setEvaluatedValue(value, null, node);
+ }
}
});
}
}.setShowValuePopup(false));
}
+ private void setEvaluatedValue(@Nullable Value value, @Nullable String error, @NotNull XValueNode node) {
+ if (value == null) {
+ node.setPresentation(AllIcons.Debugger.Db_primitive, null, error == null ? "Internal Error" : error, false);
+ }
+ else {
+ this.value = value;
+ computePresentation(value, node);
+ }
+ }
+
@NotNull
static String trimFunctionDescription(@NotNull Value value) {
String presentableValue = value.getValueString();
@@ -358,7 +366,7 @@ public final class VariableView extends XNamedValue implements VariableContext {
@Override
public void consumeVariables(@NotNull List<Variable> variables) {
- node.addChildren(Variables.createVariablesList(variables, VariableView.this), isLastChildren);
+ node.addChildren(Variables.createVariablesList(variables, VariableView.this, null), isLastChildren);
}
}, null);
}
@@ -395,7 +403,7 @@ public final class VariableView extends XNamedValue implements VariableContext {
int count = variables.size();
int bucketSize = XCompositeNode.MAX_CHILDREN_TO_SHOW;
if (count <= bucketSize) {
- node.addChildren(Variables.createVariablesList(variables, this), true);
+ node.addChildren(Variables.createVariablesList(variables, this, null), true);
return;
}
@@ -413,7 +421,7 @@ public final class VariableView extends XNamedValue implements VariableContext {
int notGroupedVariablesOffset;
if ((variables.size() - count) > bucketSize) {
for (notGroupedVariablesOffset = variables.size(); notGroupedVariablesOffset > 0; notGroupedVariablesOffset--) {
- if (!variables.get(notGroupedVariablesOffset - 1).getName().startsWith(Variables.SPECIAL_PROPERTY_PREFIX)) {
+ if (!variables.get(notGroupedVariablesOffset - 1).getName().startsWith("__")) {
break;
}
}
diff --git a/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/Variables.java b/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/Variables.java
index b71914443eef..e85091320bfb 100644
--- a/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/Variables.java
+++ b/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/Variables.java
@@ -18,13 +18,11 @@ import java.util.*;
import java.util.regex.Pattern;
public final class Variables {
- static final String SPECIAL_PROPERTY_PREFIX = "__";
-
private static final Pattern UNNAMED_FUNCTION_PATTERN = Pattern.compile("^function[\\t ]*\\(");
private static final Comparator<Variable> NATURAL_NAME_COMPARATOR = new Comparator<Variable>() {
@Override
- public int compare(Variable o1, Variable o2) {
+ public int compare(@NotNull Variable o1, @NotNull Variable o2) {
return naturalCompare(o1.getName(), o2.getName());
}
};
@@ -37,7 +35,7 @@ public final class Variables {
AsyncResult<?> result = ObsolescentAsyncResults.consume(scope.getVariables(), node, new PairConsumer<List<Variable>, XCompositeNode>() {
@Override
public void consume(List<Variable> variables, XCompositeNode node) {
- MemberFilter memberFilter = context.createMemberFilter();
+ final MemberFilter memberFilter = context.createMemberFilter();
Collection<Variable> additionalVariables = memberFilter.getAdditionalVariables();
List<Variable> properties = new ArrayList<Variable>(variables.size() + additionalVariables.size());
List<Variable> functions = new SmartList<Variable>();
@@ -56,7 +54,12 @@ public final class Variables {
}
}
- sort(properties);
+ ContainerUtil.sort(properties, memberFilter.hasNameMappings() ? new Comparator<Variable>() {
+ @Override
+ public int compare(@NotNull Variable o1, @NotNull Variable o2) {
+ return naturalCompare(memberFilter.getName(o1), memberFilter.getName(o2));
+ }
+ } : NATURAL_NAME_COMPARATOR);
sort(functions);
for (Variable variable : additionalVariables) {
@@ -64,7 +67,7 @@ public final class Variables {
}
if (!properties.isEmpty()) {
- node.addChildren(createVariablesList(properties, context), functions.isEmpty() && isLast);
+ node.addChildren(createVariablesList(properties, context, memberFilter), functions.isEmpty() && isLast);
}
if (!functions.isEmpty()) {
@@ -110,6 +113,7 @@ public final class Variables {
}
}
+ @NotNull
public static List<Variable> filterAndSort(@NotNull List<? extends Variable> variables, @NotNull VariableContext context, boolean filterFunctions) {
if (variables.isEmpty()) {
return Collections.emptyList();
@@ -219,16 +223,28 @@ public final class Variables {
return string1Length - string2Length;
}
+ @NotNull
public static XValueChildrenList createVariablesList(@NotNull List<Variable> variables, @NotNull VariableContext variableContext) {
- return createVariablesList(variables, 0, variables.size(), variableContext);
+ return createVariablesList(variables, variableContext, null);
+ }
+
+ @NotNull
+ public static XValueChildrenList createVariablesList(@NotNull List<Variable> variables, @NotNull VariableContext variableContext, @Nullable MemberFilter memberFilter) {
+ return createVariablesList(variables, 0, variables.size(), variableContext, memberFilter);
}
+ @NotNull
public static XValueChildrenList createVariablesList(@NotNull List<Variable> variables, int from, int to, @NotNull VariableContext variableContext) {
+ return createVariablesList(variables, from, to, variableContext, null);
+ }
+
+ @NotNull
+ public static XValueChildrenList createVariablesList(@NotNull List<Variable> variables, int from, int to, @NotNull VariableContext variableContext, @Nullable MemberFilter memberFilter) {
XValueChildrenList list = new XValueChildrenList(to - from);
VariableContext getterOrSetterContext = null;
for (int i = from; i < to; i++) {
Variable variable = variables.get(i);
- list.add(new VariableView(variable, variableContext));
+ list.add(memberFilter == null ? new VariableView(variable, variableContext) : new VariableView(memberFilter.getName(variable), variable, variableContext));
if (variable instanceof ObjectProperty) {
ObjectProperty property = (ObjectProperty)variable;
if (property.getGetter() != null) {
diff --git a/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/frame/CallFrameView.java b/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/frame/CallFrameView.java
index 3cb993a01194..03d960362183 100644
--- a/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/frame/CallFrameView.java
+++ b/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/frame/CallFrameView.java
@@ -36,6 +36,11 @@ public final class CallFrameView extends StackFrameImplBase implements VariableC
inLibraryContent = sourceInfo != null && debugProcess.isInLibraryContent(sourceInfo, script);
}
+ @Nullable
+ public Script getScript() {
+ return script;
+ }
+
@Override
protected boolean isInFileScope() {
List<Scope> scopes = callFrame.getVariableScopes();