001 package com.croftsoft.core.gui;
002
003 import java.awt.*;
004
005 import com.croftsoft.core.lang.NullArgumentException;
006
007 /*********************************************************************
008 * A Panel of Buttons evenly distributed in a single horizontal row.
009 *
010 * <p>
011 * Uses GridBagLayout instead of GridLayout to ensure even distribution
012 * during layout of the Buttons when the Panel is odd-sized.
013 * </p>
014 *
015 * <p>
016 * Example:
017 * <code>
018 * <pre>
019 * buttonPanel = new ButtonPanel1 (
020 * new Button [ ] {
021 * playButton = new Button ( "Play" ),
022 * stopButton = new Button ( "Stop" ),
023 * pauseButton = new Button ( "Pause" ) } );
024 * </pre>
025 * </code>
026 * </p>
027 *
028 * <p>
029 * Java 1.1 compatible.
030 * </p>
031 *
032 * @version
033 * 2001-08-08
034 * @since
035 * 2001-04-16
036 * @author
037 * <a href="https://www.croftsoft.com/">David W. Croft</a>
038 *********************************************************************/
039
040 public final class ButtonPanel1
041 extends Panel
042 //////////////////////////////////////////////////////////////////////
043 //////////////////////////////////////////////////////////////////////
044 {
045
046 /*********************************************************************
047 * @param panelBackgroundColor
048 *
049 * If null, the default will be used.
050 *
051 * @throws NullArgumentException
052 *
053 * If buttons is null or buttons[i] is null.
054 *********************************************************************/
055 public ButtonPanel1 (
056 Button [ ] buttons,
057 Color panelBackgroundColor )
058 //////////////////////////////////////////////////////////////////////
059 {
060 super ( new GridBagLayout ( ) );
061
062 NullArgumentException.check ( buttons );
063
064 GridBagConstraints gridBagConstraints = new GridBagConstraints ( );
065
066 gridBagConstraints.weightx = 1.0;
067
068 gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
069
070 for ( int i = 0; i < buttons.length; i++ )
071 {
072 Button button = buttons [ i ];
073
074 NullArgumentException.check (
075 button, "buttons[" + i + "] is null" );
076
077 gridBagConstraints.gridx = i;
078
079 add ( button, gridBagConstraints );
080 }
081
082 if ( panelBackgroundColor != null )
083 {
084 setBackground ( panelBackgroundColor );
085 }
086 }
087
088 /*********************************************************************
089 * this ( buttons, null );
090 *********************************************************************/
091 public ButtonPanel1 ( Button [ ] buttons )
092 //////////////////////////////////////////////////////////////////////
093 {
094 this ( buttons, null );
095 }
096
097 //////////////////////////////////////////////////////////////////////
098 //////////////////////////////////////////////////////////////////////
099 }