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.5 2005/10/18 13:23:37 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: 
  54: import javax.swing.JDialog;
  55: import javax.swing.JPanel;
  56: 
  57: /**
  58:  * A JDialog implementation that uses a tabbed UI as backend.
  59:  *
  60:  * @author Thomas Morgner
  61:  */
  62: public class TabbedDialog extends JDialog {
  63: 
  64:     /** The backend. */
  65:     private AbstractTabbedUI tabbedUI;
  66: 
  67:     /**
  68:      * A property change listener that waits for the menubar to change.
  69:      */
  70:     private class MenuBarChangeListener implements PropertyChangeListener {
  71: 
  72:         /**
  73:          * Creates a new change listener.
  74:          */
  75:         public MenuBarChangeListener() {
  76:         }
  77: 
  78:         /**
  79:          * This method gets called when a bound property is changed.
  80:          *
  81:          * @param evt A PropertyChangeEvent object describing the event source
  82:          *            and the property that has changed.
  83:          */
  84:         public void propertyChange(final PropertyChangeEvent evt) {
  85:             if (evt.getPropertyName().equals(AbstractTabbedUI.JMENUBAR_PROPERTY)) {
  86:                 setJMenuBar(getTabbedUI().getJMenuBar());
  87:             }
  88:         }
  89:     }
  90:     /**
  91:      * Default constructor.
  92:      */
  93:     public TabbedDialog() {
  94:     }
  95: 
  96:     /**
  97:      * Creates a new dialog.
  98:      * 
  99:      * @param owner  the owner.
 100:      */
 101:     public TabbedDialog(final Dialog owner) {
 102:         super(owner);
 103:     }
 104: 
 105:     /**
 106:      * Creates a new dialog.
 107:      * 
 108:      * @param owner  the owner.
 109:      * @param modal  modal dialog?
 110:      */
 111:     public TabbedDialog(final Dialog owner, final boolean modal) {
 112:         super(owner, modal);
 113:     }
 114: 
 115:     /**
 116:      * Creates a new dialog.
 117:      * 
 118:      * @param owner  the owner.
 119:      * @param title  the dialog title.
 120:      */
 121:     public TabbedDialog(final Dialog owner, final String title) {
 122:         super(owner, title);
 123:     }
 124: 
 125:     /**
 126:      * Creates a new dialog.
 127:      * 
 128:      * @param owner  the owner.
 129:      * @param title  the dialog title.
 130:      * @param modal  modal dialog?
 131:      */
 132:     public TabbedDialog(final Dialog owner, final String title, final boolean modal) {
 133:         super(owner, title, modal);
 134:     }
 135: 
 136:     /**
 137:      * Creates a new dialog.
 138:      * 
 139:      * @param owner  the owner.
 140:      */
 141:     public TabbedDialog(final Frame owner) {
 142:         super(owner);
 143:     }
 144: 
 145:     /**
 146:      * Creates a new dialog.
 147:      * 
 148:      * @param owner  the owner.
 149:      * @param modal  modal dialog?
 150:      */
 151:     public TabbedDialog(final Frame owner, final boolean modal) {
 152:         super(owner, modal);
 153:     }
 154: 
 155:     /**
 156:      * Creates a new dialog.
 157:      * 
 158:      * @param owner  the owner.
 159:      * @param title  the dialog title.
 160:      */
 161:     public TabbedDialog(final Frame owner, final String title) {
 162:         super(owner, title);
 163:     }
 164: 
 165:     /**
 166:      * Creates a new dialog.
 167:      * 
 168:      * @param owner  the owner.
 169:      * @param title  the dialog title.
 170:      * @param modal  modal dialog?
 171:      */
 172:     public TabbedDialog(final Frame owner, final String title, final boolean modal) {
 173:         super(owner, title, modal);
 174:     }
 175: 
 176:     
 177:     /**
 178:      * Returns the UI implementation for the dialog.
 179:      *
 180:      * @return Returns the tabbedUI.
 181:      */
 182:     protected final AbstractTabbedUI getTabbedUI()
 183:     {
 184:       return tabbedUI;
 185:     }
 186: 
 187:     /**
 188:      * Initialises the dialog.
 189:      *
 190:      * @param tabbedUI  the UI that controls the dialog.
 191:      */
 192:     public void init(final AbstractTabbedUI tabbedUI) {
 193: 
 194:         this.tabbedUI = tabbedUI;
 195:         this.tabbedUI.addPropertyChangeListener
 196:             (AbstractTabbedUI.JMENUBAR_PROPERTY, new MenuBarChangeListener());
 197: 
 198:         addWindowListener(new WindowAdapter() {
 199:             public void windowClosing(final WindowEvent e) {
 200:                 getTabbedUI().getCloseAction().actionPerformed
 201:                     (new ActionEvent(this, ActionEvent.ACTION_PERFORMED, null, 0));
 202:             }
 203:         });
 204: 
 205:         final JPanel panel = new JPanel();
 206:         panel.setLayout(new BorderLayout());
 207:         panel.add(tabbedUI, BorderLayout.CENTER);
 208:         setContentPane(panel);
 209:         setJMenuBar(tabbedUI.getJMenuBar());
 210: 
 211:     }
 212: 
 213: }