Example usage for com.intellij.openapi.editor.actionSystem TypedAction getHandler

List of usage examples for com.intellij.openapi.editor.actionSystem TypedAction getHandler

Introduction

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

Prototype

public TypedActionHandler getHandler() 

Source Link

Document

Gets the current typing handler.

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   w  w w.j a  v  a2s  .c  o  m

        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>RubyTypedHandler</code> in manager
 *
 * @param manager IDEA`s editor action manager
 * @return RubyTypedAction Handler/* w  w  w  .j a v  a2s.  c o  m*/
 * @see RubyTypedHandler RubyTypedHandler for more details
 */
public static TypedActionHandler registerRubyTypedActionHandler(EditorActionManager manager) {
    TypedAction originalTypedAction = manager.getTypedAction();
    TypedActionHandler myHandler = new RubyTypedHandler(originalTypedAction.getHandler());
    originalTypedAction.setupHandler(myHandler);
    return myHandler;
}