| package com.intellij.refactoring.changeSignature; |
| |
| import com.intellij.openapi.actionSystem.*; |
| import com.intellij.openapi.diagnostic.Logger; |
| import com.intellij.openapi.editor.Editor; |
| import com.intellij.psi.PsiElement; |
| |
| /** |
| * User: anna |
| * Date: Sep 10, 2010 |
| */ |
| public abstract class MoveParameterAction extends AnAction{ |
| private final boolean myLeft; |
| private static final Logger LOG = Logger.getInstance("#" + MoveParameterAction.class.getName()); |
| |
| public MoveParameterAction(boolean left) { |
| super(); |
| myLeft = left; |
| } |
| |
| @Override |
| public void actionPerformed(AnActionEvent e) { |
| final DataContext dataContext = e.getDataContext(); |
| final PsiElement psiElement = CommonDataKeys.PSI_ELEMENT.getData(dataContext); |
| LOG.assertTrue(psiElement != null); |
| final Editor editor = CommonDataKeys.EDITOR.getData(dataContext); |
| LanguageChangeSignatureDetectors.INSTANCE.forLanguage(psiElement.getLanguage()).moveParameter(psiElement, editor, myLeft); |
| } |
| |
| |
| @Override |
| public void update(AnActionEvent e) { |
| final Presentation presentation = e.getPresentation(); |
| presentation.setEnabled(false); |
| final DataContext dataContext = e.getDataContext(); |
| final Editor editor = CommonDataKeys.EDITOR.getData(dataContext); |
| if (editor != null) { |
| final PsiElement psiElement = CommonDataKeys.PSI_ELEMENT.getData(dataContext); |
| if (psiElement != null) { |
| final LanguageChangeSignatureDetector detector = LanguageChangeSignatureDetectors.INSTANCE.forLanguage(psiElement.getLanguage()); |
| if (detector != null) { |
| final boolean available = detector.isMoveParameterAvailable(psiElement, myLeft); |
| presentation.setEnabled(available); |
| presentation.setVisible(available); |
| } |
| } |
| } |
| } |
| } |