From 56b3a62049171740b89fcb88b2910d380e6d68e4 Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Fri, 8 Aug 2014 17:41:37 +0400 Subject: [PATCH] IDEA-127918 Unnecessary quotes are added to variable value copied to clipboard in debugger --- .../intellij/debugger/engine/JavaValue.java | 8 ++++++- .../xdebugger/impl/ui/XValueTextProvider.java | 23 +++++++++++++++++++ .../tree/actions/XFetchValueActionBase.java | 10 +++++++- 3 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XValueTextProvider.java diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/JavaValue.java b/java/debugger/impl/src/com/intellij/debugger/engine/JavaValue.java index 808f5651b12b..b85e2c77268f 100644 --- a/java/debugger/impl/src/com/intellij/debugger/engine/JavaValue.java +++ b/java/debugger/impl/src/com/intellij/debugger/engine/JavaValue.java @@ -41,6 +41,7 @@ import com.intellij.xdebugger.frame.*; import com.intellij.xdebugger.frame.presentation.XRegularValuePresentation; import com.intellij.xdebugger.frame.presentation.XStringValuePresentation; import com.intellij.xdebugger.frame.presentation.XValuePresentation; +import com.intellij.xdebugger.impl.ui.XValueTextProvider; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -50,7 +51,7 @@ import java.util.List; /** * @author egor */ -public class JavaValue extends XNamedValue implements NodeDescriptorProvider { +public class JavaValue extends XNamedValue implements NodeDescriptorProvider, XValueTextProvider { private static final Logger LOG = Logger.getInstance(JavaValue.class); private final JavaValue myParent; @@ -377,4 +378,9 @@ public class JavaValue extends XNamedValue implements NodeDescriptorProvider { } return evaluationExpression; } + + @Override + public String getValueText() { + return myValueDescriptor.getValueText(); + } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XValueTextProvider.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XValueTextProvider.java new file mode 100644 index 000000000000..54ae63776e75 --- /dev/null +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XValueTextProvider.java @@ -0,0 +1,23 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.xdebugger.impl.ui; + +/** + * @author egor + */ +public interface XValueTextProvider { + String getValueText(); +} diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/actions/XFetchValueActionBase.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/actions/XFetchValueActionBase.java index 3926e89ecd4c..13121c7fda16 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/actions/XFetchValueActionBase.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/actions/XFetchValueActionBase.java @@ -22,6 +22,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.SmartList; import com.intellij.xdebugger.frame.XFullValueEvaluator; +import com.intellij.xdebugger.impl.ui.XValueTextProvider; import com.intellij.xdebugger.impl.ui.tree.XDebuggerTree; import com.intellij.xdebugger.impl.ui.tree.nodes.HeadlessValueEvaluationCallback; import com.intellij.xdebugger.impl.ui.tree.nodes.WatchMessageNode; @@ -74,7 +75,14 @@ public abstract class XFetchValueActionBase extends AnAction { XValueNodeImpl valueNode = (XValueNodeImpl)node; XFullValueEvaluator fullValueEvaluator = valueNode.getFullValueEvaluator(); if (fullValueEvaluator == null) { - valueCollector.add(StringUtil.notNullize(valueNode.getRawValue())); + String rawValue; + if (valueNode.getValueContainer() instanceof XValueTextProvider) { + rawValue = ((XValueTextProvider)valueNode.getValueContainer()).getValueText(); + } + else { + rawValue = valueNode.getRawValue(); + } + valueCollector.add(StringUtil.notNullize(rawValue)); } else { new CopyValueEvaluationCallback(valueNode, valueCollector).startFetchingValue(fullValueEvaluator);