Mega Code Archive

 
Categories / Java / Swing Components
 

Validation How to Example

/* Code revised from Desktop Java Live: http://www.sourcebeat.com/downloads/ */ import java.awt.event.ActionEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.AbstractAction; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import com.jgoodies.forms.builder.DefaultFormBuilder; import com.jgoodies.forms.layout.CellConstraints; import com.jgoodies.forms.layout.FormLayout; import com.jgoodies.validation.ValidationResult; import com.jgoodies.validation.util.DefaultValidationResultModel; import com.jgoodies.validation.util.ValidationResultModel; import com.jgoodies.validation.util.ValidationUtils; import com.jgoodies.validation.view.ValidationResultViewFactory; public class ValidationHowExample extends JPanel {     private JTextField nameField;     private JTextField siteField;     private JTextField feedField;     private Feed feed;     private ValidationResultModel validationResultModel;     private ShowFeedInformationAction showFeedInformationAction;     public ValidationHowExample() {         DefaultFormBuilder formBuilder = new DefaultFormBuilder(new FormLayout(""));         formBuilder.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));         formBuilder.appendColumn("right:pref");         formBuilder.appendColumn("3dlu");         formBuilder.appendColumn("fill:p:g");         this.nameField = new JTextField();         formBuilder.append("Name:", this.nameField);         this.siteField = new JTextField();         formBuilder.append("Site Url:", this.siteField);         this.feedField = new JTextField();         formBuilder.append("Feed Url:", this.feedField);         this.validationResultModel = new DefaultValidationResultModel();         this.validationResultModel.addPropertyChangeListener(new ValidationListener());         JComponent validationResultsComponent = ValidationResultViewFactory.createReportList(validationResultModel);         formBuilder.appendRow("top:30dlu:g");         CellConstraints cc = new CellConstraints();         formBuilder.add(validationResultsComponent, cc.xywh(1, formBuilder.getRow() + 1, 3, 1, "fill, fill"));         formBuilder.nextLine(2);         formBuilder.append(new JButton(new ValidateAction()), 3);         this.showFeedInformationAction = new ShowFeedInformationAction();         formBuilder.append(new JButton(this.showFeedInformationAction), 3);         createFeed();         initializeFormElements();         add(formBuilder.getPanel());     }     private ValidationResult validateIt() {         ValidationResult validationResult = new ValidationResult();         if (ValidationUtils.isEmpty(this.nameField.getText())) {             validationResult.addError("The name field can not be blank.");         } else if (!ValidationUtils.hasBoundedLength(this.nameField.getText(), 5, 14)) {             validationResult.addError("The name field must be between 5 and 14 characters.");         }         if (!"ClientJava.com".equals(this.nameField.getText())) {             validationResult.addWarning("This form prefers the feed ClientJava.com");         }         if (ValidationUtils.isEmpty(this.feedField.getText())) {             validationResult.addError("The feed field can not be blank.");         }         if (ValidationUtils.isEmpty(this.siteField.getText())) {             validationResult.addError("The site field can not be blank.");         }         return validationResult;     }     private class ValidationListener implements PropertyChangeListener {         public void propertyChange(PropertyChangeEvent evt) {             if (evt.getPropertyName() == ValidationResultModel.PROPERTYNAME_RESULT) {                 JOptionPane.showMessageDialog(null, "Validation has been performed");                 showFeedInformationAction.setEnabled(!validationResultModel.hasErrors());             } else if (evt.getPropertyName() == ValidationResultModel.PROPERTYNAME_MESSAGES) {                 if (Boolean.TRUE.equals(evt.getNewValue())) {                     JOptionPane.showMessageDialog(null, "Messages have been found.");                 }             }         }     }     private Feed getFeed() {         return this.feed;     }     private void createFeed() {         this.feed = new Feed();         this.feed.setName("ClientJava.com");         this.feed.setSiteUrl("http://www.clientjava.com/blog");         this.feed.setFeedUrl("http://www.clientjava.com/blog/rss.xml");     }     private void initializeFormElements() {         this.nameField.setText(this.feed.getName());         this.siteField.setText(this.feed.getSiteUrl());         this.feedField.setText(this.feed.getFeedUrl());     }     private void synchFormAndFeed() {         this.feed.setName(this.nameField.getText());         this.feed.setSiteUrl(this.siteField.getText());         this.feed.setFeedUrl(this.feedField.getText());     }     private class ValidateAction extends AbstractAction {         public ValidateAction() {             super("Validate");         }         public void actionPerformed(ActionEvent e) {             synchFormAndFeed();             ValidationResult validationResult = validateIt();             validationResultModel.setResult(validationResult);         }     }     private class ShowFeedInformationAction extends AbstractAction {         public ShowFeedInformationAction() {             super("Show Feed Information");             setEnabled(false);         }         public void actionPerformed(ActionEvent event) {             StringBuffer message = new StringBuffer();             message.append("<html>");             message.append("<b>Name:</b> ");             message.append(getFeed().getName());             message.append("<br>");             message.append("<b>Site URL:</b> ");             message.append(getFeed().getSiteUrl());             message.append("<br>");             message.append("<b>Feed URL:</b> ");             message.append(getFeed().getFeedUrl());             message.append("</html>");             JOptionPane.showMessageDialog(null, message.toString());         }     }     public static void main(String[] a){       JFrame f = new JFrame("How To Validate Example");       f.setDefaultCloseOperation(2);       f.add(new ValidationHowExample());       f.pack();       f.setVisible(true);     } }                     jgoodiesValidation.zip( 277 k)