Example usage for com.intellij.openapi.editor.actionSystem EditorActionManager setActionHandler

List of usage examples for com.intellij.openapi.editor.actionSystem EditorActionManager setActionHandler

Introduction

In this page you can find the example usage for com.intellij.openapi.editor.actionSystem EditorActionManager setActionHandler.

Prototype

public abstract EditorActionHandler setActionHandler(@NonNls @NotNull String actionId,
        @NotNull EditorActionHandler handler);

Source Link

Document

Sets the handler for the specified editor actions.

Usage

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;
}