extracted getIcon and getPresentation for using in other debuggers
authorEgor.Ushakov <egor.ushakov@jetbrains.com>
Fri, 29 May 2015 09:46:23 +0000 (12:46 +0300)
committerEgor.Ushakov <egor.ushakov@jetbrains.com>
Fri, 29 May 2015 09:47:36 +0000 (12:47 +0300)
java/debugger/impl/src/com/intellij/debugger/actions/LambdaSmartStepTarget.java
java/debugger/impl/src/com/intellij/debugger/actions/MethodSmartStepTarget.java
java/debugger/impl/src/com/intellij/debugger/actions/PsiMethodListPopupStep.java
java/debugger/impl/src/com/intellij/debugger/actions/SmartStepTarget.java

index dec71630764ed405335534afcafa6213725e029b..e811566116847bc5bcaf5c30894433a83da555dd 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2013 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
  */
 package com.intellij.debugger.actions;
 
+import com.intellij.icons.AllIcons;
 import com.intellij.psi.PsiElement;
 import com.intellij.psi.PsiLambdaExpression;
+import com.intellij.psi.PsiSubstitutor;
+import com.intellij.psi.util.PsiFormatUtil;
 import com.intellij.util.Range;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
+import javax.swing.*;
+
 /**
  * @author Eugene Zhuravlev
  *         Date: 10/25/13
@@ -43,6 +48,20 @@ public class LambdaSmartStepTarget extends SmartStepTarget{
     return myOrdinal;
   }
 
+  @Nullable
+  @Override
+  public Icon getIcon() {
+    return AllIcons.Nodes.Function;
+  }
+
+  @NotNull
+  @Override
+  public String getPresentation() {
+    String typeText = PsiFormatUtil.formatType(myLambda.getType(), 0, PsiSubstitutor.EMPTY);
+    String label = getLabel();
+    return label != null ? label + typeText : typeText;
+  }
+
   public boolean equals(Object o) {
     if (this == o) {
       return true;
index 69281e66c9bd3cf6a262954b6ba7ffc6cf73fa80..fff689783af1ff08c79202b242114225c8698be0 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2013 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -17,10 +17,15 @@ package com.intellij.debugger.actions;
 
 import com.intellij.psi.PsiElement;
 import com.intellij.psi.PsiMethod;
+import com.intellij.psi.PsiSubstitutor;
+import com.intellij.psi.util.PsiFormatUtil;
+import com.intellij.psi.util.PsiFormatUtilBase;
 import com.intellij.util.Range;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
+import javax.swing.*;
+
 /**
  * @author Eugene Zhuravlev
  *         Date: 10/25/13
@@ -38,6 +43,25 @@ public class MethodSmartStepTarget extends SmartStepTarget {
     return myMethod;
   }
 
+  @Override
+  public Icon getIcon() {
+    return myMethod.getIcon(0);
+  }
+
+  @NotNull
+  @Override
+  public String getPresentation() {
+    String label = getLabel();
+    String formatted = PsiFormatUtil.formatMethod(
+      myMethod,
+      PsiSubstitutor.EMPTY,
+      PsiFormatUtilBase.SHOW_NAME | PsiFormatUtilBase.SHOW_PARAMETERS,
+      PsiFormatUtilBase.SHOW_TYPE,
+      999
+    );
+    return label != null? label + formatted : formatted;
+  }
+
   public boolean equals(Object o) {
     if (this == o) {
       return true;
index 335a188cbe3bf8f26594b5697b7b233abb704f2e..eb64da77bdadb144fcbe57bc0fff52c5143d8127 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -17,13 +17,8 @@ package com.intellij.debugger.actions;
 
 import com.intellij.codeInsight.unwrap.ScopeHighlighter;
 import com.intellij.debugger.DebuggerBundle;
-import com.intellij.icons.AllIcons;
 import com.intellij.openapi.editor.Editor;
 import com.intellij.openapi.ui.popup.*;
-import com.intellij.psi.PsiLambdaExpression;
-import com.intellij.psi.PsiMethod;
-import com.intellij.psi.PsiSubstitutor;
-import com.intellij.psi.util.PsiFormatUtil;
 import org.jetbrains.annotations.NotNull;
 
 import javax.swing.*;
@@ -62,38 +57,13 @@ class PsiMethodListPopupStep implements ListPopupStep<SmartStepTarget> {
     return true;
   }
 
-  public Icon getIconFor(SmartStepTarget aValue) {
-    if (aValue instanceof MethodSmartStepTarget) {
-      return ((MethodSmartStepTarget)aValue).getMethod().getIcon(0);
-    }
-    if (aValue instanceof LambdaSmartStepTarget) {
-      return AllIcons.Nodes.Function;
-    }
-    return null;
+  public Icon getIconFor(SmartStepTarget avalue) {
+    return avalue.getIcon();
   }
 
   @NotNull
-    public String getTextFor(SmartStepTarget value) {
-    final String label = value.getLabel();
-    final String formatted;
-    if (value instanceof MethodSmartStepTarget) {
-      final PsiMethod method = ((MethodSmartStepTarget)value).getMethod();
-      formatted = PsiFormatUtil.formatMethod(
-        method,
-        PsiSubstitutor.EMPTY,
-        PsiFormatUtil.SHOW_NAME | PsiFormatUtil.SHOW_PARAMETERS,
-        PsiFormatUtil.SHOW_TYPE,
-        999
-      );
-    }
-    else if (value instanceof LambdaSmartStepTarget){
-      final PsiLambdaExpression lambda = ((LambdaSmartStepTarget)value).getLambda();
-      formatted = PsiFormatUtil.formatType(lambda.getType(), 0, PsiSubstitutor.EMPTY);
-    }
-    else {
-      formatted = "";
-    }
-    return label != null? label + formatted : formatted;
+  public String getTextFor(SmartStepTarget value) {
+    return value.getPresentation();
   }
 
   public ListSeparator getSeparatorAbove(SmartStepTarget value) {
@@ -132,7 +102,7 @@ class PsiMethodListPopupStep implements ListPopupStep<SmartStepTarget> {
     return false;
   }
 
-  public MnemonicNavigationFilter getMnemonicNavigationFilter() {
+  public MnemonicNavigationFilter<SmartStepTarget> getMnemonicNavigationFilter() {
     return null;
   }
 
@@ -140,7 +110,7 @@ class PsiMethodListPopupStep implements ListPopupStep<SmartStepTarget> {
     return false;
   }
 
-  public SpeedSearchFilter getSpeedSearchFilter() {
+  public SpeedSearchFilter<SmartStepTarget> getSpeedSearchFilter() {
     return null;
   }
 
index 4fd7a3ea9e96861a40def9a64fd45b8d5dc5df67..70803260c64cd71a82c71a2ef90449b1fbdad077 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2013 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
  */
 package com.intellij.debugger.actions;
 
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.psi.PsiElement;
 import com.intellij.util.Range;
+import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
+import javax.swing.*;
+
 /**
 * @author Eugene Zhuravlev
 *         Date: 10/25/13
@@ -58,4 +62,14 @@ public abstract class SmartStepTarget {
   public void setCallingExpressionLines(Range<Integer> expressionLines) {
     myExpressionLines = expressionLines;
   }
+
+  @Nullable
+  public Icon getIcon() {
+    return null;
+  }
+
+  @NotNull
+  public String getPresentation() {
+    return StringUtil.notNullize(getLabel());
+  }
 }