package org.hunmr.acejump;

import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.editor.Editor;
import org.hunmr.acejump.command.ReplaceAfterJumpCommand;
import org.hunmr.common.selector.Selector;
import org.hunmr.util.EditorUtils;

public class AceJumpAndReplaceRangeAction extends AnAction {
    @Override
    public void actionPerformed(AnActionEvent e) {
        Editor editor = e.getData(PlatformDataKeys.EDITOR);
        String actionId = e.getActionManager().getId(this);
        String selectorClassName = "org.hunmr.common.selector."
                                + actionId.substring("emacsIDEAs.AceJumpAndReplace.".length())
                                + "Selector";

        try {
            Class<? extends Selector> selectorClass = (Class<? extends Selector>) Class.forName(selectorClassName);
            EditorUtils.copyRange(selectorClass, editor);

            AceJumpAction.getInstance().switchEditorIfNeed(e);
            AceJumpAction.getInstance().addCommandAroundJump(new ReplaceAfterJumpCommand(editor, selectorClass));
            AceJumpAction.getInstance().performAction(e);


        } catch (ClassNotFoundException e1) {
            e1.printStackTrace();
        }
    }
}