Mega Code Archive

 
Categories / Java / Swing Components
 

Component Hints Example

/* 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)