Java JMenuItem linkMenuItem(final JMenuItem master, final JMenuItem slave)

Here you can find the source of linkMenuItem(final JMenuItem master, final JMenuItem slave)

Description

Forces slave menu item to reflect master menu item using a property change listener.

License

Open Source License

Declaration

protected static void linkMenuItem(final JMenuItem master, final JMenuItem slave) 

Method Source Code

//package com.java2s;
/*//  w w  w .  j  a  va 2 s  . c  o  m
 * #%L
 * VisBio application for visualization of multidimensional biological
 * image data.
 * %%
 * Copyright (C) 2002 - 2014 Board of Regents of the University of
 * Wisconsin-Madison.
 * %%
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as
 * published by the Free Software Foundation, either version 2 of the
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public
 * License along with this program.  If not, see
 * <http://www.gnu.org/licenses/gpl-2.0.html>.
 * #L%
 */

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

import javax.swing.JMenuItem;

import javax.swing.KeyStroke;

public class Main {
    /**
     * Forces slave menu item to reflect master menu item using a property change
     * listener.
     */
    protected static void linkMenuItem(final JMenuItem master, final JMenuItem slave) {
        final JMenuItem source = master, dest = slave;
        source.addPropertyChangeListener(new PropertyChangeListener() {

            @Override
            public void propertyChange(final PropertyChangeEvent e) {
                syncMenuItem(source, dest);
            }
        });
    }

    /** Brings the destination menu item into sync with the source item. */
    protected static void syncMenuItem(final JMenuItem source, final JMenuItem dest) {
        final boolean enabled = source.isEnabled();
        if (dest.isEnabled() != enabled)
            dest.setEnabled(enabled);
        final int mnemonic = source.getMnemonic();
        if (dest.getMnemonic() != mnemonic)
            dest.setMnemonic(mnemonic);
        final String text = source.getText();
        if (dest.getText() != text)
            dest.setText(text);
        final KeyStroke accel = source.getAccelerator();
        if (dest.getAccelerator() != accel)
            dest.setAccelerator(accel);
    }
}

Related

  1. getInvoker(final JMenuItem menuItem)
  2. getJMenuItem(String name, JMenuBar jmenubar)
  3. getMenuItemParent(JMenuItem menuItem)
  4. getTopLevelMenu(JMenuItem menuitem)
  5. layoutMenuItem(JMenuItem menuItem, FontMetrics fm, String text, FontMetrics fmAccel, String acceleratorText, Icon icon, Icon checkIcon, Icon arrowIcon, int verticalAlignment, int horizontalAlignment, int verticalTextPosition, int horizontalTextPosition, Rectangle viewRect, Rectangle iconRect, Rectangle textRect, Rectangle acceleratorRect, Rectangle checkIconRect, Rectangle arrowIconRect, int textIconGap, int menuItemGap)
  6. pintaBarraMenu(Graphics g, JMenuItem menuItem, Color bgColor)
  7. recursiveUpdateOrInsertMenuItem(MenuElement menu, JMenuItem menuItem, boolean hideOnUpdate)
  8. replaceMenuItem( @Nonnull JMenuItem orginalMenuItem, @Nonnull JMenuItem replacementMenuItem)
  9. setAccelerator(JMenuItem menuItem, int key, int mask)