Java Swing ActionMap attachAccelerator(Action action, JComponent component)

Here you can find the source of attachAccelerator(Action action, JComponent component)

Description

attach Accelerator

License

EUPL

Declaration

public static void attachAccelerator(Action action, JComponent component) 

Method Source Code


//package com.java2s;
/*/*w  ww .  java  2s . c om*/
 * Copyright 2011, 2012 Delving BV
 *
 *  Licensed under the EUPL, Version 1.0 or? as soon they
 *  will be approved by the European Commission - subsequent
 *  versions of the EUPL (the "Licence");
 *  you may not use this work except in compliance with the
 *  Licence.
 *  You may obtain a copy of the Licence at:
 *
 *  http://ec.europa.eu/idabc/eupl
 *
 *  Unless required by applicable law or agreed to in
 *  writing, software distributed under the Licence is
 *  distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 *  express or implied.
 *  See the Licence for the specific language governing
 *  permissions and limitations under the Licence.
 */

import javax.swing.*;

import java.awt.event.KeyEvent;

public class Main {
    public static void attachAccelerator(Action action, JFrame frame) {
        KeyStroke stroke = (KeyStroke) action.getValue(Action.ACCELERATOR_KEY);
        String name = (String) action.getValue(Action.NAME);
        JComponent component = (JComponent) frame.getContentPane();
        component.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(stroke, name);
        component.getActionMap().put(name, action);
        addStrokeToName(action);
    }

    public static void attachAccelerator(Action action, JComponent component) {
        KeyStroke stroke = (KeyStroke) action.getValue(Action.ACCELERATOR_KEY);
        String name = (String) action.getValue(Action.NAME);
        component.getInputMap(JComponent.WHEN_FOCUSED).put(stroke, name);
        component.getActionMap().put(name, action);
        addStrokeToName(action);
    }

    public static void addStrokeToName(Action action) {
        KeyStroke stroke = (KeyStroke) action.getValue(Action.ACCELERATOR_KEY);
        if (stroke == null)
            return;
        String name = String.format("%s%s - %s", KeyEvent.getKeyModifiersText(stroke.getModifiers()),
                KeyEvent.getKeyText(stroke.getKeyCode()), action.getValue(Action.NAME));
        action.putValue(Action.NAME, name);
    }
}

Related

  1. addComponentAction(final JComponent component, final Action action)
  2. addEnterAction(JComponent c, Action a)
  3. addEnterAction(JComponent comp, Action action)
  4. addFieldsValidateAction(Action action, JComponent... components)
  5. addFieldValidateAction(JComponent field, Action action)
  6. bindAction(JComponent aComponent, String aCommand, Action anAction)
  7. checkActions(JComponent aComponent)
  8. cloneActionMap(ActionMap original)
  9. dumpActionMap(JComponent comp)