TypedAction converted to independent service

GitOrigin-RevId: 802980d1bf93317415d69d6338f3d7e0b9fcd2e3
This commit is contained in:
Dmitry Jemerov
2019-07-23 17:44:15 +03:00
committed by intellij-monorepo-bot
parent 9ceb6a8a88
commit d27af7f3f8
25 changed files with 78 additions and 53 deletions
@@ -27,7 +27,7 @@ import com.intellij.openapi.command.impl.UndoManagerImpl
import com.intellij.openapi.command.undo.UndoManager
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.editor.EditorFactory
import com.intellij.openapi.editor.actionSystem.EditorActionManager
import com.intellij.openapi.editor.actionSystem.TypedAction
import com.intellij.openapi.editor.event.DocumentEvent
import com.intellij.openapi.editor.event.DocumentListener
import com.intellij.openapi.editor.ex.EditorEx
@@ -767,7 +767,7 @@ public interface Test {
Editor another = null
Runnable wca = { WriteCommandAction.writeCommandAction(getProject()).run ({
EditorActionManager.instance.getTypedAction().handler.execute(another, (char) 'x', DataManager.instance.dataContext)
TypedAction.instance.handler.execute(another, (char) 'x', DataManager.instance.dataContext)
} as ThrowableRunnable) }
try {
@@ -179,7 +179,8 @@ public class DaemonRespondToChangesTest extends DaemonAnalyzerTestCase {
}
private static void typeInAlienEditor(Editor alienEditor, char c) {
TypedAction action = EditorActionManager.getInstance().getTypedAction();
EditorActionManager.getInstance();
TypedAction action = TypedAction.getInstance();
DataContext dataContext = ((EditorEx)alienEditor).getDataContext();
action.actionPerformed(alienEditor, c, dataContext);
@@ -24,7 +24,7 @@ import com.intellij.testFramework.LightJavaCodeInsightTestCase;
public abstract class DefaultActionTestCase extends LightJavaCodeInsightTestCase {
protected void performAction(char c) {
EditorActionManager actionManager = EditorActionManager.getInstance();
TypedAction action = actionManager.getTypedAction();
TypedAction action = TypedAction.getInstance();
action.actionPerformed(getEditor(), c, DataManager.getInstance().getDataContext());
}
}
@@ -1,7 +1,8 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.java.codeInsight.editorActions
import com.intellij.openapi.editor.actionSystem.EditorActionManager
import com.intellij.openapi.editor.actionSystem.TypedAction
import com.intellij.openapi.editor.ex.EditorEx
import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase
import groovy.transform.CompileStatic
@@ -34,7 +35,7 @@ class JavaQuoteTest extends LightJavaCodeInsightFixtureTestCase {
private void doTest(String before, String after, char c = '"') {
myFixture.configureByText("a.java", "class C {{\n ${before}\n}}")
EditorActionManager.instance.typedAction.actionPerformed(editor, c, (editor as EditorEx).dataContext)
TypedAction.instance.actionPerformed(editor, c, (editor as EditorEx).dataContext)
myFixture.checkResult("class C {{\n ${after}\n}}")
}
}
@@ -12,6 +12,7 @@ import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.command.impl.UndoManagerImpl;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.actionSystem.EditorActionManager;
import com.intellij.openapi.editor.actionSystem.TypedAction;
import com.intellij.openapi.fileEditor.FileEditor;
import com.intellij.openapi.fileEditor.FileEditorManager;
import com.intellij.openapi.fileEditor.OpenFileDescriptor;
@@ -75,7 +76,8 @@ public abstract class UndoTestCase extends JavaCodeInsightTestCase {
}
protected void typeInChar(Editor e, char c) {
getActionManager().getTypedAction().actionPerformed(e, c, createDataContextFor(e));
getActionManager();
TypedAction.getInstance().actionPerformed(e, c, createDataContextFor(e));
}
private static EditorActionManager getActionManager() {
@@ -30,6 +30,7 @@ import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.EditorModificationUtil;
import com.intellij.openapi.editor.actionSystem.EditorActionManager;
import com.intellij.openapi.editor.actionSystem.TypedAction;
import com.intellij.openapi.editor.ex.DocumentEx;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.progress.util.ProgressIndicatorUtils;
@@ -658,7 +659,8 @@ public class CodeCompletionHandlerBase {
}
else {
DataContext dataContext = DataManager.getInstance().getDataContext(context.getEditor().getContentComponent());
EditorActionManager.getInstance().getTypedAction().getHandler().execute(context.getEditor(), context.getCompletionChar(), dataContext);
EditorActionManager.getInstance();
TypedAction.getInstance().getHandler().execute(context.getEditor(), context.getCompletionChar(), dataContext);
}
}
@@ -20,12 +20,13 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.*;
import com.intellij.openapi.editor.actionSystem.ActionPlan;
import com.intellij.openapi.editor.actionSystem.EditorActionManager;
import com.intellij.openapi.editor.actionSystem.TypedAction;
import com.intellij.openapi.editor.actionSystem.TypedActionHandler;
import com.intellij.openapi.editor.ex.EditorEx;
import com.intellij.openapi.editor.highlighter.EditorHighlighter;
import com.intellij.openapi.editor.highlighter.HighlighterIterator;
import com.intellij.openapi.editor.impl.DefaultRawTypedHandler;
import com.intellij.openapi.editor.impl.EditorActionManagerImpl;
import com.intellij.openapi.editor.impl.TypedActionImpl;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.FileTypes;
import com.intellij.openapi.fileTypes.LanguageFileType;
@@ -633,7 +634,7 @@ public class TypedHandler extends TypedActionHandlerBase {
);
}
if (element.getNode() != null && isBrace) {
DefaultRawTypedHandler handler = ((EditorActionManagerImpl) EditorActionManager.getInstance()).getDefaultRawTypedHandler();
DefaultRawTypedHandler handler = ((TypedActionImpl)TypedAction.getInstance()).getDefaultRawTypedHandler();
handler.beginUndoablePostProcessing();
final int finalLBraceOffset = lBraceOffset;
@@ -80,7 +80,7 @@ public class IncrementalSearchHandler {
if (!ourActionsRegistered) {
EditorActionManager actionManager = EditorActionManager.getInstance();
TypedAction typedAction = actionManager.getTypedAction();
TypedAction typedAction = TypedAction.getInstance();
typedAction.setupRawHandler(new MyTypedHandler(typedAction.getRawHandler()));
actionManager.setActionHandler(IdeActions.ACTION_EDITOR_BACKSPACE, new BackSpaceHandler(actionManager.getActionHandler(IdeActions.ACTION_EDITOR_BACKSPACE)));
@@ -225,7 +225,8 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo
private static synchronized void initTypedHandler() {
if (ourTypedHandlerInitialized) return;
TypedAction typedAction = EditorActionManager.getInstance().getTypedAction();
EditorActionManager.getInstance();
TypedAction typedAction = TypedAction.getInstance();
typedAction.setupHandler(new MyTypedHandler(typedAction.getHandler()));
ourTypedHandlerInitialized = true;
}
@@ -55,10 +55,7 @@ public abstract class EditorActionManager {
public abstract EditorActionHandler setActionHandler(@NonNls @NotNull String actionId, @NotNull EditorActionHandler handler);
/**
* Returns the service for registering actions activated by typing visible characters
* in the editor.
*
* @return the typed action service instance.
* @deprecated Use {@link TypedAction#getInstance()} instead
*/
@NotNull
public abstract TypedAction getTypedAction();
@@ -4,6 +4,7 @@ package com.intellij.openapi.editor.actionSystem;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.command.CommandProcessor;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.editor.*;
import com.intellij.openapi.project.Project;
import com.intellij.reporting.FreezeLogger;
@@ -12,14 +13,16 @@ import org.jetbrains.annotations.Nullable;
/**
* Provides services for registering actions which are activated by typing in the editor.
*
* @see EditorActionManager#getTypedAction()
*/
public class TypedAction {
public abstract class TypedAction {
private TypedActionHandler myRawHandler;
private TypedActionHandler myHandler;
private boolean myHandlersLoaded;
public static TypedAction getInstance() {
return ServiceManager.getService(TypedAction.class);
}
public TypedAction() {
myHandler = new Handler();
}
@@ -275,7 +275,8 @@ public class ActionMacro {
@Override
public void playBack(DataContext context) {
Editor editor = CommonDataKeys.EDITOR.getData(context);
final TypedAction typedAction = EditorActionManager.getInstance().getTypedAction();
EditorActionManager.getInstance();
final TypedAction typedAction = TypedAction.getInstance();
for (final char aChar : myText.toCharArray()) {
typedAction.actionPerformed(editor, aChar, context);
}
@@ -11,15 +11,11 @@ import com.intellij.injected.editor.DocumentWindow;
import org.jetbrains.annotations.NotNull;
public class EditorActionManagerImpl extends EditorActionManager {
private final TypedAction myTypedAction = new TypedAction();
private final DefaultRawTypedHandler myDefaultRawTypedHandler;
private ReadonlyFragmentModificationHandler myReadonlyFragmentsHandler = new DefaultReadOnlyFragmentModificationHandler();
private final ActionManager myActionManager;
public EditorActionManagerImpl(ActionManager actionManager) {
myActionManager = actionManager;
myDefaultRawTypedHandler = new DefaultRawTypedHandler(myTypedAction);
myTypedAction.setupRawHandler(myDefaultRawTypedHandler);
}
@Override
@@ -33,10 +29,9 @@ public class EditorActionManagerImpl extends EditorActionManager {
return action.setupHandler(handler);
}
@Override
@NotNull
public TypedAction getTypedAction() {
return myTypedAction;
return TypedAction.getInstance();
}
@Override
@@ -75,9 +70,5 @@ public class EditorActionManagerImpl extends EditorActionManager {
EditorBundle.message("guarded.block.modification.attempt.error.title"));
}
}
public DefaultRawTypedHandler getDefaultRawTypedHandler() {
return myDefaultRawTypedHandler;
}
}
@@ -1291,7 +1291,8 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
void processKeyTypedImmediately(char c, Graphics graphics, DataContext dataContext) {
EditorActionPlan plan = new EditorActionPlan(this);
EditorActionManager.getInstance().getTypedAction().beforeActionPerformed(this, c, dataContext, plan);
EditorActionManager.getInstance();
TypedAction.getInstance().beforeActionPerformed(this, c, dataContext, plan);
if (myImmediatePainter.paint(graphics, plan)) {
measureTypingLatency();
myLastTypedActionTimestamp = -1;
@@ -1299,7 +1300,8 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi
}
void processKeyTypedNormally(char c, DataContext dataContext) {
EditorActionManager.getInstance().getTypedAction().actionPerformed(this, c, dataContext);
EditorActionManager.getInstance();
TypedAction.getInstance().actionPerformed(this, c, dataContext);
}
private void fireFocusLost(@NotNull FocusEvent event) {
@@ -0,0 +1,17 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.openapi.editor.impl;
import com.intellij.openapi.editor.actionSystem.TypedAction;
public class TypedActionImpl extends TypedAction {
private final DefaultRawTypedHandler myDefaultRawTypedHandler;
public TypedActionImpl() {
myDefaultRawTypedHandler = new DefaultRawTypedHandler(this);
setupRawHandler(myDefaultRawTypedHandler);
}
public DefaultRawTypedHandler getDefaultRawTypedHandler() {
return myDefaultRawTypedHandler;
}
}
@@ -173,6 +173,8 @@
<applicationService serviceImplementation="com.intellij.codeInsight.hint.TooltipController"/>
<applicationService serviceInterface="com.intellij.openapi.editor.actionSystem.EditorActionManager"
serviceImplementation="com.intellij.openapi.editor.impl.EditorActionManagerImpl"/>
<applicationService serviceInterface="com.intellij.openapi.editor.actionSystem.TypedAction"
serviceImplementation="com.intellij.openapi.editor.impl.TypedActionImpl"/>
<applicationService serviceInterface="com.intellij.openapi.editor.actionSystem.LatencyRecorder"
serviceImplementation="com.intellij.internal.performance.LatencyRecorderImpl"/>
@@ -115,7 +115,8 @@ public class SelectionQuotingTypedHandlerTest extends BasePlatformTestCase {
private void doTest(@NotNull final String cs, @NotNull String before, @NotNull String expected) {
myFixture.configureByText(FileTypes.PLAIN_TEXT, before);
final TypedAction typedAction = EditorActionManager.getInstance().getTypedAction();
EditorActionManager.getInstance();
final TypedAction typedAction = TypedAction.getInstance();
performAction(myFixture.getProject(), () -> {
for (int i = 0, max = cs.length(); i < max; i++) {
@@ -130,7 +131,8 @@ public class SelectionQuotingTypedHandlerTest extends BasePlatformTestCase {
myFixture.configureByText(FileTypes.PLAIN_TEXT, "\"aaa\"\nbbb\n\n");
myFixture.getEditor().getCaretModel().moveToOffset(0);
myFixture.getEditor().getSelectionModel().setSelection(0, 5);
final TypedAction typedAction = EditorActionManager.getInstance().getTypedAction();
EditorActionManager.getInstance();
final TypedAction typedAction = TypedAction.getInstance();
performAction(myFixture.getProject(),
() -> typedAction.actionPerformed(myFixture.getEditor(), '\'', ((EditorEx)myFixture.getEditor()).getDataContext()));
myFixture.getEditor().getSelectionModel().removeSelection();
@@ -152,14 +152,14 @@ public class ConsoleViewImplTest extends LightPlatformTestCase {
console.clear();
EditorActionManager actionManager = EditorActionManager.getInstance();
DataContext dataContext = DataManager.getInstance().getDataContext(console.getComponent());
TypedAction action = actionManager.getTypedAction();
TypedAction action = TypedAction.getInstance();
action.actionPerformed(console.getEditor(), 'h', dataContext);
assertEquals(1, console.getContentSize());
}
public void testTypingAfterMultipleCR() {
final EditorActionManager actionManager = EditorActionManager.getInstance();
final TypedAction typedAction = actionManager.getTypedAction();
final TypedAction typedAction = TypedAction.getInstance();
final TestDataProvider dataContext = new TestDataProvider(getProject());
final ConsoleViewImpl console = myConsole;
@@ -352,7 +352,8 @@ public class ConsoleViewImplTest extends LightPlatformTestCase {
}
private static void typeIn(Editor editor, char c) {
TypedAction action = EditorActionManager.getInstance().getTypedAction();
EditorActionManager.getInstance();
TypedAction action = TypedAction.getInstance();
DataContext dataContext = ((EditorEx)editor).getDataContext();
action.actionPerformed(editor, c, dataContext);
@@ -10,6 +10,7 @@ import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.components.impl.ComponentManagerImpl;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.actionSystem.EditorActionManager;
import com.intellij.openapi.editor.actionSystem.TypedAction;
import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx;
import com.intellij.openapi.fileEditor.impl.NonProjectFileWritingAccessExtension;
@@ -405,7 +406,8 @@ public class NonProjectFileAccessTest extends HeavyFileEditorManagerTestCase {
}
private void typeInChar(Editor e, char c) {
getActionManager().getTypedAction().actionPerformed(e, c, createDataContextFor(e));
getActionManager();
TypedAction.getInstance().actionPerformed(e, c, createDataContextFor(e));
}
private DataContext createDataContextFor(final Editor editor) {
@@ -75,7 +75,7 @@ public class EditorTestUtil {
executeAction(editor, IdeActions.ACTION_EDITOR_ENTER);
}
else {
TypedAction action = actionManager.getTypedAction();
TypedAction action = TypedAction.getInstance();
action.actionPerformed(editor, c, DataManager.getInstance().getDataContext(editor.getContentComponent()));
}
}
@@ -475,7 +475,7 @@ public abstract class LightPlatformCodeInsightTestCase extends LightPlatformTest
else {
EditorActionManager actionManager = EditorActionManager.getInstance();
final DataContext dataContext = DataManager.getInstance().getDataContext();
TypedAction action = actionManager.getTypedAction();
TypedAction action = TypedAction.getInstance();
action.actionPerformed(editor, c, dataContext);
}
}
@@ -26,6 +26,7 @@ import com.intellij.openapi.editor.CaretModel;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.actionSystem.EditorActionManager;
import com.intellij.openapi.editor.actionSystem.TypedAction;
import com.intellij.openapi.editor.ex.EditorEx;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Pair;
@@ -110,7 +111,7 @@ public class EditorTestFixture {
}
ActionManagerEx.getInstanceEx().fireBeforeEditorTyping(c, getEditorDataContext());
actionManager.getTypedAction().actionPerformed(myEditor, c, getEditorDataContext());
TypedAction.getInstance().actionPerformed(myEditor, c, getEditorDataContext());
});
}
@@ -25,6 +25,7 @@ import com.intellij.openapi.Disposable;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.actionSystem.EditorActionManager;
import com.intellij.openapi.editor.actionSystem.TypedAction;
import com.intellij.openapi.editor.impl.EditorImpl;
import com.intellij.openapi.fileEditor.FileEditorManager;
import com.intellij.openapi.fileEditor.OpenFileDescriptor;
@@ -155,7 +156,8 @@ public class InvokeCompletion extends ActionOnFile {
if (LookupEvent.isSpecialCompletionChar(completionChar)) {
((LookupImpl)lookup).finishLookup(completionChar, item);
} else {
EditorActionManager.getInstance().getTypedAction().actionPerformed(editor, completionChar, ((EditorImpl)lookup.getTopLevelEditor()).getDataContext());
EditorActionManager.getInstance();
TypedAction.getInstance().actionPerformed(editor, completionChar, ((EditorImpl)lookup.getTopLevelEditor()).getDataContext());
}
}
@@ -6,8 +6,8 @@ import com.intellij.codeInsight.editorActions.TypedHandlerDelegate
import com.intellij.openapi.application.runWriteAction
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.editor.ScrollType
import com.intellij.openapi.editor.actionSystem.EditorActionManager
import com.intellij.openapi.editor.impl.EditorActionManagerImpl
import com.intellij.openapi.editor.actionSystem.TypedAction
import com.intellij.openapi.editor.impl.TypedActionImpl
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiFile
@@ -40,10 +40,10 @@ class EditorConfigTypedHandlerDelegate : TypedHandlerDelegate() {
val newOffset = offset + 1
val document = editor.document
val manager = EditorActionManager.getInstance() as EditorActionManagerImpl
val typedAction = TypedAction.getInstance() as TypedActionImpl
runWriteAction {
manager.defaultRawTypedHandler.beginUndoablePostProcessing()
typedAction.defaultRawTypedHandler.beginUndoablePostProcessing()
document.insertString(lBraceIndex, "{")
document.insertString(rBraceIndex, "}")
caretModel.moveToOffset(newOffset)
@@ -5,9 +5,9 @@ import com.intellij.codeInsight.editorActions.TypedHandlerDelegate;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.actionSystem.EditorActionManager;
import com.intellij.openapi.editor.actionSystem.TypedAction;
import com.intellij.openapi.editor.impl.DefaultRawTypedHandler;
import com.intellij.openapi.editor.impl.EditorActionManagerImpl;
import com.intellij.openapi.editor.impl.TypedActionImpl;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiElement;
@@ -78,11 +78,7 @@ public class YAMLHyphenTypedHandler extends TypedHandlerDelegate {
return;
}
EditorActionManager editorActionManager = EditorActionManager.getInstance();
if (!(editorActionManager instanceof EditorActionManagerImpl)) {
return;
}
DefaultRawTypedHandler handler = ((EditorActionManagerImpl)editorActionManager).getDefaultRawTypedHandler();
DefaultRawTypedHandler handler = ((TypedActionImpl)TypedAction.getInstance()).getDefaultRawTypedHandler();
handler.beginUndoablePostProcessing();
ApplicationManager.getApplication().runWriteAction(() -> {