extensibility for Pull Up and Push Down
[fedora-idea.git] / lang-impl / src / com / intellij / refactoring / actions / PushDownAction.java
blobf83fc10177e5d715079b3a9ab6cca5ed6fd65d5f
1 package com.intellij.refactoring.actions;
3 import com.intellij.lang.Language;
4 import com.intellij.lang.LanguageRefactoringSupport;
5 import com.intellij.openapi.actionSystem.DataContext;
6 import com.intellij.openapi.actionSystem.LangDataKeys;
7 import com.intellij.psi.PsiElement;
8 import com.intellij.refactoring.RefactoringActionHandler;
9 import com.intellij.refactoring.lang.ElementsHandler;
12 public class PushDownAction extends BaseRefactoringAction {
13 public boolean isAvailableInEditorOnly() {
14 return false;
17 public boolean isEnabledOnElements(PsiElement[] elements) {
18 if (elements.length > 0) {
19 final Language language = elements[0].getLanguage();
20 final RefactoringActionHandler handler = LanguageRefactoringSupport.INSTANCE.forLanguage(language).getPushDownHandler();
21 return handler instanceof ElementsHandler && ((ElementsHandler)handler).isEnabledOnElements(elements);
23 return false;
26 public RefactoringActionHandler getHandler(DataContext dataContext) {
27 final Language language = LangDataKeys.LANGUAGE.getData(dataContext);
28 if (language != null) {
29 return LanguageRefactoringSupport.INSTANCE.forLanguage(language).getPushDownHandler();
32 return null;
35 protected boolean isAvailableForLanguage(final Language language) {
36 return LanguageRefactoringSupport.INSTANCE.forLanguage(language).getPushDownHandler() != null;