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 @@
+
+