added restriction to maximal hint length in debugger (PY-2225)
authorDmitry Trofimov <dmitry.trofimov@jetbrains.com>
Wed, 17 Nov 2010 17:31:13 +0000 (20:31 +0300)
committerDmitry Trofimov <dmitry.trofimov@jetbrains.com>
Wed, 17 Nov 2010 17:31:13 +0000 (20:31 +0300)
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/quick/XValueHint.java

index 22a4c8d94756a8295ea3d9ed933861e5e0051cb0..80972d7ee42dac488cd6875998f5de92d27b45e9 100644 (file)
@@ -51,6 +51,8 @@ import java.awt.*;
  */
 public class XValueHint extends AbstractValueHint {
   private static final Logger LOG = Logger.getInstance("#com.intellij.xdebugger.impl.evaluate.quick.XValueHint");
+  private static final int MAX_HINT_LENGTH = 512;
+
   private final XDebuggerEvaluator myEvaluator;
   private final XDebugSession myDebugSession;
   private final String myExpression;
@@ -114,8 +116,9 @@ public class XValueHint extends AbstractValueHint {
     SimpleColoredText text = new SimpleColoredText();
     text.append(name, XDebuggerUIConstants.VALUE_NAME_ATTRIBUTES);
     text.append(separator, SimpleTextAttributes.REGULAR_ATTRIBUTES);
-    text.append(value, SimpleTextAttributes.REGULAR_ATTRIBUTES);
-    
+    text.append(trimValue(value, name.length() + separator.length()), SimpleTextAttributes.REGULAR_ATTRIBUTES);
+
+
     JComponent component;
     if (!hasChildren) {
       component = HintUtil.createInformationLabel(text);
@@ -130,6 +133,13 @@ public class XValueHint extends AbstractValueHint {
     showHint(component);
   }
 
+  private static String trimValue(String value, int len) {
+    if (value.length() + len > MAX_HINT_LENGTH) {
+      value = value.substring(0, MAX_HINT_LENGTH - len) + "...";
+    }
+    return value;
+  }
+
   private void showTree(final XValue value, final String name) {
     XDebuggerTree tree = new XDebuggerTree(myDebugSession, myDebugSession.getDebugProcess().getEditorsProvider(),
                                            myDebugSession.getCurrentPosition());