001         package com.croftsoft.apps.agoracast.c2p;
002    
003         import java.awt.*;
004         import java.awt.event.*;
005         import java.util.*;
006         import javax.swing.*;
007         import javax.swing.event.*;
008    
009         import com.croftsoft.core.lang.NullArgumentException;
010         import com.croftsoft.core.lang.Pair;
011    
012         /*********************************************************************
013         * @version
014         *   2002-01-29
015         * @since
016         *   2001-09-12
017         * @author
018         *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
019         *********************************************************************/
020    
021         public final class  AgoracastInputPanel
022           extends JPanel
023           implements ChangeListener
024         //////////////////////////////////////////////////////////////////////
025         //////////////////////////////////////////////////////////////////////
026         {
027    
028         private final ChangeEvent         changeEvent;
029    
030         private final ChangeListener      changeListener;
031    
032         private final AgoracastMediator   agoracastMediator;
033    
034         private final Map  nameToAgoracastFieldViewMap = new HashMap ( );
035    
036         //////////////////////////////////////////////////////////////////////
037         //////////////////////////////////////////////////////////////////////
038    
039         public  AgoracastInputPanel (
040           AgoracastMediator  agoracastMediator,
041           String [ ]         fieldNames,
042           ChangeListener     changeListener )
043         //////////////////////////////////////////////////////////////////////
044         {
045           super ( new GridBagLayout ( ), true );
046    
047           NullArgumentException.check (
048             this.agoracastMediator = agoracastMediator );
049    
050           NullArgumentException.check ( fieldNames );
051    
052           NullArgumentException.check (
053             this.changeListener = changeListener );
054    
055           changeEvent = new ChangeEvent ( this );
056    
057           GridBagConstraints  gridBagConstraints = new GridBagConstraints ( );
058    
059           gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
060    
061           gridBagConstraints.ipadx = 0;
062    
063           gridBagConstraints.ipady = 0;
064    
065           gridBagConstraints.insets = new Insets ( 8, 8, 8, 8 );
066    
067           for ( int  i = 0; i < fieldNames.length; i++ )
068           {
069             AgoracastField  agoracastField
070               = agoracastMediator.getAgoracastField ( fieldNames [ i ] );
071    
072             AgoracastFieldView  agoracastFieldView
073               = new AgoracastFieldView (
074               agoracastMediator, agoracastField, true,
075               ( ChangeListener ) this );
076    
077             gridBagConstraints.gridx = 0;
078    
079             gridBagConstraints.gridy = i;
080    
081             gridBagConstraints.weightx = 0.0;
082    
083             add ( agoracastFieldView.getCheckBox ( ), gridBagConstraints );
084    
085             gridBagConstraints.gridx = 1;
086    
087             add ( agoracastFieldView.getLabel ( ), gridBagConstraints );
088    
089             gridBagConstraints.gridx = 2;
090    
091             gridBagConstraints.weightx = 1.0;
092    
093             add ( agoracastFieldView.getComponent ( ), gridBagConstraints );
094    
095             gridBagConstraints.gridx = 3;
096    
097             gridBagConstraints.weightx = 0.0;
098    
099             add ( agoracastFieldView.getDescriptorLabel ( ),
100               gridBagConstraints );
101    
102             nameToAgoracastFieldViewMap.put (
103               agoracastField.getName ( ), agoracastFieldView );
104           }
105    
106           AgoracastLib.setColor ( this, agoracastMediator );
107         }
108    
109         //////////////////////////////////////////////////////////////////////
110         //////////////////////////////////////////////////////////////////////
111    
112         public void  setSelected (
113           String   name,
114           boolean  selected )
115         //////////////////////////////////////////////////////////////////////
116         {
117           AgoracastFieldView  agoracastFieldView = ( AgoracastFieldView )
118             nameToAgoracastFieldViewMap.get ( name );
119    
120           agoracastFieldView.setSelected ( selected );
121         }
122    
123         public void  setSelectedAll ( boolean  selected )
124         //////////////////////////////////////////////////////////////////////
125         {
126           Iterator  iterator
127             = nameToAgoracastFieldViewMap.values ( ).iterator ( );
128    
129           while ( iterator.hasNext ( ) )
130           {
131             AgoracastFieldView  agoracastFieldView
132               = ( AgoracastFieldView ) iterator.next ( );
133    
134             agoracastFieldView.setSelected ( selected );
135           }
136         }
137    
138         public boolean  isSelected ( String  name )
139         //////////////////////////////////////////////////////////////////////
140         {
141           AgoracastFieldView  agoracastFieldView = ( AgoracastFieldView )
142             nameToAgoracastFieldViewMap.get ( name );
143    
144           return agoracastFieldView.isSelected ( );
145         }
146    
147         public boolean  hasSelectedField ( )
148         //////////////////////////////////////////////////////////////////////
149         {
150           Iterator  iterator
151             = nameToAgoracastFieldViewMap.values ( ).iterator ( );
152    
153           while ( iterator.hasNext ( ) )
154           {
155             AgoracastFieldView  agoracastFieldView
156               = ( AgoracastFieldView ) iterator.next ( );
157    
158             if ( agoracastFieldView.isSelected ( ) )
159             {
160               return true;
161             }
162           }
163           
164           return false;
165         }
166    
167         public String [ ]  getSelectedNames ( )
168         //////////////////////////////////////////////////////////////////////
169         {
170           java.util.List  nameList = new ArrayList ( );
171    
172           Iterator  iterator
173             = nameToAgoracastFieldViewMap.values ( ).iterator ( );
174    
175           while ( iterator.hasNext ( ) )
176           {
177             AgoracastFieldView  agoracastFieldView
178               = ( AgoracastFieldView ) iterator.next ( );
179    
180             if ( agoracastFieldView.isSelected ( ) )
181             {
182               nameList.add ( agoracastFieldView.getName ( ) );
183             }         
184           }
185    
186           return ( String [ ] ) nameList.toArray ( new String [ ] { } );
187         }
188    
189         public String  getValue ( String  name )
190         //////////////////////////////////////////////////////////////////////
191         {
192           AgoracastFieldView  agoracastFieldView
193             = ( AgoracastFieldView )
194            nameToAgoracastFieldViewMap.get ( name );
195    
196           if ( agoracastFieldView == null )
197           {
198             return null;
199           }
200    
201           return agoracastFieldView.getValue ( );
202         }
203    
204         public void  setValue (
205           String  name,
206           String  value )
207         //////////////////////////////////////////////////////////////////////
208         {
209           AgoracastFieldView  agoracastFieldView
210             = ( AgoracastFieldView )
211            nameToAgoracastFieldViewMap.get ( name );
212    
213           agoracastFieldView.setValue ( value );
214         }
215    
216         public synchronized void  useDefaults ( )
217         //////////////////////////////////////////////////////////////////////
218         {
219           Iterator  iterator
220             = nameToAgoracastFieldViewMap.keySet ( ).iterator ( );
221    
222           while ( iterator.hasNext ( ) )
223           {
224             String  name = ( String ) iterator.next ( );
225    
226             AgoracastField  agoracastField
227               = agoracastMediator.getAgoracastField ( name );
228    
229             AgoracastFieldView  agoracastFieldView = ( AgoracastFieldView )
230               nameToAgoracastFieldViewMap.get ( name );
231    
232             agoracastFieldView.setValue ( agoracastField.getValue ( ) );
233           }
234         }
235    
236         //////////////////////////////////////////////////////////////////////
237         //////////////////////////////////////////////////////////////////////
238    
239         public synchronized void  stateChanged ( ChangeEvent  changeEvent )
240         //////////////////////////////////////////////////////////////////////
241         {
242           changeListener.stateChanged ( this.changeEvent );
243         }
244    
245         //////////////////////////////////////////////////////////////////////
246         //////////////////////////////////////////////////////////////////////
247         }