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="https://www.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 }