    001/* ========================================================================
    002 * JCommon : a free general purpose class library for the Java(tm) platform
    003 * ========================================================================
    004 *
    005 * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
    006 *
    007 * Project Info:  http://www.jfree.org/jcommon/index.html
    008 *
    009 * This library is free software; you can redistribute it and/or modify it
    010 * under the terms of the GNU Lesser General Public License as published by
    011 * the Free Software Foundation; either version 2.1 of the License, or
    012 * (at your option) any later version.
    013 *
    014 * This library is distributed in the hope that it will be useful, but
    015 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
    016 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
    017 * License for more details.
    018 *
    019 * You should have received a copy of the GNU Lesser General Public
    020 * License along with this library; if not, write to the Free Software
    021 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
    022 * USA.
    023 *
    024 * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
    025 * in the United States and other countries.]
    026 *
    027 * ----------------------
    028 * AbstractTabbedGUI.java
    029 * ----------------------
    030 * (C)opyright 2004, by Thomas Morgner and Contributors.
    031 *
    032 * Original Author:  Thomas Morgner;
    033 * Contributor(s):   David Gilbert (for Object Refinery Limited);
    034 *
    035 * $Id: TabbedDialog.java,v 1.7 2008/09/10 09:19:04 mungady Exp $
    036 *
    037 * Changes
    038 * -------------------------
    039 * 16-Feb-2004 : Initial version
    040 * 07-Jun-2004 : Added standard header (DG);
    041 */
    042
    043package org.jfree.ui.tabbedui;
    044
    045import java.awt.BorderLayout;
    046import java.awt.Dialog;
    047import java.awt.Frame;
    048import java.awt.event.ActionEvent;
    049import java.awt.event.WindowAdapter;
    050import java.awt.event.WindowEvent;
    051import java.beans.PropertyChangeEvent;
    052import java.beans.PropertyChangeListener;
    053import javax.swing.JDialog;
    054import javax.swing.JPanel;
    055
    056/**
    057 * A JDialog implementation that uses a tabbed UI as backend.
    058 *
    059 * @author Thomas Morgner
    060 */
    061public class TabbedDialog extends JDialog {
    062
    063    /** The backend. */
    064    private AbstractTabbedUI tabbedUI;
    065
    066    /**
    067     * A property change listener that waits for the menubar to change.
    068     */
    069    private class MenuBarChangeListener implements PropertyChangeListener {
    070
    071        /**
    072         * Creates a new change listener.
    073         */
    074        public MenuBarChangeListener() {
    075        }
    076
    077        /**
    078         * This method gets called when a bound property is changed.
    079         *
    080         * @param evt A PropertyChangeEvent object describing the event source
    081         *            and the property that has changed.
    082         */
    083        public void propertyChange(final PropertyChangeEvent evt) {
    084            if (evt.getPropertyName().equals(AbstractTabbedUI.JMENUBAR_PROPERTY)) {
    085                setJMenuBar(getTabbedUI().getJMenuBar());
    086            }
    087        }
    088    }
    089    /**
    090     * Default constructor.
    091     */
    092    public TabbedDialog() {
    093    }
    094
    095    /**
    096     * Creates a new dialog.
    097     *
    098     * @param owner  the owner.
    099     */
    100    public TabbedDialog(final Dialog owner) {
    101        super(owner);
    102    }
    103
    104    /**
    105     * Creates a new dialog.
    106     *
    107     * @param owner  the owner.
    108     * @param modal  modal dialog?
    109     */
    110    public TabbedDialog(final Dialog owner, final boolean modal) {
    111        super(owner, modal);
    112    }
    113
    114    /**
    115     * Creates a new dialog.
    116     *
    117     * @param owner  the owner.
    118     * @param title  the dialog title.
    119     */
    120    public TabbedDialog(final Dialog owner, final String title) {
    121        super(owner, title);
    122    }
    123
    124    /**
    125     * Creates a new dialog.
    126     *
    127     * @param owner  the owner.
    128     * @param title  the dialog title.
    129     * @param modal  modal dialog?
    130     */
    131    public TabbedDialog(final Dialog owner, final String title, final boolean modal) {
    132        super(owner, title, modal);
    133    }
    134
    135    /**
    136     * Creates a new dialog.
    137     *
    138     * @param owner  the owner.
    139     */
    140    public TabbedDialog(final Frame owner) {
    141        super(owner);
    142    }
    143
    144    /**
    145     * Creates a new dialog.
    146     *
    147     * @param owner  the owner.
    148     * @param modal  modal dialog?
    149     */
    150    public TabbedDialog(final Frame owner, final boolean modal) {
    151        super(owner, modal);
    152    }
    153
    154    /**
    155     * Creates a new dialog.
    156     *
    157     * @param owner  the owner.
    158     * @param title  the dialog title.
    159     */
    160    public TabbedDialog(final Frame owner, final String title) {
    161        super(owner, title);
    162    }
    163
    164    /**
    165     * Creates a new dialog.
    166     *
    167     * @param owner  the owner.
    168     * @param title  the dialog title.
    169     * @param modal  modal dialog?
    170     */
    171    public TabbedDialog(final Frame owner, final String title, final boolean modal) {
    172        super(owner, title, modal);
    173    }
    174
    175
    176    /**
    177     * Returns the UI implementation for the dialog.
    178     *
    179     * @return Returns the tabbedUI.
    180     */
    181    protected final AbstractTabbedUI getTabbedUI()
    182    {
    183      return this.tabbedUI;
    184    }
    185
    186    /**
    187     * Initialises the dialog.
    188     *
    189     * @param tabbedUI  the UI that controls the dialog.
    190     */
    191    public void init(final AbstractTabbedUI tabbedUI) {
    192
    193        this.tabbedUI = tabbedUI;
    194        this.tabbedUI.addPropertyChangeListener
    195            (AbstractTabbedUI.JMENUBAR_PROPERTY, new MenuBarChangeListener());
    196
    197        addWindowListener(new WindowAdapter() {
    198            public void windowClosing(final WindowEvent e) {
    199                getTabbedUI().getCloseAction().actionPerformed
    200                    (new ActionEvent(this, ActionEvent.ACTION_PERFORMED, null, 0));
    201            }
    202        });
    203
    204        final JPanel panel = new JPanel();
    205        panel.setLayout(new BorderLayout());
    206        panel.add(tabbedUI, BorderLayout.CENTER);
    207        setContentPane(panel);
    208        setJMenuBar(tabbedUI.getJMenuBar());
    209
    210    }
    211
    212}