package com.chrisfolger.needsmoredojo.intellij.actions;
import com.chrisfolger.needsmoredojo.core.amd.importing.ImportReorderer;
import com.chrisfolger.needsmoredojo.core.amd.psi.AMDPsiUtil;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.LangDataKeys;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.command.CommandProcessor;
import com.intellij.openapi.editor.Editor;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
public class ReorderAMDImportAction extends JavaScriptAction
{
private final AMDPsiUtil.Direction direction;
public ReorderAMDImportAction()
{
direction = AMDPsiUtil.Direction.UP;
}
public ReorderAMDImportAction(AMDPsiUtil.Direction direction)
{
this.direction = direction;
}
@Override
public void actionPerformed(AnActionEvent e)
{
final Editor editor = e.getData(PlatformDataKeys.EDITOR);
PsiFile file = e.getData(LangDataKeys.PSI_FILE);
if(editor == null || file == null)
{
return;
}
final PsiElement element = file.findElementAt(editor.getCaretModel().getOffset());
final ImportReorderer reorderer = new ImportReorderer();
CommandProcessor.getInstance().executeCommand(file.getProject(), new Runnable() {
@Override
public void run() {
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
reorderer.doSwap(element, editor, direction);
}
});
}
},
"Reorder AMD Import",
"Reorder AMD Import");
}
}