summaryrefslogtreecommitdiff
path: root/platform/script-debugger/debugger-ui/src/BasicDebuggerViewSupport.kt
diff options
context:
space:
mode:
Diffstat (limited to 'platform/script-debugger/debugger-ui/src/BasicDebuggerViewSupport.kt')
-rw-r--r--platform/script-debugger/debugger-ui/src/BasicDebuggerViewSupport.kt41
1 files changed, 41 insertions, 0 deletions
diff --git a/platform/script-debugger/debugger-ui/src/BasicDebuggerViewSupport.kt b/platform/script-debugger/debugger-ui/src/BasicDebuggerViewSupport.kt
new file mode 100644
index 00000000..d5a63deb
--- /dev/null
+++ b/platform/script-debugger/debugger-ui/src/BasicDebuggerViewSupport.kt
@@ -0,0 +1,41 @@
+// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
+package org.jetbrains.debugger
+
+import com.intellij.xdebugger.frame.XCompositeNode
+import com.intellij.xdebugger.frame.XValueChildrenList
+import com.intellij.xdebugger.frame.XValueNode
+import org.jetbrains.concurrency.Promise
+import org.jetbrains.concurrency.onError
+import org.jetbrains.concurrency.onSuccess
+import org.jetbrains.concurrency.resolvedPromise
+import org.jetbrains.debugger.values.ObjectValue
+import org.jetbrains.debugger.values.Value
+import javax.swing.Icon
+
+open class BasicDebuggerViewSupport : MemberFilter, DebuggerViewSupport {
+ protected val defaultMemberFilterPromise: Promise<MemberFilter> = resolvedPromise<MemberFilter>(this)
+
+ override fun propertyNamesToString(list: List<String>, quotedAware: Boolean): String = ValueModifierUtil.propertyNamesToString(list, quotedAware)
+
+ override fun computeObjectPresentation(value: ObjectValue, variable: Variable, context: VariableContext, node: XValueNode, icon: Icon): Unit = VariableView.setObjectPresentation(value, icon, node)
+
+ override fun computeArrayPresentation(value: Value, variable: Variable, context: VariableContext, node: XValueNode, icon: Icon) {
+ VariableView.setArrayPresentation(value, context, icon, node)
+ }
+
+ override fun getMemberFilter(context: VariableContext): Promise<MemberFilter> = defaultMemberFilterPromise
+
+ override fun computeReceiverVariable(context: VariableContext, callFrame: CallFrame, node: XCompositeNode): Promise<*> {
+ return callFrame.receiverVariable
+ .onSuccess(node) {
+ node.addChildren(if (it == null) XValueChildrenList.EMPTY else XValueChildrenList.singleton(VariableView(it, context)), true)
+ }
+ .onError(node) {
+ node.addChildren(XValueChildrenList.EMPTY, true)
+ }
+ }
+}
+
+interface PresentationProvider {
+ fun computePresentation(node: XValueNode, icon: Icon): Boolean
+} \ No newline at end of file