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.builder.PanelBuilder;
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.PropertyValidationSupport;
import com.jgoodies.validation.util.ValidationResultModel;
import com.jgoodies.validation.util.ValidationUtils;
import com.jgoodies.validation.view.ValidationComponentUtils;
import com.jgoodies.validation.view.ValidationResultViewFactory;
public class ComponentHintsExample extends JPanel {
    private Feed feed;
    private FeedPresentationModel feedPresentationModel;
    private JPanel panel1;
    private JPanel panel2;
    private JPanel panel3;
    private JComponent iconPanel;
    private ValidationResultModel validationModel;
    public ComponentHintsExample() {
        this.validationModel = new DefaultValidationResultModel();
        createFeed();
        this.feedPresentationModel = new FeedPresentationModel(this.feed);
        ValueModel nameModel = this.feedPresentationModel.getModel("name");
        DefaultFormBuilder formBuilder1 = new DefaultFormBuilder(new FormLayout("right:pref, 3dlu, p:g"));
        JTextField nameField1 = BasicComponentFactory.createTextField(nameModel, false);
        ValidationComponentUtils.setMandatory(nameField1, true);
        ValidationComponentUtils.setMessageKey(nameField1, "form.name_key");
        formBuilder1.append("Name:", nameField1);
        DefaultFormBuilder formBuilder2 = new DefaultFormBuilder(new FormLayout("right:pref, 3dlu, p:g"));
        JTextField nameField2 = BasicComponentFactory.createTextField(nameModel, false);
        ValidationComponentUtils.setMandatory(nameField2, true);
        ValidationComponentUtils.setMessageKey(nameField2, "form.name_key");
        formBuilder2.append("Name:", nameField2);
        DefaultFormBuilder formBuilder3 = new DefaultFormBuilder(new FormLayout("right:pref, 3dlu, p:g"));
        JTextField nameField3 = BasicComponentFactory.createTextField(nameModel, false);
        ValidationComponentUtils.setMandatory(nameField3, true);
        ValidationComponentUtils.setMessageKey(nameField3, "form.name_key");
        formBuilder3.append("Name:", nameField3);
        DefaultFormBuilder formBuilder4 = new DefaultFormBuilder(new FormLayout("right:pref, 4dlu, p:g"));
        JTextField nameField4 = BasicComponentFactory.createTextField(nameModel, false);
        ValidationComponentUtils.setMandatory(nameField4, true);
        ValidationComponentUtils.setMessageKey(nameField4, "form.name_key");
        formBuilder4.append("Name:", nameField4);
        //Padding for overlay icon
        formBuilder4.appendRow("5dlu");
        this.panel1 = formBuilder1.getPanel();
        this.panel2 = formBuilder2.getPanel();
        this.panel3 = formBuilder3.getPanel();
        this.iconPanel = new IconFeedbackPanel(this.validationModel, formBuilder4.getPanel());
        PanelBuilder builder = new PanelBuilder(new FormLayout("p:g"));
        builder.setDefaultDialogBorder();
        builder.appendRow("p");
        builder.add(this.panel1);
        builder.nextLine();
        builder.appendRow("p");
        builder.add(this.panel2);
        builder.nextLine();
        builder.appendRow("p");
        builder.add(this.panel3);
        builder.nextLine();
        builder.appendRow("4dlu");
        builder.nextLine();
        builder.appendRow("p");
        builder.add(this.iconPanel);
        builder.nextLine();
        builder.appendRow("4dlu");
        builder.nextLine();
        builder.appendRow("p:g");
        builder.nextLine();
        builder.appendRow("p");
        builder.addLabel("Results");
        builder.nextLine();
        builder.appendRow("50dlu");
        builder.add(ValidationResultViewFactory.createReportList(this.validationModel));
        add(builder.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");
    }
    public 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() {
            PropertyValidationSupport support = new PropertyValidationSupport(feed, "form");
            String name = (String) getModel("name").getValue();
            if (!ValidationUtils.isEmpty(name)) {
                if (!"ClientJava.com".equals(name)) {
                    support.addWarning("name_key", "is not ClientJava.com");
                }
                if (name.length() < 5) {
                    support.addError("name_key", "must be more than 4 characters long.");
                }
            }
            return support.getResult();
        }
        private void initEventHandling() {
            PropertyChangeListener handler = new ValueUpdateHandler();
            addBeanPropertyChangeListener(handler);
            getBeanChannel().addValueChangeListener(handler);
        }
        public class ValueUpdateHandler implements PropertyChangeListener {
            public void propertyChange(PropertyChangeEvent evt) {
                updateComponents();
            }
            private void updateComponents() {
                ValidationResult result = validate();
                validationModel.setResult(result);
                ValidationComponentUtils.updateComponentTreeMandatoryAndBlankBackground(panel1);
                ValidationComponentUtils.updateComponentTreeMandatoryBackground(panel2);
                ValidationComponentUtils.updateComponentTreeMandatoryBorder(panel3);
                ValidationComponentUtils.updateComponentTreeValidationBackground(panel1, result);
            }
        }
    }
    public static void main(String[] a){
      JFrame f = new JFrame("Component Hints Example");
      f.setDefaultCloseOperation(2);
      f.add(new ComponentHintsExample());
      f.pack();
      f.setVisible(true);
    }
}
           
       
jgoodiesValidation.zip( 277 k)