001: package net.ar.webonswing.tutorial;
002:
003: import java.awt.*;
004: import java.awt.event.*;
005: import java.util.*;
006:
007: import javax.swing.*;
008:
009: import net.ar.webonswing.*;
010: import net.ar.webonswing.helpers.*;
011: import net.ar.webonswing.swing.components.validators.*;
012:
013: public class ValidatorsExample extends JDialog {
014: public ValidatorsExample() {
015: JComponent email = addNewComponent(new JTextField(), "email");
016: JComponent password = addNewComponent(new JPasswordField(),
017: "password");
018: JComponent reenterPassword = addNewComponent(
019: new JPasswordField(), "reenterPassword");
020: JComponent zip = addNewComponent(new JTextField(), "zip");
021: JComponent phone = addNewComponent(new JTextField(), "phone");
022: JComponent cardNumber = addNewComponent(new JTextField(),
023: "cardNumber");
024: JComponent expirationCombo = addNewComponent(new JComboBox(
025: new String[] { "", "06/04", "07/04", "08/04", "09/04",
026: "10/04", "11/04", "12/04", "01/05", "02/05",
027: "03/05", "04/05", "05/05", "06/05", "07/05",
028: "08/05", "09/05", "10/05", "11/05", "12/05" }),
029: "expirationCombo");
030:
031: addNewComponent(new JTextField(), "firstName");
032: addNewComponent(new JTextField(), "lastName");
033: addNewComponent(new JTextField(), "address");
034: addNewComponent(new JTextField(), "state");
035:
036: JRadioButton cardType1 = (JRadioButton) addNewComponent(
037: new JRadioButton("Mastercard"), "cardType1");
038: JRadioButton cardType2 = (JRadioButton) addNewComponent(
039: new JRadioButton("Visa"), "cardType2");
040: ButtonGroup cardsGroup = new ButtonGroup();
041: cardsGroup.add(cardType1);
042: cardsGroup.add(cardType2);
043:
044: JValidator emailRequiredValidator = new JRequiredFieldValidator(
045: email);
046: JValidator passwordRequiredValidator = new JRequiredFieldValidator(
047: password);
048: JValidator reenterPasswordRequiredValidator = new JRequiredFieldValidator(
049: reenterPassword);
050: JValidator zipRequiredValidator = new JRequiredFieldValidator(
051: zip);
052: JValidator phoneRequiredValidator = new JRequiredFieldValidator(
053: phone);
054: JValidator cardsRequiredFieldValidator = new JRequiredFieldValidator(
055: cardType1);
056: JValidator expirationRequiredFieldValidator = new JRequiredFieldValidator(
057: expirationCombo);
058: JValidator numberRequiredFieldValidator = new JRequiredFieldValidator(
059: cardNumber);
060:
061: JValidator emailValidator = new JRegularExpressionValidator(
062: email,
063: "",
064: "Not a valid e-mail address. Must follow email@host.domain.",
065: false, "^[\\w-]+@[\\w-]+\\.(com|net|org|edu|mil)$");
066: JValidator passwordValidator = new JRegularExpressionValidator(
067: password, "",
068: "Password must include one of these (!@#$%^&*+;:)",
069: false, ".*[!@#$%^&*+;:].*");
070: JValidator reenterPasswordValidator = new JCompareValidator(
071: reenterPassword, "", "Password fields dont match",
072: false, password);
073: JValidator zipValidator = new JRegularExpressionValidator(zip,
074: "", "Zip code must be 5 numeric digits", false,
075: "^\\d{5}$");
076: JValidator phoneValidator = new JRegularExpressionValidator(
077: phone,
078: "",
079: "Phone number must be in form: (XXX) XXX-XXXX",
080: false,
081: "(^x\\s*[0-9]{5}$)|(^(\\([1-9][0-9]{2}\\)\\s)?[1-9][0-9]{2}-[0-9]{4}(\\sx\\s*[0-9]{5})?$)");
082:
083: final JGroupValidator groupValidator = new JGroupValidator(
084: new JValidator[] { emailRequiredValidator,
085: passwordRequiredValidator,
086: reenterPasswordRequiredValidator,
087: zipRequiredValidator, phoneRequiredValidator,
088: cardsRequiredFieldValidator,
089: expirationRequiredFieldValidator,
090: numberRequiredFieldValidator, emailValidator,
091: passwordValidator, reenterPasswordValidator,
092: zipValidator, phoneValidator }, true);
093: addAllValidators(groupValidator);
094:
095: final JLabel label = new JLabel();
096:
097: JButton button = new JButton("Validate");
098: button.addActionListener(new ActionListener() {
099: public void actionPerformed(ActionEvent e) {
100: if (groupValidator.doValidation())
101: label.setText("Page is Valid!");
102: else
103: label.setText("Not valid!");
104: }
105: });
106:
107: getContentPane().setLayout(new GridLayout(0, 1));
108:
109: getContentPane().add(groupValidator).setName("groupValidator");
110: getContentPane().add(button).setName("button");
111: getContentPane().add(label).setName("outputLabel");
112:
113: getContentPane()
114: .setLayout(
115: WosFramework
116: .getPropagateTemplateLayoutByNameFor("ValidatorsExample.main"));
117: }
118:
119: protected JComponent addNewComponent(JComponent aComponent,
120: String aName) {
121: getContentPane().add(aComponent).setName(aName);
122: return aComponent;
123: }
124:
125: protected void addAllValidators(JGroupValidator aGroupValidator) {
126: for (Iterator i = aGroupValidator.getValidators().iterator(); i
127: .hasNext();) {
128: JValidator validator = (JValidator) i.next();
129: validator.setRemoteValidation(true);
130: getContentPane().add(validator).setName(
131: validator.getComponentToValidate().getName()
132: + WosHelper
133: .getNoPackageClassName(validator));
134: }
135: }
136: }
|