blob: 9af8aaa18004b7e183d729b728647f5f1050a851 [file] [log] [blame]
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);
}
}
}
}
}