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