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 import com.croftsoft.core.lang.StringLib;
012
013 /*********************************************************************
014 * @version
015 * 2002-01-29
016 * @since
017 * 2001-09-13
018 * @author
019 * <a href="http://croftsoft.com/">David Wallace Croft</a>
020 *********************************************************************/
021
022 public final class AgoracastFieldView
023 implements ActionListener, ItemListener, KeyListener
024 //////////////////////////////////////////////////////////////////////
025 //////////////////////////////////////////////////////////////////////
026 {
027
028 private final ChangeEvent changeEvent;
029
030 private final ChangeListener changeListener;
031
032 private final JCheckBox checkBox;
033
034 private final JLabel label;
035
036 private final JComponent component;
037
038 private final JLabel descriptorLabel;
039
040 private final String name;
041
042 //////////////////////////////////////////////////////////////////////
043 //////////////////////////////////////////////////////////////////////
044
045 public AgoracastFieldView (
046 AgoracastMediator agoracastMediator,
047 AgoracastField agoracastField,
048 boolean isSelected,
049 ChangeListener changeListener )
050 //////////////////////////////////////////////////////////////////////
051 {
052 NullArgumentException.check ( agoracastMediator );
053
054 NullArgumentException.check ( agoracastField );
055
056 NullArgumentException.check (
057 this.changeListener = changeListener );
058
059 changeEvent = new ChangeEvent ( this );
060
061 checkBox = new JCheckBox ( );
062
063 name = StringLib.trimToNull ( agoracastField.getName ( ) );
064
065 label = new JLabel ( name );
066
067 String [ ] choices = agoracastField.getChoices ( );
068
069 if ( ( choices != null )
070 && ( choices.length > 0 ) )
071 {
072 JComboBox jComboBox = new JComboBox ( choices );
073
074 String value = agoracastField.getValue ( );
075
076 jComboBox.setSelectedItem ( value );
077
078 jComboBox.addActionListener ( this );
079
080 component = jComboBox;
081 }
082 else
083 {
084 JTextField jTextField = new JTextField ( );
085
086 jTextField.addKeyListener ( this );
087
088 String value = agoracastField.getValue ( );
089
090 if ( value != null )
091 {
092 jTextField.setText ( value );
093 }
094
095 component = jTextField;
096
097 AgoracastLib.setColor ( jTextField, agoracastMediator );
098 }
099
100 String descriptor = agoracastField.getSemantic ( );
101
102 if ( descriptor == null )
103 {
104 descriptor = "";
105 }
106
107 descriptorLabel = new JLabel ( descriptor );
108
109 setSelected ( isSelected );
110
111 checkBox.addItemListener ( this );
112 }
113
114 //////////////////////////////////////////////////////////////////////
115 //////////////////////////////////////////////////////////////////////
116
117 public JCheckBox getCheckBox ( ) { return checkBox; }
118
119 public JLabel getLabel ( ) { return label; }
120
121 public JComponent getComponent ( ) { return component; }
122
123 public JLabel getDescriptorLabel ( ) { return descriptorLabel; }
124
125 //////////////////////////////////////////////////////////////////////
126 //////////////////////////////////////////////////////////////////////
127
128 public boolean isSelected ( )
129 //////////////////////////////////////////////////////////////////////
130 {
131 return checkBox.isSelected ( );
132 }
133
134 public Pair getPair ( )
135 //////////////////////////////////////////////////////////////////////
136 {
137 return new Pair ( label.getText ( ), getValue ( ) );
138 }
139
140 public String getName ( )
141 //////////////////////////////////////////////////////////////////////
142 {
143 return name;
144 }
145
146 public String getValue ( )
147 //////////////////////////////////////////////////////////////////////
148 {
149 String value = null;
150
151 if ( component instanceof JTextField )
152 {
153 value = ( ( JTextField ) component ).getText ( );
154 }
155
156 if ( component instanceof JComboBox )
157 {
158 value
159 = ( String ) ( ( JComboBox ) component ).getSelectedItem ( );
160 }
161
162 return StringLib.trimToNull ( value );
163 }
164
165 public synchronized void setSelected ( boolean selected )
166 //////////////////////////////////////////////////////////////////////
167 {
168 checkBox.setSelected ( selected );
169
170 label.setEnabled ( selected );
171
172 component.setEnabled ( selected );
173 }
174
175 public void setValue ( String value )
176 //////////////////////////////////////////////////////////////////////
177 {
178 value = ( value != null ) ? value : "";
179
180 if ( component instanceof JTextField )
181 {
182 ( ( JTextField ) component ).setText ( value );
183 }
184 else if ( component instanceof JComboBox )
185 {
186 ( ( JComboBox ) component ).setSelectedItem ( value );
187 }
188 }
189
190 //////////////////////////////////////////////////////////////////////
191 //////////////////////////////////////////////////////////////////////
192
193 public synchronized void actionPerformed ( ActionEvent actionEvent )
194 //////////////////////////////////////////////////////////////////////
195 {
196 changeListener.stateChanged ( changeEvent );
197 }
198
199 public synchronized void itemStateChanged ( ItemEvent itemEvent )
200 //////////////////////////////////////////////////////////////////////
201 {
202 boolean selected = checkBox.isSelected ( );
203
204 label.setEnabled ( selected );
205
206 component.setEnabled ( selected );
207
208 changeListener.stateChanged ( changeEvent );
209 }
210
211 public synchronized void keyTyped ( KeyEvent keyEvent )
212 //////////////////////////////////////////////////////////////////////
213 {
214 changeListener.stateChanged ( changeEvent );
215 }
216
217 public void keyPressed ( KeyEvent keyEvent )
218 //////////////////////////////////////////////////////////////////////
219 {
220 }
221
222 public void keyReleased ( KeyEvent keyEvent )
223 //////////////////////////////////////////////////////////////////////
224 {
225 }
226
227 //////////////////////////////////////////////////////////////////////
228 //////////////////////////////////////////////////////////////////////
229 }