package com.intellij.find.editorHeaderActions; import com.intellij.find.EditorSearchSession; import com.intellij.find.FindModel; import com.intellij.find.FindUtil; import com.intellij.openapi.actionSystem.ActionManager; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.IdeActions; import com.intellij.openapi.keymap.KeymapUtil; import com.intellij.openapi.project.DumbAware; import org.jetbrains.annotations.NotNull; import javax.swing.*; import static com.intellij.openapi.actionSystem.CommonDataKeys.EDITOR; /** * Created by IntelliJ IDEA. * User: zajac * Date: 05.03.11 * Time: 10:57 * To change this template use File | Settings | File Templates. */ public class SwitchToFind extends AnAction implements DumbAware { public SwitchToFind(@NotNull JComponent shortcutHolder) { AnAction findAction = ActionManager.getInstance().getAction(IdeActions.ACTION_FIND); if (findAction != null) { registerCustomShortcutSet(findAction.getShortcutSet(), shortcutHolder); } } @Override public void update(AnActionEvent e) { if (KeymapUtil.isEmacsKeymap()) { // Emacs users are accustomed to the editor that executes 'find next' on subsequent pressing of shortcut that // activates 'incremental search'. Hence, we do the similar hack here for them. ActionManager.getInstance().getAction(IdeActions.ACTION_FIND_NEXT).update(e); } else { EditorSearchSession search = e.getData(EditorSearchSession.SESSION_KEY); e.getPresentation().setEnabledAndVisible(search != null); } } @Override public void actionPerformed(AnActionEvent e) { if (KeymapUtil.isEmacsKeymap()) { // Emacs users are accustomed to the editor that executes 'find next' on subsequent pressing of shortcut that // activates 'incremental search'. Hence, we do the similar hack here for them. ActionManager.getInstance().getAction(IdeActions.ACTION_FIND_NEXT).actionPerformed(e); return; } EditorSearchSession search = e.getRequiredData(EditorSearchSession.SESSION_KEY); final FindModel findModel = search.getFindModel(); FindUtil.configureFindModel(false, EDITOR.getData(e.getDataContext()), findModel, false); search.getComponent().getSearchTextComponent().selectAll(); } }