List of usage examples for com.intellij.openapi.editor.actionSystem EditorActionManager setActionHandler
public abstract EditorActionHandler setActionHandler(@NonNls @NotNull String actionId, @NotNull EditorActionHandler handler);
From source file:com.intellij.codeInsight.navigation.IncrementalSearchHandler.java
License:Apache License
public void invoke(Project project, final Editor editor) { if (!ourActionsRegistered) { ourActionsRegistered = true;/*from www . j av a 2 s . c om*/ EditorActionManager actionManager = EditorActionManager.getInstance(); TypedAction typedAction = actionManager.getTypedAction(); typedAction.setupHandler(new MyTypedHandler(typedAction.getHandler())); actionManager.setActionHandler(IdeActions.ACTION_EDITOR_BACKSPACE, new BackSpaceHandler(actionManager.getActionHandler(IdeActions.ACTION_EDITOR_BACKSPACE))); actionManager.setActionHandler(IdeActions.ACTION_EDITOR_MOVE_CARET_UP, new UpHandler(actionManager.getActionHandler(IdeActions.ACTION_EDITOR_MOVE_CARET_UP))); actionManager.setActionHandler(IdeActions.ACTION_EDITOR_MOVE_CARET_DOWN, new DownHandler(actionManager.getActionHandler(IdeActions.ACTION_EDITOR_MOVE_CARET_DOWN))); } FeatureUsageTracker.getInstance().triggerFeatureUsed("editing.incremental.search"); String selection = editor.getSelectionModel().getSelectedText(); JLabel label2 = new MyLabel(selection == null ? "" : selection); PerEditorSearchData data = editor.getUserData(SEARCH_DATA_IN_EDITOR_VIEW_KEY); if (data == null) { data = new PerEditorSearchData(); } else { if (data.hint != null) { if (data.lastSearch != null) { PerHintSearchData hintData = data.hint.getUserData(SEARCH_DATA_IN_HINT_KEY); //The user has not started typing if ("".equals(hintData.label.getText())) { label2 = new MyLabel(data.lastSearch); } } data.hint.hide(); } } JLabel label1 = new MyLabel(" " + CodeInsightBundle.message("incremental.search.tooltip.prefix")); label1.setFont(UIUtil.getLabelFont().deriveFont(Font.BOLD)); JPanel panel = new MyPanel(label1); panel.add(label1, BorderLayout.WEST); panel.add(label2, BorderLayout.CENTER); panel.setBorder(BorderFactory.createLineBorder(Color.black)); final DocumentListener[] documentListener = new DocumentListener[1]; final CaretListener[] caretListener = new CaretListener[1]; final Document document = editor.getDocument(); final LightweightHint hint = new LightweightHint(panel) { @Override public void hide() { PerHintSearchData data = getUserData(SEARCH_DATA_IN_HINT_KEY); LOG.assertTrue(data != null); String prefix = data.label.getText(); super.hide(); if (data.segmentHighlighter != null) { data.segmentHighlighter.dispose(); } PerEditorSearchData editorData = editor.getUserData(SEARCH_DATA_IN_EDITOR_VIEW_KEY); editorData.hint = null; editorData.lastSearch = prefix; if (documentListener[0] != null) { document.removeDocumentListener(documentListener[0]); } if (caretListener[0] != null) { CaretListener listener = caretListener[0]; editor.getCaretModel().removeCaretListener(listener); } } }; documentListener[0] = new DocumentAdapter() { @Override public void documentChanged(DocumentEvent e) { if (!hint.isVisible()) return; hint.hide(); } }; document.addDocumentListener(documentListener[0]); caretListener[0] = new CaretAdapter() { @Override public void caretPositionChanged(CaretEvent e) { PerHintSearchData data = hint.getUserData(SEARCH_DATA_IN_HINT_KEY); if (data != null && data.ignoreCaretMove) return; if (!hint.isVisible()) return; hint.hide(); } }; CaretListener listener = caretListener[0]; editor.getCaretModel().addCaretListener(listener); final JComponent component = editor.getComponent(); int x = SwingUtilities.convertPoint(component, 0, 0, component).x; int y = -hint.getComponent().getPreferredSize().height; Point p = SwingUtilities.convertPoint(component, x, y, component.getRootPane().getLayeredPane()); HintManagerImpl.getInstanceImpl().showEditorHint(hint, editor, p, HintManagerImpl.HIDE_BY_ESCAPE | HintManagerImpl.HIDE_BY_TEXT_CHANGE, 0, false, new HintHint(editor, p).setAwtTooltip(false)); PerHintSearchData hintData = new PerHintSearchData(project, label2); hintData.searchStart = editor.getCaretModel().getOffset(); hint.putUserData(SEARCH_DATA_IN_HINT_KEY, hintData); data.hint = hint; editor.putUserData(SEARCH_DATA_IN_EDITOR_VIEW_KEY, data); if (hintData.label.getText().length() > 0) { updatePosition(editor, hintData, true, false); } }
From source file:org.jetbrains.plugins.ruby.ruby.actions.editor.RubyEditorActionsManager.java
License:Apache License
/** * Registers new <code>RubyEnterHandler</code> in manager * * @param manager IDEA`s editor action manager * @return Ruby EnterHandler/*from w w w .j a v a2 s . c o m*/ * @see org.jetbrains.plugins.ruby.ruby.actions.editor.handlers.editorHandlers.RubyEnterHandler RubyEnterHandler for more details */ public static EditorActionHandler registerRubyEnterActionHandler(EditorActionManager manager) { EditorActionHandler myHandler = new RubyEnterHandler( manager.getActionHandler(IdeActions.ACTION_EDITOR_ENTER)); manager.setActionHandler(IdeActions.ACTION_EDITOR_ENTER, myHandler); assert (myHandler == manager.getActionHandler(IdeActions.ACTION_EDITOR_ENTER)); return myHandler; }
From source file:org.jetbrains.plugins.ruby.ruby.actions.editor.RubyEditorActionsManager.java
License:Apache License
/** * Registers new <code>RubyBackspaceHandler</code> in manager * * @param manager IDEA`s editor action manager * @return RubyBackspace Handler//from w w w.j a v a 2s . c o m * @see RubyBackspaceHandler RubyBackspaceHandler for more details */ public static EditorActionHandler registerRubyBackspaceActionHandler(EditorActionManager manager) { EditorActionHandler myHandler = new RubyBackspaceHandler( manager.getActionHandler(IdeActions.ACTION_EDITOR_BACKSPACE)); manager.setActionHandler(IdeActions.ACTION_EDITOR_BACKSPACE, myHandler); assert (myHandler == manager.getActionHandler(IdeActions.ACTION_EDITOR_BACKSPACE)); return myHandler; }