extensibility for Pull Up and Push Down
[fedora-idea.git] / lang-impl / src / com / intellij / refactoring / actions / PullUpAction.java
blob9e75f8fe2bd3b82d9e0188b95b893bd70a2ac6fd
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;
11 public class PullUpAction extends BaseRefactoringAction {
12 public boolean isAvailableInEditorOnly() {
13 return false;
16 public boolean isEnabledOnElements(PsiElement[] elements) {
17 if (elements.length > 0) {
18 final Language language = elements[0].getLanguage();
19 final RefactoringActionHandler handler = LanguageRefactoringSupport.INSTANCE.forLanguage(language).getPullUpHandler();
20 return handler instanceof ElementsHandler && ((ElementsHandler)handler).isEnabledOnElements(elements);
22 return false;
25 public RefactoringActionHandler getHandler(DataContext dataContext) {
26 final Language language = LangDataKeys.LANGUAGE.getData(dataContext);
27 if (language != null) {
28 return LanguageRefactoringSupport.INSTANCE.forLanguage(language).getPullUpHandler();
31 return null;
34 protected boolean isAvailableForLanguage(final Language language) {
35 return LanguageRefactoringSupport.INSTANCE.forLanguage(language).getPullUpHandler() != null;