diff options
Diffstat (limited to 'src/me/laria/code/idea_caseconv/SelectionReplacerAction.java')
-rw-r--r-- | src/me/laria/code/idea_caseconv/SelectionReplacerAction.java | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/src/me/laria/code/idea_caseconv/SelectionReplacerAction.java b/src/me/laria/code/idea_caseconv/SelectionReplacerAction.java deleted file mode 100644 index 692fd6c..0000000 --- a/src/me/laria/code/idea_caseconv/SelectionReplacerAction.java +++ /dev/null @@ -1,59 +0,0 @@ -package me.laria.code.idea_caseconv; - -import com.intellij.openapi.actionSystem.AnAction; -import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.actionSystem.CommonDataKeys; -import com.intellij.openapi.command.WriteCommandAction; -import com.intellij.openapi.editor.Caret; -import com.intellij.openapi.editor.CaretModel; -import com.intellij.openapi.editor.Document; -import com.intellij.openapi.editor.Editor; -import com.intellij.openapi.project.Project; - -import java.util.ArrayList; - -abstract class SelectionReplacerAction extends AnAction { - @Override - public void update(final AnActionEvent e) { - //Get required data keys - final Project project = e.getData(CommonDataKeys.PROJECT); - final Editor editor = e.getData(CommonDataKeys.EDITOR); - //Set visibility only in case of existing project and editor and if some text in the editor is selected - e.getPresentation().setVisible( - project != null - && editor != null - && editor.getSelectionModel().hasSelection() - ); - } - - @Override - public void actionPerformed(AnActionEvent anActionEvent) { - Editor editor = anActionEvent.getData(CommonDataKeys.EDITOR); - Project project = anActionEvent.getData(CommonDataKeys.PROJECT); - assert editor != null; - assert project != null; - - CaretModel caretModel = editor.getCaretModel(); - Document document = editor.getDocument(); - - ArrayList<Replacement> replacements = new ArrayList<>(); - for (Caret caret : caretModel.getAllCarets()) { - if (!caret.hasSelection()) { - continue; - } - - replacements.add(new Replacement( - caret.getSelectionStart(), - caret.getSelectionEnd(), - this.replace(caret.getSelectedText()) - )); - } - - // Sort in reverse order so a replacement won't mess up the indices of the other replacements - replacements.sort((o1, o2) -> -o1.compareTo(o2)); - - WriteCommandAction.runWriteCommandAction(project, () -> replacements.forEach(r -> r.doReplace(document))); - } - - abstract protected String replace(String s); -} |