Source for org.jfree.ui.tabbedui.TabbedDialog

   1: /* ========================================================================
   2:  * JCommon : a free general purpose class library for the Java(tm) platform
   3:  * ========================================================================
   4:  *
   5:  * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
   6:  *
   7:  * Project Info:  http://www.jfree.org/jcommon/index.html
   8:  *
   9:  * This library is free software; you can redistribute it and/or modify it
  10:  * under the terms of the GNU Lesser General Public License as published by
  11:  * the Free Software Foundation; either version 2.1 of the License, or
  12:  * (at your option) any later version.
  13:  *
  14:  * This library is distributed in the hope that it will be useful, but
  15:  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  16:  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
  17:  * License for more details.
  18:  *
  19:  * You should have received a copy of the GNU Lesser General Public
  20:  * License along with this library; if not, write to the Free Software
  21:  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
  22:  * USA.
  23:  *
  24:  * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
  25:  * in the United States and other countries.]
  26:  *
  27:  * ----------------------
  28:  * AbstractTabbedGUI.java
  29:  * ----------------------
  30:  * (C)opyright 2004, by Thomas Morgner and Contributors.
  31:  *
  32:  * Original Author:  Thomas Morgner;
  33:  * Contributor(s):   David Gilbert (for Object Refinery Limited);
  34:  *
  35:  * $Id: TabbedDialog.java,v 1.7 2008/09/10 09:19:04 mungady Exp $
  36:  *
  37:  * Changes
  38:  * -------------------------
  39:  * 16-Feb-2004 : Initial version
  40:  * 07-Jun-2004 : Added standard header (DG);
  41:  */
  42: 
  43: package org.jfree.ui.tabbedui;
  44: 
  45: import java.awt.BorderLayout;
  46: import java.awt.Dialog;
  47: import java.awt.Frame;
  48: import java.awt.event.ActionEvent;
  49: import java.awt.event.WindowAdapter;
  50: import java.awt.event.WindowEvent;
  51: import java.beans.PropertyChangeEvent;
  52: import java.beans.PropertyChangeListener;
  53: import javax.swing.JDialog;
  54: import javax.swing.JPanel;
  55: 
  56: /**
  57:  * A JDialog implementation that uses a tabbed UI as backend.
  58:  *
  59:  * @author Thomas Morgner
  60:  */
  61: public class TabbedDialog extends JDialog {
  62: 
  63:     /** The backend. */
  64:     private AbstractTabbedUI tabbedUI;
  65: 
  66:     /**
  67:      * A property change listener that waits for the menubar to change.
  68:      */
  69:     private class MenuBarChangeListener implements PropertyChangeListener {
  70: 
  71:         /**
  72:          * Creates a new change listener.
  73:          */
  74:         public MenuBarChangeListener() {
  75:         }
  76: 
  77:         /**
  78:          * This method gets called when a bound property is changed.
  79:          *
  80:          * @param evt A PropertyChangeEvent object describing the event source
  81:          *            and the property that has changed.
  82:          */
  83:         public void propertyChange(final PropertyChangeEvent evt) {
  84:             if (evt.getPropertyName().equals(AbstractTabbedUI.JMENUBAR_PROPERTY)) {
  85:                 setJMenuBar(getTabbedUI().getJMenuBar());
  86:             }
  87:         }
  88:     }
  89:     /**
  90:      * Default constructor.
  91:      */
  92:     public TabbedDialog() {
  93:     }
  94: 
  95:     /**
  96:      * Creates a new dialog.
  97:      *
  98:      * @param owner  the owner.
  99:      */
 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: }