Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/*
 * #%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.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

import javax.swing.KeyStroke;

public class Main {
    /**
     * Creates a copy of this menu bar, whose contents update automatically
     * whenever the original menu bar changes.
     */
    public static JMenuBar cloneMenuBar(final JMenuBar menubar) {
        if (menubar == null)
            return null;
        final JMenuBar jmb = new JMenuBar();
        final int count = menubar.getMenuCount();
        for (int i = 0; i < count; i++)
            jmb.add(cloneMenuItem(menubar.getMenu(i)));
        return jmb;
    }

    /**
     * Creates a copy of this menu item, whose contents update automatically
     * whenever the original menu item changes.
     */
    public static JMenuItem cloneMenuItem(final JMenuItem item) {
        if (item == null)
            return null;
        JMenuItem jmi;
        if (item instanceof JMenu) {
            final JMenu menu = (JMenu) item;
            final JMenu jm = new JMenu();
            final int count = menu.getItemCount();
            for (int i = 0; i < count; i++) {
                final JMenuItem ijmi = cloneMenuItem(menu.getItem(i));
                if (ijmi == null)
                    jm.addSeparator();
                else
                    jm.add(ijmi);
            }
            jmi = jm;
        } else
            jmi = new JMenuItem();
        final ActionListener[] l = item.getActionListeners();
        for (int i = 0; i < l.length; i++)
            jmi.addActionListener(l[i]);
        jmi.setActionCommand(item.getActionCommand());
        syncMenuItem(item, jmi);
        linkMenuItem(item, jmi);
        return jmi;
    }

    /** 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);
    }

    /**
     * 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);
            }
        });
    }
}