1 19 24 25 package org.netbeans.modules.j2ee.sun.share.configbean.customizers.common; 26 27 import java.util.ArrayList ; 28 import java.util.Collection ; 29 import java.util.List ; 30 import java.util.ResourceBundle ; 31 import java.text.MessageFormat ; 32 33 import java.awt.Dimension ; 34 import java.awt.GridBagLayout ; 35 import java.awt.GridBagConstraints ; 36 import java.awt.Insets ; 37 import java.awt.event.KeyAdapter ; 38 import java.awt.event.KeyEvent ; 39 40 import javax.swing.JLabel ; 41 import javax.swing.JTextField ; 42 import javax.swing.JPanel ; 43 import javax.swing.border.EmptyBorder ; 44 45 import org.netbeans.modules.j2ee.sun.share.Constants; 46 import org.netbeans.modules.j2ee.sun.share.configbean.ASDDVersion; 47 import org.netbeans.modules.j2ee.sun.share.configbean.Utils; 48 49 54 public class GenericTableDialogPanel extends JPanel implements GenericTableDialogPanelAccessor { 55 56 57 private static final ResourceBundle bundle = ResourceBundle.getBundle( 58 "org.netbeans.modules.j2ee.sun.share.configbean.customizers.common.Bundle"); 60 private List fieldEntries; 61 private String [] values; 62 private JTextField [] textFields; 63 private int preferredWidth; 64 65 68 public GenericTableDialogPanel() { 69 } 70 71 public void init(ASDDVersion asVersion, int width, List entries, Object data) { 72 fieldEntries = entries; 74 preferredWidth = width; 75 values = new String [entries.size()]; 76 textFields = new JTextField [entries.size()]; 77 78 initUserComponents(); 79 } 80 81 public void setValues(Object [] v) { 82 if(v != null && v.length == values.length) { 83 for(int i = 0; i < values.length && i < v.length; i++) { 84 values[i] = (v[i] != null) ? v[i].toString() : ""; } 86 } else { 87 if(v != null) { 88 assert (v.length == values.length); } 90 91 for(int i = 0; i < values.length; i++) { 93 values[i] = ""; } 95 } 96 97 setComponentValues(); 98 } 99 100 public Object [] getValues() { 101 return values; 102 } 103 104 private void setComponentValues() { 105 for(int i = 0; i < values.length; i++) { 106 textFields[i].setText(values[i]); 107 } 108 } 109 110 private void initUserComponents() { 111 GridBagConstraints gridBagConstraints; 112 113 setLayout(new GridBagLayout ()); 115 setBorder(new EmptyBorder (new Insets (5, 5, 0, 5))); 116 setPreferredSize(new Dimension (preferredWidth, 22*fieldEntries.size()+8)); 117 118 for(int i = 0; i < fieldEntries.size(); i++) { 119 GenericTableModel.TableEntry entry = (GenericTableModel.TableEntry) fieldEntries.get(i); 120 JLabel requiredMark = new JLabel (); 121 JLabel label = new JLabel (); 122 textFields[i] = new JTextField (); 123 124 if(entry.isRequiredField()) { 127 requiredMark.setText(bundle.getString("LBL_RequiredMark")); requiredMark.getAccessibleContext().setAccessibleName(bundle.getString("ACSN_RequiredMark")); requiredMark.getAccessibleContext().setAccessibleDescription(bundle.getString("ACSD_RequiredMark")); } 131 requiredMark.setLabelFor(textFields[i]); 132 gridBagConstraints = new GridBagConstraints (); 133 gridBagConstraints.anchor = GridBagConstraints.WEST; 134 gridBagConstraints.insets = new Insets (0, 0, 4, 4); 135 add(requiredMark, gridBagConstraints); 136 137 label.setLabelFor(textFields[i]); 139 label.setText(entry.getLabelName()); label.setDisplayedMnemonic(entry.getLabelMnemonic()); 141 gridBagConstraints = new GridBagConstraints (); 142 gridBagConstraints.anchor = GridBagConstraints.WEST; 143 gridBagConstraints.insets = new Insets (0, 0, 4, 4); 144 add(label, gridBagConstraints); 145 146 textFields[i].addKeyListener(new TextFieldHandler(textFields[i], i)); 148 textFields[i].getAccessibleContext().setAccessibleName(entry.getAccessibleName()); 149 textFields[i].getAccessibleContext().setAccessibleDescription(entry.getAccessibleDescription()); 150 151 gridBagConstraints = new GridBagConstraints (); 152 gridBagConstraints.gridwidth = GridBagConstraints.REMAINDER; 153 gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; 154 gridBagConstraints.weightx = 1.0; 155 gridBagConstraints.insets = new Insets (0, 0, 4, 0); 156 add(textFields[i], gridBagConstraints); 157 } 158 } 159 160 public Collection getErrors(ValidationSupport validationSupport) { 161 ArrayList errorList = new ArrayList (); 162 163 for(int i = 0; i < fieldEntries.size(); i++) { 165 GenericTableModel.TableEntry entry = (GenericTableModel.TableEntry) fieldEntries.get(i); 166 if(entry.isRequiredField()) { 167 if(!Utils.notEmpty(values[i])) { 168 Object [] args = new Object [1]; 169 args[0] = entry.getColumnName(); 170 errorList.add(MessageFormat.format(bundle.getString("ERR_SpecifiedFieldIsEmpty"), args)); 171 continue; 172 } 173 } 174 175 if(entry.isNameField()) { 176 if(Utils.containsWhitespace(values[i])) { 177 Object [] args = new Object [1]; 178 args[0] = entry.getColumnName(); 179 errorList.add(MessageFormat.format(bundle.getString("ERR_NameFieldContainsWhitespace"), args)); 180 continue; 181 } 182 } 183 184 } 195 196 return errorList; 197 } 198 199 public boolean requiredFieldsFilled() { 200 boolean result = true; 201 202 for(int i = 0; i < fieldEntries.size(); i++) { 203 GenericTableModel.TableEntry entry = (GenericTableModel.TableEntry) fieldEntries.get(i); 204 if(entry.isRequiredField()) { 205 if(!Utils.notEmpty(values[i])) { 206 result = false; 207 break; 208 } 209 } 210 } 211 212 return result; 213 } 214 215 219 private class TextFieldHandler extends KeyAdapter { 220 private JTextField textField; 221 private int controlIndex; 222 223 public TextFieldHandler(JTextField tf, int index) { 224 textField = tf; 225 controlIndex = index; 226 } 227 228 public void keyReleased(KeyEvent evt) { 229 values[controlIndex] = textField.getText(); 230 firePropertyChange(Constants.USER_DATA_CHANGED, null, null); 231 } 232 } 233 } 234 | Popular Tags |