From c7abfc56c8e5fdd61d0da0e57a931fca0f01c0d5 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Wed, 3 Feb 2010 18:28:01 +0300 Subject: [PATCH] http://ea.jetbrains.com/browser/ea_problems/16004?report=194214 call isAvailable() before getText() --- .../intention/impl/IntentionHintComponent.java | 2 +- .../intention/impl/IntentionListStep.java | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/IntentionHintComponent.java b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/IntentionHintComponent.java index 50e5b476f2a4..851694db809e 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/IntentionHintComponent.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/IntentionHintComponent.java @@ -308,7 +308,7 @@ public class IntentionHintComponent extends JPanel implements Disposable, Scroll myPopupShown = true; } - void recreateMyPopup(IntentionListStep step) { + private void recreateMyPopup(IntentionListStep step) { if (myPopup != null) { Disposer.dispose(myPopup); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/IntentionListStep.java b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/IntentionListStep.java index d1e22c23e358..7a2d8d993525 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/IntentionListStep.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/IntentionListStep.java @@ -30,7 +30,6 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.popup.*; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Iconable; -import com.intellij.openapi.util.Pair; import com.intellij.psi.*; import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.util.PsiUtilBase; @@ -99,9 +98,10 @@ class IntentionListStep implements ListPopupStep else { element = InjectedLanguageUtil.findElementAtNoCommit(myFile, fileOffset); } - boolean result = true; + boolean result = removeInvalidActions(cachedActions, element); for (HighlightInfo.IntentionActionDescriptor descriptor : descriptors) { IntentionAction action = descriptor.getAction(); + if (!isAvailable(action, element)) continue; IntentionActionWithTextCaching cachedAction = new IntentionActionWithTextCaching(action, descriptor.getDisplayName(), descriptor.getIcon()); result &= !cachedActions.add(cachedAction); if (element == null) continue; @@ -124,7 +124,6 @@ class IntentionListStep implements ListPopupStep } } } - result &= removeInvalidActions(cachedActions, element); return result; } @@ -134,8 +133,7 @@ class IntentionListStep implements ListPopupStep while (iterator.hasNext()) { IntentionActionWithTextCaching cachedAction = iterator.next(); IntentionAction action = cachedAction.getAction(); - Pair place = ShowIntentionActionsHandler.availableFor(myFile, myEditor, action, element); - if (place == null) { + if (!isAvailable(action, element)) { iterator.remove(); result = false; } @@ -143,6 +141,10 @@ class IntentionListStep implements ListPopupStep return result; } + private boolean isAvailable(IntentionAction action, PsiElement element) { + return ShowIntentionActionsHandler.availableFor(myFile, myEditor, action, element) != null; + } + public String getTitle() { return null; }