diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/ImportStaticLookupActionProvider.java b/java/java-impl/src/com/intellij/codeInsight/completion/ImportStaticLookupActionProvider.java index 58aa9a2b8169..4fe765adbe0e 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/ImportStaticLookupActionProvider.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/ImportStaticLookupActionProvider.java @@ -1,6 +1,7 @@ package com.intellij.codeInsight.completion; import com.intellij.codeInsight.lookup.*; +import com.intellij.featureStatistics.FeatureUsageTracker; import com.intellij.util.Consumer; import com.intellij.util.Icons; import com.intellij.util.ui.EmptyIcon; @@ -23,6 +24,8 @@ public class ImportStaticLookupActionProvider implements LookupActionProvider { consumer.consume(new LookupElementAction(icon, "Import statically") { @Override public Result performLookupAction() { + FeatureUsageTracker.getInstance().triggerFeatureUsed(JavaCompletionFeatures.IMPORT_STATIC); + item.setShouldImport(!item.isShouldImport()); return Result.REFRESH_ITEM; } diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionFeatures.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionFeatures.java index f84520de4e27..4eb7426ae16b 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionFeatures.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionFeatures.java @@ -25,4 +25,5 @@ public interface JavaCompletionFeatures { @NonNls String SECOND_SMART_COMPLETION_TOAR = "editing.completion.second.smarttype.toar"; @NonNls String SECOND_SMART_COMPLETION_ASLIST = "editing.completion.second.smarttype.aslist"; @NonNls String SECOND_SMART_COMPLETION_ARRAY_MEMBER = "editing.completion.second.smarttype.array.member"; + @NonNls String IMPORT_STATIC = "editing.completion.import.static"; } diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaGlobalMemberNameCompletionContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaGlobalMemberNameCompletionContributor.java index eae285258414..17cae62e2d8b 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaGlobalMemberNameCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaGlobalMemberNameCompletionContributor.java @@ -2,6 +2,7 @@ package com.intellij.codeInsight.completion; import com.intellij.codeInsight.completion.simple.PsiMethodInsertHandler; import com.intellij.codeInsight.daemon.impl.quickfix.StaticImportMethodFix; +import com.intellij.featureStatistics.FeatureUsageTracker; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Computable; @@ -91,8 +92,13 @@ public class JavaGlobalMemberNameCompletionContributor extends CompletionContrib final PsiClass containingClass = method.getContainingClass(); if (containingClass != null) { if (!JavaCompletionUtil.isInExcludedPackage(containingClass) && !StaticImportMethodFix.isExcluded(method)) { - if (!hintShown[0] && CompletionService.getCompletionService().getAdvertisementText() == null) { - CompletionService.getCompletionService().setAdvertisementText("To import the method statically, press Left"); + if (!hintShown[0] && + FeatureUsageTracker.getInstance().isToBeShown(JavaCompletionFeatures.IMPORT_STATIC, project) && + CompletionService.getCompletionService().getAdvertisementText() == null) { + final String shortcut = getActionShortcut("EditorRight"); + if (shortcut != null) { + CompletionService.getCompletionService().setAdvertisementText("To import the method statically, press " + shortcut); + } hintShown[0] = true; } diff --git a/platform/platform-resources-en/src/messages/FeatureStatisticsBundle.properties b/platform/platform-resources-en/src/messages/FeatureStatisticsBundle.properties index eda1a1792a22..7ecfdbbde4ac 100644 --- a/platform/platform-resources-en/src/messages/FeatureStatisticsBundle.properties +++ b/platform/platform-resources-en/src/messages/FeatureStatisticsBundle.properties @@ -49,6 +49,7 @@ editing.completion.second.smarttype.chain=Second smart type completion: chained editing.completion.second.smarttype.toar=Second smart type completion: toArray() conversion editing.completion.second.smarttype.aslist=Second smart type completion: asList() conversion editing.completion.second.smarttype.array.member=Second smart type completion: array member access +editing.completion.import.static=Static import via code completion editing.completion.variable.name=Variable name completion editing.completion.replace=Replace By when using lookup editing.completion.finishByDotEtc=Finish lookup by special characters diff --git a/resources-en/src/tips/CompletionImportStatic.html b/resources-en/src/tips/CompletionImportStatic.html new file mode 100644 index 000000000000..f719577cbebd --- /dev/null +++ b/resources-en/src/tips/CompletionImportStatic.html @@ -0,0 +1,14 @@ + +
+|
+ To quickly complete a method call of a static method located anywhere in your project, libraries or JDK, enter a prefix
+ and press &shortcut:ClassNameCompletion;. You'll see all the matching methods. If you want the method you chose to be imported statically,
+ press &shortcut:EditorRight; and see what happens:
+
|
+