Package javax.swing

Source Code of javax.swing.JMenuItem$AccessibleJMenuItem

/*
*  Licensed to the Apache Software Foundation (ASF) under one or more
*  contributor license agreements.  See the NOTICE file distributed with
*  this work for additional information regarding copyright ownership.
*  The ASF licenses this file to You under the Apache License, Version 2.0
*  (the "License"); you may not use this file except in compliance with
*  the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
*  distributed under the License is distributed on an "AS IS" BASIS,
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*  See the License for the specific language governing permissions and
*  limitations under the License.
*/
/**
* @author Alexander T. Simbirtsev
* @version $Revision$
*/
package javax.swing;

import java.awt.Component;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;

import javax.accessibility.Accessible;
import javax.accessibility.AccessibleContext;
import javax.accessibility.AccessibleRole;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.MenuDragMouseEvent;
import javax.swing.event.MenuDragMouseListener;
import javax.swing.event.MenuKeyEvent;
import javax.swing.event.MenuKeyListener;
import javax.swing.plaf.MenuItemUI;

import org.apache.harmony.x.swing.StringConstants;

import org.apache.harmony.x.swing.internal.nls.Messages;


public class JMenuItem extends AbstractButton implements Accessible, MenuElement {

    // TODO implement
    protected class AccessibleJMenuItem extends AccessibleAbstractButton
            implements ChangeListener {

        AccessibleJMenuItem() {
        }

        public AccessibleRole getAccessibleRole() {
            return AccessibleRole.MENU_ITEM;
        }

        public void stateChanged(final ChangeEvent e) {
            throw new UnsupportedOperationException(Messages.getString("swing.27")); //$NON-NLS-1$
        }
    }

    private final static String UI_CLASS_ID = "MenuItemUI";

    private KeyStroke accelerator;
    private int prevMouseEventID;

    public JMenuItem() {
        this(null, null);
    }

    public JMenuItem(final Icon icon) {
        this(null, icon);
    }

    public JMenuItem(final String text) {
        this(text, null);
    }

    public JMenuItem(final String text, final int mnemonic) {
        setDefaultModelAndFocus();
        setMnemonic(mnemonic);
        init(text, null);
    }

    public JMenuItem(final String text, final Icon icon) {
        setDefaultModelAndFocus();
        init(text, icon);
    }

    public JMenuItem(final Action action) {
        setDefaultModelAndFocus();
        setAction(action);
        init(getText(), getIcon());
    }

    void configurePropertyFromAction(final Action action, final Object propertyName) {
        if (propertyName != null && propertyName.equals(Action.ACCELERATOR_KEY)) {
            setAccelerator((KeyStroke)action.getValue(Action.ACCELERATOR_KEY));
        }
        super.configurePropertyFromAction(action, propertyName);
    }

    public void setUI(final MenuItemUI ui) {
        super.setUI(ui);
    }

    public void updateUI() {
        setUI((MenuItemUI)UIManager.getUI(this));
    }

    public String getUIClassID() {
        return UI_CLASS_ID;
    }

    public void setArmed(final boolean armed) {
        model.setArmed(armed);
    }

    public boolean isArmed() {
        return model.isArmed();
    }

    public void setAccelerator(final KeyStroke keyStroke) {
        KeyStroke oldValue = accelerator;
        accelerator = keyStroke;
        firePropertyChange(StringConstants.ACCELERATOR_PROPERTY, oldValue, accelerator);
    }

    public KeyStroke getAccelerator() {
        return accelerator;
    }

    protected void fireMenuDragMouseEntered(final MenuDragMouseEvent event) {
        final MenuDragMouseListener[] listeners = getMenuDragMouseListeners();
        for (int i = 0; i < listeners.length; i++) {
            listeners[i].menuDragMouseEntered(event);
        }
    }

    protected void fireMenuDragMouseExited(final MenuDragMouseEvent event) {
        final MenuDragMouseListener[] listeners = getMenuDragMouseListeners();
        for (int i = 0; i < listeners.length; i++) {
            listeners[i].menuDragMouseExited(event);
        }
    }

    protected void fireMenuDragMouseDragged(final MenuDragMouseEvent event) {
        final MenuDragMouseListener[] listeners = getMenuDragMouseListeners();
        for (int i = 0; i < listeners.length; i++) {
            listeners[i].menuDragMouseDragged(event);
        }
    }

    protected void fireMenuDragMouseReleased(final MenuDragMouseEvent event) {
        final MenuDragMouseListener[] listeners = getMenuDragMouseListeners();
        for (int i = 0; i < listeners.length; i++) {
            listeners[i].menuDragMouseReleased(event);
        }
    }

    protected void fireMenuKeyPressed(final MenuKeyEvent event) {
        final MenuKeyListener[] listeners = getMenuKeyListeners();
        for (int i = 0; i < listeners.length; i++) {
            listeners[i].menuKeyPressed(event);
        }
    }

    protected void fireMenuKeyReleased(final MenuKeyEvent event) {
        final MenuKeyListener[] listeners = getMenuKeyListeners();
        for (int i = 0; i < listeners.length; i++) {
            listeners[i].menuKeyReleased(event);
        }
    }

    protected void fireMenuKeyTyped(final MenuKeyEvent event) {
        final MenuKeyListener[] listeners = getMenuKeyListeners();
        for (int i = 0; i < listeners.length; i++) {
            listeners[i].menuKeyTyped(event);
        }
    }

    public void addMenuDragMouseListener(final MenuDragMouseListener listener) {
        listenerList.add(MenuDragMouseListener.class, listener);
    }

    public void removeMenuDragMouseListener(final MenuDragMouseListener listener) {
        listenerList.remove(MenuDragMouseListener.class, listener);
    }

    public MenuDragMouseListener[] getMenuDragMouseListeners() {
        return (MenuDragMouseListener[])getListeners(MenuDragMouseListener.class);
    }

    public void addMenuKeyListener(final MenuKeyListener listener) {
        listenerList.add(MenuKeyListener.class, listener);
    }

    public void removeMenuKeyListener(final MenuKeyListener listener) {
        listenerList.remove(MenuKeyListener.class, listener);
    }

    public MenuKeyListener[] getMenuKeyListeners() {
        return (MenuKeyListener[])getListeners(MenuKeyListener.class);
    }

    public AccessibleContext getAccessibleContext() {
        return (accessibleContext == null) ? (accessibleContext = new AccessibleJMenuItem())
                : accessibleContext;
    }

    public Component getComponent() {
        return this;
    }

    public MenuElement[] getSubElements() {
        return MenuSelectionManager.EMPTY_PATH;
    }

    public void menuSelectionChanged(final boolean isSelected) {
        setArmed(isSelected);
    }

    public void processMenuKeyEvent(final MenuKeyEvent e) {
        if (e.getID() == KeyEvent.KEY_PRESSED) {
            fireMenuKeyPressed(e);
        } else if (e.getID() == KeyEvent.KEY_RELEASED) {
            fireMenuKeyReleased(e);
        } else if (e.getID() == KeyEvent.KEY_TYPED) {
            fireMenuKeyTyped(e);
        }
    }

    public void processKeyEvent(final KeyEvent event, final MenuElement[] path,
                                final MenuSelectionManager manager) {
        final MenuKeyEvent menuKeyEvent = new MenuKeyEvent(event.getComponent(), event.getID(),
                                             event.getWhen(), event.getModifiersEx(),
                                             event.getKeyCode(), event.getKeyChar(),
                                             path, manager);
        processMenuKeyEvent(menuKeyEvent);
        if (menuKeyEvent.isConsumed()) {
            event.consume();
            return;
        }
        if (processMnemonics(event)) {
            event.consume();
            return;
        }
    }

    public void processMenuDragMouseEvent(final MenuDragMouseEvent e) {
        if (e.getID() == MouseEvent.MOUSE_ENTERED) {
            fireMenuDragMouseEntered(e);
        } else if (e.getID() == MouseEvent.MOUSE_EXITED) {
            fireMenuDragMouseExited(e);
        } else if (e.getID() == MouseEvent.MOUSE_DRAGGED) {
            fireMenuDragMouseDragged(e);
        } else if (e.getID() == MouseEvent.MOUSE_RELEASED &&
                prevMouseEventID == MouseEvent.MOUSE_DRAGGED) {

            fireMenuDragMouseReleased(e);
        }
        prevMouseEventID = e.getID();
    }

    public void processMouseEvent(final MouseEvent event, final MenuElement[] path,
                                  final MenuSelectionManager manager) {

        processMenuDragMouseEvent(new MenuDragMouseEvent((Component)event.getSource(),
                                                         event.getID(), event.getWhen(),
                                                         event.getModifiers(),
                                                         event.getX(), event.getY(),
                                                         event.getClickCount(),
                                                         event.isPopupTrigger(),
                                                         path, manager));
    }

    ButtonModel createDefaultModel() {
        return new DefaultButtonModel();
    }

    void setDefaultModelAndFocus() {
        setModel(createDefaultModel());
        setFocusPainted(false);
        setFocusable(false);
        setHorizontalAlignment(SwingConstants.LEADING);
    }

    static JMenuItem createJMenuItem(final Action action) {
        final JMenuItem result = new JMenuItem();
        result.configurePropertiesFromAction(action);
        result.setActionCommand(result.getText());
        return result;
    }

    boolean isMnemonicKeyStroke(final KeyStroke keyStroke) {
        return (keyStroke.getKeyCode() == getMnemonic()) &&
                !MenuSelectionManager.defaultManager().isPathEmpty();
    }
}
TOP

Related Classes of javax.swing.JMenuItem$AccessibleJMenuItem

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.