Swing Components Java

/*
Code revised from Desktop Java Live:
http://www.sourcebeat.com/downloads/
*/
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import com.jgoodies.binding.PresentationModel;
import com.jgoodies.binding.adapter.BasicComponentFactory;
import com.jgoodies.binding.value.ValueModel;
import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.validation.ValidationCapable;
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 ValidatingOnFocusLostExample extends JPanel {
    private Feed feed;
    private FeedPresentationModel feedPresentationModel;
    public ValidatingOnFocusLostExample() {
        DefaultFormBuilder formBuilder = new DefaultFormBuilder(new FormLayout("right:pref, 3dlu, p:g"));
        formBuilder.setDefaultDialogBorder();
        createFeed();
        this.feedPresentationModel = new FeedPresentationModel(this.feed);
        ValueModel nameModel = this.feedPresentationModel.getModel("name");
        ValueModel feedModel = this.feedPresentationModel.getModel("feedUrl");
        ValueModel siteModel = this.feedPresentationModel.getModel("siteUrl");
        JTextField nameField = BasicComponentFactory.createTextField(nameModel);
        JTextField feedField = BasicComponentFactory.createTextField(feedModel);
        JTextField siteField = BasicComponentFactory.createTextField(siteModel);
        formBuilder.append("Name:", nameField);
        formBuilder.append("Site Url:", siteField);
        formBuilder.append("Feed Url:", feedField);
        JComponent validationResultsComponent = ValidationResultViewFactory.createReportList(this.feedPresentationModel.getValidationModel());
        formBuilder.appendRow("top:30dlu:g");
        CellConstraints cc = new CellConstraints();
        formBuilder.add(validationResultsComponent, cc.xywh(1, formBuilder.getRow() + 1, 3, 1, "fill, fill"));
        add(formBuilder.getPanel());
    }
    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 class FeedPresentationModel extends PresentationModel implements ValidationCapable {
        private ValidationResultModel validationResultModel;
        public FeedPresentationModel(Object bean) {
            super(bean);
            this.validationResultModel = new DefaultValidationResultModel();
            initEventHandling();
        }
        public ValidationResultModel getValidationModel() {
            return this.validationResultModel;
        }
        public ValidationResult validate() {
            ValidationResult validationResult = new ValidationResult();
            String name = (String) getModel("name").getValue();
            String feedUrl = (String) getModel("feedUrl").getValue();
            String siteUrl = (String) getModel("siteUrl").getValue();
            if (ValidationUtils.isEmpty(name)) {
                validationResult.addError("The name field can not be blank.");
            } else if (!ValidationUtils.hasBoundedLength(name, 5, 14)) {
                validationResult.addError("The name field must be between 5 and 14 characters.");
            }
            if (!"ClientJava.com".equals(name)) {
                validationResult.addWarning("This form prefers the feed ClientJava.com");
            }
            if (ValidationUtils.isEmpty(feedUrl)) {
                validationResult.addError("The feed field can not be blank.");
            }
            if (ValidationUtils.isEmpty(siteUrl)) {
                validationResult.addError("The site field can not be blank.");
            }
            return validationResult;
        }
        private void initEventHandling() {
            PropertyChangeListener handler = new ValidationUpdateHandler();
            addBeanPropertyChangeListener(handler);
            getBeanChannel().addValueChangeListener(handler);
        }
        // Event Handling *********************************************************
        class ValidationUpdateHandler implements PropertyChangeListener {
            public void propertyChange(PropertyChangeEvent evt) {
                updateValidationResult();
            }
            private void updateValidationResult() {
                ValidationResult result = validate();
                getValidationModel().setResult(result);
            }
        }
    }
    public static void main(String[] a){
      JFrame f = new JFrame("Validation on Focus Lost Example");
      f.setDefaultCloseOperation(2);
      f.add(new ValidatingOnFocusLostExample());
      f.pack();
      f.setVisible(true);
    }
}
           
       
jgoodiesValidation.zip( 277 k)