diff --git a/java/java-impl/src/com/intellij/refactoring/actions/AnonymousToInnerAction.java b/java/java-impl/src/com/intellij/refactoring/actions/AnonymousToInnerAction.java index eb86ca9eff1b..ef797c391279 100644 --- a/java/java-impl/src/com/intellij/refactoring/actions/AnonymousToInnerAction.java +++ b/java/java-impl/src/com/intellij/refactoring/actions/AnonymousToInnerAction.java @@ -34,7 +34,7 @@ public class AnonymousToInnerAction extends BaseRefactoringAction { return false; } - protected boolean isAvailableOnElementInEditorAndFile(final PsiElement element, final Editor editor, PsiFile file) { + protected boolean isAvailableOnElementInEditorAndFile(final PsiElement element, final Editor editor, PsiFile file, DataContext context) { final PsiElement targetElement = file.findElementAt(editor.getCaretModel().getOffset()); if (PsiTreeUtil.getParentOfType(targetElement, PsiAnonymousClass.class) != null) { return true; @@ -49,4 +49,4 @@ public class AnonymousToInnerAction extends BaseRefactoringAction { public RefactoringActionHandler getHandler(DataContext dataContext) { return new AnonymousToInnerHandler(); } -} \ No newline at end of file +} diff --git a/java/java-impl/src/com/intellij/refactoring/actions/ChangeSignatureAction.java b/java/java-impl/src/com/intellij/refactoring/actions/ChangeSignatureAction.java index a0612a770ea5..8e07299a687f 100644 --- a/java/java-impl/src/com/intellij/refactoring/actions/ChangeSignatureAction.java +++ b/java/java-impl/src/com/intellij/refactoring/actions/ChangeSignatureAction.java @@ -37,7 +37,7 @@ public class ChangeSignatureAction extends BaseRefactoringAction { return elements.length == 1 && (elements[0] instanceof PsiMethod || elements[0] instanceof PsiClass); } - protected boolean isAvailableOnElementInEditorAndFile(final PsiElement element, final Editor editor, PsiFile file) { + protected boolean isAvailableOnElementInEditorAndFile(final PsiElement element, final Editor editor, PsiFile file, DataContext context) { PsiElement targetMember = findTargetMember(file, editor); if (targetMember == null) return false; final ChangeSignatureHandler targetHandler = getChangeSignatureHandler(targetMember.getLanguage()); diff --git a/java/java-impl/src/com/intellij/refactoring/actions/ConvertToInstanceMethodAction.java b/java/java-impl/src/com/intellij/refactoring/actions/ConvertToInstanceMethodAction.java index 1374d091578d..d0f11ebc6a75 100644 --- a/java/java-impl/src/com/intellij/refactoring/actions/ConvertToInstanceMethodAction.java +++ b/java/java-impl/src/com/intellij/refactoring/actions/ConvertToInstanceMethodAction.java @@ -33,7 +33,7 @@ public class ConvertToInstanceMethodAction extends BaseRefactoringAction { return elements.length == 1 && elements[0] instanceof PsiMethod; } - protected boolean isAvailableOnElementInEditorAndFile(PsiElement element, final Editor editor, PsiFile file) { + protected boolean isAvailableOnElementInEditorAndFile(PsiElement element, final Editor editor, PsiFile file, DataContext context) { if (element instanceof PsiIdentifier) element = element.getParent(); return element instanceof PsiMethod && ((PsiMethod) element).hasModifierProperty(PsiModifier.STATIC); } diff --git a/java/java-impl/src/com/intellij/refactoring/actions/InvertBooleanAction.java b/java/java-impl/src/com/intellij/refactoring/actions/InvertBooleanAction.java index bbff15e1893a..7ad4645837d5 100644 --- a/java/java-impl/src/com/intellij/refactoring/actions/InvertBooleanAction.java +++ b/java/java-impl/src/com/intellij/refactoring/actions/InvertBooleanAction.java @@ -33,7 +33,7 @@ public class InvertBooleanAction extends BaseRefactoringAction { return elements.length == 1 && (elements[0] instanceof PsiMethod || elements[0] instanceof PsiVariable); } - protected boolean isAvailableOnElementInEditorAndFile(final PsiElement element, final Editor editor, PsiFile file) { + protected boolean isAvailableOnElementInEditorAndFile(final PsiElement element, final Editor editor, PsiFile file, DataContext context) { if (element instanceof PsiVariable) { return PsiType.BOOLEAN.equals(((PsiVariable) element).getType()); } diff --git a/java/java-impl/src/com/intellij/refactoring/actions/MakeStaticAction.java b/java/java-impl/src/com/intellij/refactoring/actions/MakeStaticAction.java index 78d52d95d12e..4514b13c2eab 100644 --- a/java/java-impl/src/com/intellij/refactoring/actions/MakeStaticAction.java +++ b/java/java-impl/src/com/intellij/refactoring/actions/MakeStaticAction.java @@ -39,7 +39,7 @@ public class MakeStaticAction extends BaseRefactoringAction { return (elements.length == 1) && (elements[0] instanceof PsiMethod) && !((PsiMethod)elements[0]).isConstructor(); } - protected boolean isAvailableOnElementInEditorAndFile(PsiElement element, final Editor editor, PsiFile file) { + protected boolean isAvailableOnElementInEditorAndFile(PsiElement element, final Editor editor, PsiFile file, DataContext context) { if (element instanceof PsiIdentifier) { element = element.getParent(); } diff --git a/java/java-impl/src/com/intellij/refactoring/actions/TempWithQueryAction.java b/java/java-impl/src/com/intellij/refactoring/actions/TempWithQueryAction.java index 85128310f0b7..6717bc14dd56 100644 --- a/java/java-impl/src/com/intellij/refactoring/actions/TempWithQueryAction.java +++ b/java/java-impl/src/com/intellij/refactoring/actions/TempWithQueryAction.java @@ -37,7 +37,7 @@ public class TempWithQueryAction extends BaseRefactoringAction{ return new TempWithQueryHandler(); } - protected boolean isAvailableOnElementInEditorAndFile(final PsiElement element, final Editor editor, PsiFile file) { + protected boolean isAvailableOnElementInEditorAndFile(final PsiElement element, final Editor editor, PsiFile file, DataContext context) { return element instanceof PsiLocalVariable && ((PsiLocalVariable) element).getInitializer() != null; } } \ No newline at end of file diff --git a/java/java-impl/src/com/intellij/refactoring/typeMigration/actions/ChangeTypeSignatureAction.java b/java/java-impl/src/com/intellij/refactoring/typeMigration/actions/ChangeTypeSignatureAction.java index d17f82a69a08..7c03209ab5e3 100644 --- a/java/java-impl/src/com/intellij/refactoring/typeMigration/actions/ChangeTypeSignatureAction.java +++ b/java/java-impl/src/com/intellij/refactoring/typeMigration/actions/ChangeTypeSignatureAction.java @@ -34,7 +34,7 @@ public class ChangeTypeSignatureAction extends BaseRefactoringAction { return true; } - protected boolean isAvailableOnElementInEditorAndFile(final PsiElement element, final Editor editor, PsiFile file) { + protected boolean isAvailableOnElementInEditorAndFile(final PsiElement element, final Editor editor, PsiFile file, DataContext context) { final PsiElement psiElement = file.findElementAt(editor.getCaretModel().getOffset()); final PsiReferenceParameterList referenceParameterList = PsiTreeUtil.getParentOfType(psiElement, PsiReferenceParameterList.class); if (referenceParameterList != null) { @@ -46,4 +46,4 @@ public class ChangeTypeSignatureAction extends BaseRefactoringAction { public RefactoringActionHandler getHandler(DataContext dataContext) { return new ChangeTypeSignatureHandler(); } -} \ No newline at end of file +} diff --git a/platform/lang-impl/src/com/intellij/refactoring/actions/BasePlatformRefactoringAction.java b/platform/lang-impl/src/com/intellij/refactoring/actions/BasePlatformRefactoringAction.java index f006c5ec48c2..6ca1dcb2434b 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/actions/BasePlatformRefactoringAction.java +++ b/platform/lang-impl/src/com/intellij/refactoring/actions/BasePlatformRefactoringAction.java @@ -20,10 +20,12 @@ import com.intellij.lang.LanguageRefactoringSupport; import com.intellij.lang.refactoring.RefactoringSupportProvider; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.editor.Editor; import com.intellij.openapi.extensions.ExtensionPointListener; import com.intellij.openapi.extensions.PluginDescriptor; import com.intellij.openapi.util.Condition; import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiFile; import com.intellij.refactoring.RefactoringActionHandler; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; @@ -77,6 +79,11 @@ public abstract class BasePlatformRefactoringAction extends BaseRefactoringActio return null; } + @Override + protected boolean isAvailableOnElementInEditorAndFile(PsiElement element, Editor editor, PsiFile file, DataContext context) { + return getHandler(context) != null; + } + protected boolean isAvailableForLanguage(final Language language) { List providers = LanguageRefactoringSupport.INSTANCE.allForLanguage(language); return ContainerUtil.find(providers, myCondition) != null; diff --git a/platform/lang-impl/src/com/intellij/refactoring/actions/BaseRefactoringAction.java b/platform/lang-impl/src/com/intellij/refactoring/actions/BaseRefactoringAction.java index 8c4f104a413e..5490debbab4c 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/actions/BaseRefactoringAction.java +++ b/platform/lang-impl/src/com/intellij/refactoring/actions/BaseRefactoringAction.java @@ -48,7 +48,7 @@ public abstract class BaseRefactoringAction extends AnAction { protected abstract boolean isEnabledOnElements(PsiElement[] elements); - protected boolean isAvailableOnElementInEditorAndFile(final PsiElement element, final Editor editor, PsiFile file) { + protected boolean isAvailableOnElementInEditorAndFile(final PsiElement element, final Editor editor, PsiFile file, DataContext context) { return true; } @@ -133,7 +133,7 @@ public abstract class BaseRefactoringAction extends AnAction { boolean isVisible = ContainerUtil.find(languages, myLanguageCondition) != null; if (isVisible) { - boolean isEnabled = isAvailableOnElementInEditorAndFile(element, editor, file); + boolean isEnabled = isAvailableOnElementInEditorAndFile(element, editor, file, dataContext); if (!isEnabled) { disableAction(e); } @@ -211,4 +211,4 @@ public abstract class BaseRefactoringAction extends AnAction { return filtered == null ? psiElements : filtered.toArray(new PsiElement[filtered.size()]); } -} \ No newline at end of file +} diff --git a/platform/lang-impl/src/com/intellij/refactoring/actions/InlineAction.java b/platform/lang-impl/src/com/intellij/refactoring/actions/InlineAction.java index 4c1293ae7b5e..cd9b9958e3d1 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/actions/InlineAction.java +++ b/platform/lang-impl/src/com/intellij/refactoring/actions/InlineAction.java @@ -25,6 +25,7 @@ import com.intellij.lang.Language; import com.intellij.lang.refactoring.InlineActionHandler; import com.intellij.lang.refactoring.InlineHandlers; import com.intellij.lang.refactoring.RefactoringSupportProvider; +import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.extensions.Extensions; import com.intellij.psi.PsiElement; @@ -46,7 +47,7 @@ public class InlineAction extends BasePlatformRefactoringAction { } @Override - protected boolean isAvailableOnElementInEditorAndFile(PsiElement element, Editor editor, PsiFile file) { + protected boolean isAvailableOnElementInEditorAndFile(PsiElement element, Editor editor, PsiFile file, DataContext context) { return hasInlineActionHandler(element, PsiUtilBase.getLanguageInEditor(editor, element.getProject()), editor); } diff --git a/platform/lang-impl/src/com/intellij/refactoring/actions/SafeDeleteAction.java b/platform/lang-impl/src/com/intellij/refactoring/actions/SafeDeleteAction.java index a78daf61ee3c..c701e7c66b99 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/actions/SafeDeleteAction.java +++ b/platform/lang-impl/src/com/intellij/refactoring/actions/SafeDeleteAction.java @@ -45,7 +45,7 @@ public class SafeDeleteAction extends BaseRefactoringAction { return true; } - protected boolean isAvailableOnElementInEditorAndFile(final PsiElement element, final Editor editor, PsiFile file) { + protected boolean isAvailableOnElementInEditorAndFile(final PsiElement element, final Editor editor, PsiFile file, DataContext context) { return SafeDeleteProcessor.validElement(element); } @@ -53,4 +53,4 @@ public class SafeDeleteAction extends BaseRefactoringAction { return new SafeDeleteHandler(); } -} \ No newline at end of file +} diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/refactorings/extract/ExtractManagedDependenciesAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/refactorings/extract/ExtractManagedDependenciesAction.java index 809d10c157a4..74a4282b8ea4 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/refactorings/extract/ExtractManagedDependenciesAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/refactorings/extract/ExtractManagedDependenciesAction.java @@ -72,8 +72,8 @@ public class ExtractManagedDependenciesAction extends BaseRefactoringAction { } @Override - protected boolean isAvailableOnElementInEditorAndFile(PsiElement element, Editor editor, PsiFile file) { - if (!super.isAvailableOnElementInEditorAndFile(element, editor, file)) return false; + protected boolean isAvailableOnElementInEditorAndFile(PsiElement element, Editor editor, PsiFile file, DataContext context) { + if (!super.isAvailableOnElementInEditorAndFile(element, editor, file, context)) return false; return findDependencyAndParent(file, editor) != null; } @@ -254,4 +254,4 @@ public class ExtractManagedDependenciesAction extends BaseRefactoringAction { myExtractExclusions = extractExclusions; } } -} \ No newline at end of file +} diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/refactorings/introduce/IntroducePropertyAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/refactorings/introduce/IntroducePropertyAction.java index 7697257d2dd7..cc72080108da 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/refactorings/introduce/IntroducePropertyAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/refactorings/introduce/IntroducePropertyAction.java @@ -75,8 +75,8 @@ public class IntroducePropertyAction extends BaseRefactoringAction { } @Override - protected boolean isAvailableOnElementInEditorAndFile(PsiElement element, Editor editor, PsiFile file) { - if (!super.isAvailableOnElementInEditorAndFile(element, editor, file)) return false; + protected boolean isAvailableOnElementInEditorAndFile(PsiElement element, Editor editor, PsiFile file, DataContext context) { + if (!super.isAvailableOnElementInEditorAndFile(element, editor, file, context)) return false; return getSelectedElementAndTextRange(editor, file) != null; } @@ -359,4 +359,4 @@ public class IntroducePropertyAction extends BaseRefactoringAction { } return isInsideProperty; } -} \ No newline at end of file +}