Author: norman
Date: Fri Jul 24 13:49:49 2009
New Revision: 797454

URL: http://svn.apache.org/viewvc?rev=797454&view=rev
Log:
Add validation on filling email form (using gwt-vl)

Added:
    labs/hupa/lib/eu.maydu.gwt/
    labs/hupa/lib/eu.maydu.gwt/jars/
    labs/hupa/lib/eu.maydu.gwt/jars/gwt-vl-0.8b.jar   (with props)
    labs/hupa/lib/eu.maydu.gwt/poms/
    labs/hupa/lib/eu.maydu.gwt/poms/gwt-vl-0.8b.pom
Modified:
    labs/hupa/pom.xml
    labs/hupa/src/main/java/org/apache/hupa/Hupa.gwt.xml
    
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageSendPresenter.java
    labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageSendView.java
    labs/hupa/war/Hupa.css

Added: labs/hupa/lib/eu.maydu.gwt/jars/gwt-vl-0.8b.jar
URL: 
http://svn.apache.org/viewvc/labs/hupa/lib/eu.maydu.gwt/jars/gwt-vl-0.8b.jar?rev=797454&view=auto
==============================================================================
Binary file - no diff available.

Propchange: labs/hupa/lib/eu.maydu.gwt/jars/gwt-vl-0.8b.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: labs/hupa/lib/eu.maydu.gwt/poms/gwt-vl-0.8b.pom
URL: 
http://svn.apache.org/viewvc/labs/hupa/lib/eu.maydu.gwt/poms/gwt-vl-0.8b.pom?rev=797454&view=auto
==============================================================================
--- labs/hupa/lib/eu.maydu.gwt/poms/gwt-vl-0.8b.pom (added)
+++ labs/hupa/lib/eu.maydu.gwt/poms/gwt-vl-0.8b.pom Fri Jul 24 13:49:49 2009
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+       <modelVersion>4.0.0</modelVersion>
+       <groupId>eu.maydu.gwt</groupId>
+       <artifactId>gwt-vl</artifactId>
+       <version>0.8b</version>
+</project>
\ No newline at end of file

Modified: labs/hupa/pom.xml
URL: 
http://svn.apache.org/viewvc/labs/hupa/pom.xml?rev=797454&r1=797453&r2=797454&view=diff
==============================================================================
--- labs/hupa/pom.xml (original)
+++ labs/hupa/pom.xml Fri Jul 24 13:49:49 2009
@@ -298,6 +298,11 @@
                        <version>march-02-2009</version>
                </dependency>
                <dependency>
+               <groupId>eu.maydu.gwt</groupId>
+               <artifactId>gwt-vl</artifactId>
+               <version>0.8b</version>
+               </dependency>
+               <dependency>
                        <groupId>GWTUpload</groupId>
                        <artifactId>gwtupload</artifactId>
                        <version>0.3.0</version> 

Modified: labs/hupa/src/main/java/org/apache/hupa/Hupa.gwt.xml
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/Hupa.gwt.xml?rev=797454&r1=797453&r2=797454&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/Hupa.gwt.xml (original)
+++ labs/hupa/src/main/java/org/apache/hupa/Hupa.gwt.xml Fri Jul 24 13:49:49 
2009
@@ -22,6 +22,7 @@
   <inherits name="com.google.gwt.inject.Inject"/>
   <!-- Include GWTUpload library -->
   <inherits name="gwtupload.GWTUpload"/>
+  <inherits name="eu.maydu.gwt.validation.ValidationLibrary"/>
    
   <source path="shared"/>
   <source path="client"/>

Modified: 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageSendPresenter.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageSendPresenter.java?rev=797454&r1=797453&r2=797454&view=diff
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageSendPresenter.java
 (original)
+++ 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageSendPresenter.java
 Fri Jul 24 13:49:49 2009
@@ -87,58 +87,62 @@
                display.getSendClick().addClickHandler(new ClickHandler() {
 
                        public void onClick(ClickEvent event) {
-                               SMTPMessage message = new SMTPMessage();
-                               MessageHeader header = new MessageHeader();
-                               MessageContent content = new MessageContent();
                                
-                               header.setFrom(display.getFromText().getText());
-                               
-                               ArrayList<String> to = new ArrayList<String>();
-                               String[] toRaw = 
display.getToText().getText().split(",");
-                               if (toRaw != null) {
-                                       for (int i = 0; i < toRaw.length;i++) {
-                                               String toRecip = 
toRaw[i].trim();
-                                               if (toRecip.length() > 0) {
-                                                       to.add(toRaw[i].trim());
+       
+                                       SMTPMessage message = new SMTPMessage();
+                                       MessageHeader header = new 
MessageHeader();
+                                       MessageContent content = new 
MessageContent();
+                                       
+                                       
header.setFrom(display.getFromText().getText());
+                                       
+                                       ArrayList<String> to = new 
ArrayList<String>();
+                                       String[] toRaw = 
display.getToText().getText().split(",");
+                                       if (toRaw != null) {
+                                               for (int i = 0; i < 
toRaw.length;i++) {
+                                                       String toRecip = 
toRaw[i].trim();
+                                                       if (toRecip.length() > 
0) {
+                                                               
to.add(toRaw[i].trim());
+                                                       }
                                                }
                                        }
-                               }
-                               header.setTo(to);
-                               
-                               ArrayList<String> cc = new ArrayList<String>();
-                               String[] ccRaw = 
display.getCcText().getText().split(",");
-                               if (ccRaw != null) {
-                                       for (int i = 0; i < ccRaw.length;i++) {
-                                               String ccRecip = 
ccRaw[i].trim();
-                                               if (ccRecip.length() > 0) {
-                                                       cc.add(ccRaw[i].trim());
+                                       header.setTo(to);
+                                       
+                                       ArrayList<String> cc = new 
ArrayList<String>();
+                                       String[] ccRaw = 
display.getCcText().getText().split(",");
+                                       if (ccRaw != null) {
+                                               for (int i = 0; i < 
ccRaw.length;i++) {
+                                                       String ccRecip = 
ccRaw[i].trim();
+                                                       if (ccRecip.length() > 
0) {
+                                                               
cc.add(ccRaw[i].trim());
+                                                       }
                                                }
                                        }
-                               }
-                               header.setCc(cc);
-                               
-                               
header.setSubject(display.getSubjectText().getText());
-                               
content.setText(display.getMessageText().getText());
-                               
-                               message.setHeader(header);
-                               message.setMessageContent(content);
-                               dispatcher.execute(new 
SendMessage(user,message), new AsyncCallback<EmptyResult>() {
+                                       header.setCc(cc);
+                                       
+                                       
header.setSubject(display.getSubjectText().getText());
+                                       
content.setText(display.getMessageText().getText());
+                                       
+                                       message.setHeader(header);
+                                       message.setMessageContent(content);
+                                       dispatcher.execute(new 
SendMessage(user,message), new AsyncCallback<EmptyResult>() {
 
-                                       public void onFailure(Throwable caught) 
{
+                                               public void onFailure(Throwable 
caught) {
 
-                                       }
+                                               }
 
-                                       public void onSuccess(EmptyResult 
result) {
-                                               eventBus.fireEvent(new 
SentMessageEvent());
-                                       }
+                                               public void 
onSuccess(EmptyResult result) {
+                                                       eventBus.fireEvent(new 
SentMessageEvent());
+                                               }
+                                               
+                                       });
                                        
-                               });
-                               
-                       }
+                               }
+               
                        
                });
        }
 
+
        @Override
        protected void onPlaceRequest(PlaceRequest request) {
                // TODO Auto-generated method stub

Modified: 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageSendView.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageSendView.java?rev=797454&r1=797453&r2=797454&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageSendView.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageSendView.java 
Fri Jul 24 13:49:49 2009
@@ -19,6 +19,15 @@
 
 package org.apache.hupa.client.mvp;
 
+import eu.maydu.gwt.validation.client.DefaultValidationProcessor;
+import eu.maydu.gwt.validation.client.ValidationAction;
+import eu.maydu.gwt.validation.client.ValidationProcessor;
+import eu.maydu.gwt.validation.client.ValidationResult;
+import eu.maydu.gwt.validation.client.Validator;
+import eu.maydu.gwt.validation.client.actions.FocusAction;
+import eu.maydu.gwt.validation.client.actions.StyleAction;
+import eu.maydu.gwt.validation.client.i18n.ValidationMessages;
+import eu.maydu.gwt.validation.client.validators.standard.NotEmptyValidator;
 import gwtupload.client.MultiUploader;
 
 import org.apache.hupa.client.HupaConstants;
@@ -27,6 +36,8 @@
 import org.cobogw.gwt.user.client.ui.ButtonBar;
 
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
 import com.google.gwt.event.dom.client.HasClickHandlers;
 import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.Grid;
@@ -34,22 +45,26 @@
 import com.google.gwt.user.client.ui.Label;
 import com.google.gwt.user.client.ui.TextArea;
 import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.TextBoxBase;
 import com.google.gwt.user.client.ui.VerticalPanel;
 import com.google.gwt.user.client.ui.Widget;
 
-public class IMAPMessageSendView extends Composite implements 
IMAPMessageSendPresenter.Display{
+public class IMAPMessageSendView extends Composite implements
+               IMAPMessageSendPresenter.Display {
        private HupaConstants constants = GWT.create(HupaConstants.class);
-       private Grid detailGrid = new Grid(6, 2);
+       private Grid detailGrid = new Grid(6, 3);
        private Label from = new Label();
        private TextBox to = new TextBox();
        private TextBox cc = new TextBox();
-       private TextBox bcc  = new TextBox();
-       private TextBox subject  = new TextBox();
+       private TextBox bcc = new TextBox();
+       private TextBox subject = new TextBox();
 
        private MultiUploader uploader = new MultiUploader(new 
UploadProgress());
        private TextArea text = new TextArea();
        private Button sendButton = new Button(constants.sendButton());
-       
+       private ValidationMessages vMessages = new ValidationMessages();
+       private ValidationProcessor validator = new DefaultValidationProcessor(
+                       vMessages);
        public IMAPMessageSendView() {
                VerticalPanel mPanel = new VerticalPanel();
                mPanel.setWidth("100%");
@@ -69,94 +84,192 @@
                detailGrid.setWidget(3, 1, bcc);
                detailGrid.setWidget(4, 1, subject);
                detailGrid.setWidget(5, 1, uploader);
-               
detailGrid.getCellFormatter().setStyleName(0,0,"hupa-IMAPMessageWidget-Header-Content");
-               
detailGrid.getCellFormatter().setStyleName(0,1,"hupa-IMAPMessageWidget-Header-Content");
-               
detailGrid.getCellFormatter().setStyleName(1,0,"hupa-IMAPMessageWidget-Header-Content");
-               
detailGrid.getCellFormatter().setStyleName(1,1,"hupa-IMAPMessageWidget-Header-Content");
-               
detailGrid.getCellFormatter().setStyleName(2,0,"hupa-IMAPMessageWidget-Header-Content");
-               
detailGrid.getCellFormatter().setStyleName(2,1,"hupa-IMAPMessageWidget-Header-Content");
-               
detailGrid.getCellFormatter().setStyleName(3,0,"hupa-IMAPMessageWidget-Header-Content");
-               
detailGrid.getCellFormatter().setStyleName(3,1,"hupa-IMAPMessageWidget-Header-Content");
-               
detailGrid.getCellFormatter().setStyleName(4,0,"hupa-IMAPMessageWidget-Header-Content");
-               
detailGrid.getCellFormatter().setStyleName(4,1,"hupa-IMAPMessageWidget-Header-Content");
-               
detailGrid.getCellFormatter().setStyleName(5,0,"hupa-IMAPMessageWidget-Header-Content");
-               
detailGrid.getCellFormatter().setStyleName(5,1,"hupa-IMAPMessageWidget-Header-Content");
-               detailGrid.getCellFormatter().setVerticalAlignment(0, 0, 
VerticalPanel.ALIGN_TOP);
-               detailGrid.getCellFormatter().setVerticalAlignment(1, 0, 
VerticalPanel.ALIGN_TOP);
-               detailGrid.getCellFormatter().setVerticalAlignment(2, 0, 
VerticalPanel.ALIGN_TOP);
-               detailGrid.getCellFormatter().setVerticalAlignment(3, 0, 
VerticalPanel.ALIGN_TOP);
-               detailGrid.getCellFormatter().setVerticalAlignment(4, 0, 
VerticalPanel.ALIGN_TOP);
-               detailGrid.getCellFormatter().setVerticalAlignment(5, 0, 
VerticalPanel.ALIGN_TOP);
-               
+
+               detailGrid.getCellFormatter().setStyleName(0, 0,
+                               "hupa-IMAPMessageWidget-Header-Content");
+               detailGrid.getCellFormatter().setStyleName(0, 1,
+                               "hupa-IMAPMessageWidget-Header-Content");
+               detailGrid.getCellFormatter().setStyleName(1, 0,
+                               "hupa-IMAPMessageWidget-Header-Content");
+               detailGrid.getCellFormatter().setStyleName(1, 1,
+                               "hupa-IMAPMessageWidget-Header-Content");
+               detailGrid.getCellFormatter().setStyleName(2, 0,
+                               "hupa-IMAPMessageWidget-Header-Content");
+               detailGrid.getCellFormatter().setStyleName(2, 1,
+                               "hupa-IMAPMessageWidget-Header-Content");
+               detailGrid.getCellFormatter().setStyleName(3, 0,
+                               "hupa-IMAPMessageWidget-Header-Content");
+               detailGrid.getCellFormatter().setStyleName(3, 1,
+                               "hupa-IMAPMessageWidget-Header-Content");
+               detailGrid.getCellFormatter().setStyleName(4, 0,
+                               "hupa-IMAPMessageWidget-Header-Content");
+               detailGrid.getCellFormatter().setStyleName(4, 1,
+                               "hupa-IMAPMessageWidget-Header-Content");
+               detailGrid.getCellFormatter().setStyleName(5, 0,
+                               "hupa-IMAPMessageWidget-Header-Content");
+               detailGrid.getCellFormatter().setStyleName(5, 1,
+                               "hupa-IMAPMessageWidget-Header-Content");
+               detailGrid.getCellFormatter().setVerticalAlignment(0, 0,
+                               VerticalPanel.ALIGN_TOP);
+               detailGrid.getCellFormatter().setVerticalAlignment(1, 0,
+                               VerticalPanel.ALIGN_TOP);
+               detailGrid.getCellFormatter().setVerticalAlignment(2, 0,
+                               VerticalPanel.ALIGN_TOP);
+               detailGrid.getCellFormatter().setVerticalAlignment(3, 0,
+                               VerticalPanel.ALIGN_TOP);
+               detailGrid.getCellFormatter().setVerticalAlignment(4, 0,
+                               VerticalPanel.ALIGN_TOP);
+               detailGrid.getCellFormatter().setVerticalAlignment(5, 0,
+                               VerticalPanel.ALIGN_TOP);
                from.setWidth("100%");
+
                cc.setWidth("100%");
                bcc.setWidth("100%");
                to.setWidth("100%");
+
                subject.setWidth("100%");
+
                text.setWidth("100%");
                text.setHeight("400px");
                text.setVisibleLines(50);
                /*
-               uploader.setOnFinishHandler(new ValueChangeHandler<IUploader>() 
{
-                public void onValueChange(ValueChangeEvent<IUploader> event) {
-                        IUploader uploader = event.getValue();
-                        new PreloadedImage(uploader.fileUrl(), new 
ValueChangeHandler<PreloadedImage>() {
-                            public void 
onValueChange(ValueChangeEvent<PreloadedImage> event) {
-                                PreloadedImage img = event.getValue();
-                                img.setWidth("75px");
-                                panelImages.add(img);
-                        }
-                });
-                }
-        });
-               */
-               uploader.setServletPath(GWT.getModuleBaseURL() + 
"uploadAttachmentServlet");
+                * uploader.setOnFinishHandler(new 
ValueChangeHandler<IUploader>() {
+                * public void onValueChange(ValueChangeEvent<IUploader> event) 
{
+                * IUploader uploader = event.getValue(); new
+                * PreloadedImage(uploader.fileUrl(), new
+                * ValueChangeHandler<PreloadedImage>() { public void
+                * onValueChange(ValueChangeEvent<PreloadedImage> event) {
+                * PreloadedImage img = event.getValue(); img.setWidth("75px");
+                * panelImages.add(img); } }); } });
+                */
+               FocusAction fAction = new FocusAction();
+               validator.addValidators("cc", new EmailListValidator(cc)
+                               .addActionForFailure(
+                                               new 
StyleAction("hupa-validationErrorBorder"))
+                               .addActionForFailure(fAction));
+               validator.addValidators("bcc", new EmailListValidator(bcc)
+                               .addActionForFailure(
+                                               new 
StyleAction("hupa-validationErrorBorder"))
+                               .addActionForFailure(fAction));
+               validator.addValidators("to", new EmailListValidator(to)
+                               .addActionForFailure(
+                                               new 
StyleAction("hupa-validationErrorBorder"))
+                               .addActionForFailure(fAction), new 
NotEmptyValidator(to)
+                               .addActionForFailure(
+                                               new 
StyleAction("hupa-validationErrorBorder"))
+                               .addActionForFailure(fAction));
+
+               uploader.setServletPath(GWT.getModuleBaseURL()
+                               + "uploadAttachmentServlet");
                uploader.avoidRepeatFiles(true);
                mPanel.add(detailGrid);
-               
+
                ButtonBar buttonBar = new ButtonBar();
                buttonBar.addStyleName("hupa-IMAPMessageWidget-ButtonBar");
                buttonBar.add(sendButton);
                buttonBar.setWidth("100%");
+
+               sendButton.addClickHandler(new ClickHandler() {
+
+                       public void onClick(ClickEvent event) {
+                               // if the validation fails we have no need todo 
anymore
+                               // processing here
+                               if (validator.validate() == false)
+                                       event.stopPropagation();
+                       }
+
+               });
                mPanel.add(buttonBar);
-               
+
                mPanel.add(text);
                initWidget(mPanel);
 
        }
+
        public Widget asWidget() {
                return this;
        }
 
        public void startProcessing() {
                // TODO Auto-generated method stub
-               
+
        }
 
        public void stopProcessing() {
                // TODO Auto-generated method stub
-               
+
        }
+
        public HasText getBccText() {
                return bcc;
        }
+
        public HasText getCcText() {
                return cc;
        }
+
        public HasText getFromText() {
                return from;
        }
+
        public HasText getMessageText() {
                return text;
        }
+
        public HasText getSubjectText() {
                return subject;
        }
+
        public HasText getToText() {
                return to;
        }
+
        public HasClickHandlers getSendClick() {
                return sendButton;
        }
 
+       private class EmailListValidator extends Validator<EmailListValidator> {
+               private TextBoxBase box;
+
+               public EmailListValidator(TextBoxBase box) {
+                       this.box = box;
+               }
+
+               @Override
+               public void invokeActions(ValidationResult result) {
+                       for (ValidationAction<TextBoxBase> action : 
getFailureActions())
+                               action.invoke(result, box);
+               }
+
+               @Override
+               public <V extends ValidationMessages> ValidationResult validate(
+                               V messages) {
+                       if (isValidAddressList(box.getText()) == false) {
+                               return new ValidationResult();
+                       }
+                       return null;
+               }
+
+               private boolean isValidAddressList(String text) {
+                       if (text.length() > 0) {
+                               String[] addresses = text.split(",");
+                               if (addresses == null || addresses.length == 0) 
{
+                                       return isValidAddress(text);
+                               } else {
+                                       for (int i = 0; i < addresses.length; 
i++) {
+                                               if 
(isValidAddress(addresses[i]) == false) {
+                                                       return false;
+                                               }
+                                       }
+                               }
+                       }
+                       return true;
+               }
+
+               private boolean isValidAddress(String email) {
+                       return email
+                                       
.matches("^[a-za-z0-9._%+...@[a-za-z0-9.-]+\\.[a-za-z]{2,}$");
+               }
+
+       }
 }

Modified: labs/hupa/war/Hupa.css
URL: 
http://svn.apache.org/viewvc/labs/hupa/war/Hupa.css?rev=797454&r1=797453&r2=797454&view=diff
==============================================================================
--- labs/hupa/war/Hupa.css (original)
+++ labs/hupa/war/Hupa.css Fri Jul 24 13:49:49 2009
@@ -35,6 +35,10 @@
     background-color:  #E0ECFF;
 }
 
+.hupa-validationErrorBorder {
+       border:                         1pt solid red;
+}
+
 .hupa-IMAPMessageWidget-Header {
     border:                            1pt solid grey;
     text-align:                        left;



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@labs.apache.org
For additional commands, e-mail: commits-h...@labs.apache.org

Reply via email to