Frames | No Frames |
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: }