diff --git a/java/java-impl/src/com/intellij/refactoring/extractInterface/ExtractInterfaceAction.java b/java/java-impl/src/com/intellij/refactoring/extractInterface/ExtractInterfaceAction.java new file mode 100644 index 000000000000..1709dad51bea --- /dev/null +++ b/java/java-impl/src/com/intellij/refactoring/extractInterface/ExtractInterfaceAction.java @@ -0,0 +1,16 @@ +package com.intellij.refactoring.extractInterface; + +import com.intellij.refactoring.actions.BaseExtractModuleAction; +import com.intellij.lang.Language; +import com.intellij.lang.java.JavaLanguage; + +/** + * @author Dennis.Ushakov + */ +public class ExtractInterfaceAction extends BaseExtractModuleAction { + + @Override + protected boolean isEnabledOnLanguage(Language language) { + return language instanceof JavaLanguage; + } +} diff --git a/platform/lang-impl/src/com/intellij/refactoring/actions/ExtractModuleAction.java b/platform/lang-impl/src/com/intellij/refactoring/actions/BaseExtractModuleAction.java similarity index 64% rename from platform/lang-impl/src/com/intellij/refactoring/actions/ExtractModuleAction.java rename to platform/lang-impl/src/com/intellij/refactoring/actions/BaseExtractModuleAction.java index 00cdfc749b30..e6dc28cde6ec 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/actions/ExtractModuleAction.java +++ b/platform/lang-impl/src/com/intellij/refactoring/actions/BaseExtractModuleAction.java @@ -3,17 +3,14 @@ package com.intellij.refactoring.actions; import com.intellij.lang.Language; import com.intellij.lang.LanguageRefactoringSupport; import com.intellij.lang.refactoring.RefactoringSupportProvider; -import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.refactoring.RefactoringActionHandler; import com.intellij.refactoring.lang.ElementsHandler; -import com.intellij.refactoring.lang.TitledHandler; -import com.intellij.idea.ActionsBundle; -public class ExtractModuleAction extends BaseRefactoringAction { +public abstract class BaseExtractModuleAction extends BaseRefactoringAction { public boolean isAvailableInEditorOnly() { return false; } @@ -22,21 +19,11 @@ public class ExtractModuleAction extends BaseRefactoringAction { if (elements.length > 0) { final Language language = elements[0].getLanguage(); final RefactoringActionHandler handler = LanguageRefactoringSupport.INSTANCE.forLanguage(language).getExtractModuleHandler(); - return handler instanceof ElementsHandler && ((ElementsHandler)handler).isEnabledOnElements(elements); + return isEnabledOnLanguage(language) && handler instanceof ElementsHandler && ((ElementsHandler)handler).isEnabledOnElements(elements); } return false; } - @Override - public void update(final AnActionEvent e) { - super.update(e); - final RefactoringActionHandler handler = getHandler(e.getDataContext()); - if (handler instanceof TitledHandler) { - e.getPresentation().setText(((TitledHandler) handler).getActionTitle()); - } else { - e.getPresentation().setText(ActionsBundle.message("action.ExtractInterface.text")); - } - } public RefactoringActionHandler getHandler(DataContext dataContext) { PsiFile file = LangDataKeys.PSI_FILE.getData(dataContext); @@ -46,6 +33,9 @@ public class ExtractModuleAction extends BaseRefactoringAction { } protected boolean isAvailableForLanguage(final Language language) { - return LanguageRefactoringSupport.INSTANCE.forLanguage(language).getExtractModuleHandler() != null; + return isEnabledOnLanguage(language) && + LanguageRefactoringSupport.INSTANCE.forLanguage(language).getExtractModuleHandler() != null; } + + protected abstract boolean isEnabledOnLanguage(final Language language); } \ No newline at end of file diff --git a/platform/platform-resources/src/idea/LangActions.xml b/platform/platform-resources/src/idea/LangActions.xml index af56161e25ab..2077484ff9fc 100644 --- a/platform/platform-resources/src/idea/LangActions.xml +++ b/platform/platform-resources/src/idea/LangActions.xml @@ -284,7 +284,6 @@ - diff --git a/resources/src/idea/IdeaActions.xml b/resources/src/idea/IdeaActions.xml index c7c4ba896f38..227cfc987b58 100644 --- a/resources/src/idea/IdeaActions.xml +++ b/resources/src/idea/IdeaActions.xml @@ -151,6 +151,10 @@ + + + +