001         package com.croftsoft.core.gui;
002    
003         import java.awt.*;
004         import java.util.Hashtable;
005    
006         import com.croftsoft.core.lang.NullArgumentException;
007    
008         /*********************************************************************
009         * A Panel of TextFields with identifying Labels.
010         *
011         * <p>
012         * Created TextField objects are available via an accessor method.
013         * </p>
014         *
015         * <p>
016         * Example:
017         * <code>
018         * <pre>
019         * LabeledFieldsPanel1  labeledFieldsPanel1 = new LabeledFieldsPanel1 (
020         *   new String [ ] { "username", "password" } );
021         *
022         * TextField  passwordTextField
023         *   = labeledFieldsPanel1.getTextField ( "password" );
024         *
025         * passwordTextField.setEchoChar ( '*' );
026         * </pre>
027         * </code>
028         * </p>
029         *
030         * <p>
031         * Java 1.1 compatible.
032         * </p>
033         *
034         * @version
035         *   2001-08-08
036         * @since
037         *   2001-03-28
038         * @author
039         *   <a href="http://www.CroftSoft.com/">David W. Croft</a>
040         *********************************************************************/
041    
042         public final class  LabeledFieldsPanel1
043           extends Panel
044         //////////////////////////////////////////////////////////////////////
045         //////////////////////////////////////////////////////////////////////
046         {
047    
048         private final Hashtable  labelNameToTextFieldMap = new Hashtable ( );
049    
050         //////////////////////////////////////////////////////////////////////
051         //////////////////////////////////////////////////////////////////////
052    
053         public  LabeledFieldsPanel1 (
054           String [ ]  labelNames,
055           Color       panelBackgroundColor,
056           Color       textFieldBackgroundColor )
057         //////////////////////////////////////////////////////////////////////
058         {
059           super ( new BorderLayout ( ) );
060    
061           NullArgumentException.check ( labelNames );
062    
063           Panel  labelsPanel = new Panel (
064             new GridLayout ( labelNames.length, 1, 4, 4 ) );
065    
066           Panel  fieldsPanel = new Panel (
067             new GridLayout ( labelNames.length, 1, 4, 4 ) );
068    
069           for ( int  i = 0; i < labelNames.length; i++ )
070           {
071             String  labelName = labelNames [ i ];
072    
073             labelsPanel.add ( new Label ( labelName ) );
074    
075             TextField  textField = new TextField ( );
076    
077             labelNameToTextFieldMap.put ( labelName, textField );
078    
079             fieldsPanel.add ( textField );
080    
081             if ( textFieldBackgroundColor != null )
082             {
083               textField.setBackground ( textFieldBackgroundColor );
084             }
085           }
086    
087           if ( panelBackgroundColor != null )
088           {
089             setBackground ( panelBackgroundColor );
090           }
091    
092           add ( labelsPanel, BorderLayout.WEST );
093    
094           add ( fieldsPanel, BorderLayout.CENTER );
095         }
096    
097         public  LabeledFieldsPanel1 (
098           String  labelName,
099           Color   panelBackgroundColor,
100           Color   textFieldBackgroundColor )
101         //////////////////////////////////////////////////////////////////////
102         {
103           this ( new String [ ] { labelName },
104             panelBackgroundColor, textFieldBackgroundColor );
105         }
106    
107         public  LabeledFieldsPanel1 ( String [ ]  labelNames )
108         //////////////////////////////////////////////////////////////////////
109         {
110           this ( labelNames, null, null );
111         }
112    
113         public  LabeledFieldsPanel1 ( String  labelName )
114         //////////////////////////////////////////////////////////////////////
115         {
116           this ( new String [ ] { labelName }, null, null );
117         }
118    
119         //////////////////////////////////////////////////////////////////////
120         //////////////////////////////////////////////////////////////////////
121    
122         public TextField  getTextField ( String  labelName )
123         //////////////////////////////////////////////////////////////////////
124         {
125           return ( TextField ) labelNameToTextFieldMap.get ( labelName );
126         }
127    
128         //////////////////////////////////////////////////////////////////////
129         //////////////////////////////////////////////////////////////////////
130         }