server-dev  

svn commit: r905107 - in /james/hupa/trunk: client/src/main/java/org/apache/hupa/client/ client/src/main/java/org/apache/hupa/client/mvp/ client/src/main/java/org/apache/hupa/client/validation/ client

manolo
Sun, 31 Jan 2010 11:32:16 -0800

Author: manolo
Date: Sun Jan 31 19:31:53 2010
New Revision: 905107

URL: http://svn.apache.org/viewvc?rev=905107&view=rev
Log:
Fixed a problem with focusable elements because FocusAction expect FocusWidget 
it instead of Focusable, and a bug in validation

Added:
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/validation/AddStyleAction.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/validation/SetFocusAction.java
Modified:
    james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaCSS.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/validation/EmailListValidator.java
    
james/hupa/trunk/client/src/test/java/org/apache/hupa/client/validation/EmailListValidatorTest.java
    james/hupa/trunk/client/war/Hupa.css
    
james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/ui/MultiValueSuggestArea.java

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaCSS.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaCSS.java?rev=905107&r1=905106&r2=905107&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaCSS.java 
(original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaCSS.java 
Sun Jan 31 19:31:53 2010
@@ -76,4 +76,5 @@
 
     public static final String C_dialog = "hupa-dialog-box";
     
+    public static final String C_validate = "hupa-validate-error";
 }

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java?rev=905107&r1=905106&r2=905107&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java
 Sun Jan 31 19:31:53 2010
@@ -30,8 +30,6 @@
 
 import eu.maydu.gwt.validation.client.DefaultValidationProcessor;
 import eu.maydu.gwt.validation.client.ValidationProcessor;
-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 gwtupload.client.IUploader;
 import gwtupload.client.IUploadStatus.Status;
@@ -44,9 +42,12 @@
 import net.customware.gwt.presenter.client.widget.WidgetDisplay;
 import net.customware.gwt.presenter.client.widget.WidgetPresenter;
 
+import org.apache.hupa.client.HupaCSS;
 import org.apache.hupa.client.HupaCallback;
+import org.apache.hupa.client.validation.AddStyleAction;
 import org.apache.hupa.client.validation.EmailListValidator;
 import org.apache.hupa.client.validation.NotEmptyValidator;
+import org.apache.hupa.client.validation.SetFocusAction;
 import org.apache.hupa.shared.Util;
 import org.apache.hupa.shared.data.IMAPFolder;
 import org.apache.hupa.shared.data.Message;
@@ -117,17 +118,21 @@
             }
         }
     };
-
+    
     @Inject
     public MessageSendPresenter(Display display, EventBus eventBus, 
DispatchAsync dispatcher) {
         super(display, eventBus);
         this.dispatcher = dispatcher;
 
-        FocusAction fAction = new FocusAction();
-        validator.addValidators("cc", new 
EmailListValidator(display.getCcText()).addActionForFailure(new 
StyleAction("hupa-validationErrorBorder")).addActionForFailure(fAction));
-        validator.addValidators("bcc", new 
EmailListValidator(display.getBccText()).addActionForFailure(new 
StyleAction("hupa-validationErrorBorder")).addActionForFailure(fAction));
-        validator.addValidators("to", new 
EmailListValidator(display.getToText()).addActionForFailure(new 
StyleAction("hupa-validationErrorBorder")).addActionForFailure(fAction),
-                new 
NotEmptyValidator(display.getToText()).addActionForFailure(new 
StyleAction("hupa-validationErrorBorder")).addActionForFailure(fAction));
+        SetFocusAction fAction = new SetFocusAction();
+        AddStyleAction sAction = new AddStyleAction(HupaCSS.C_validate, 3000);
+        validator.addValidators("cc", 
+                new 
EmailListValidator(display.getCcText()).addActionForFailure(sAction).addActionForFailure(fAction));
+        validator.addValidators("bcc", 
+                new 
EmailListValidator(display.getBccText()).addActionForFailure(sAction).addActionForFailure(fAction));
+        validator.addValidators("to", 
+                new 
EmailListValidator(display.getToText()).addActionForFailure(sAction).addActionForFailure(fAction),
+                new 
NotEmptyValidator(display.getToText()).addActionForFailure(sAction).addActionForFailure(fAction));
     }
 
     /**

Added: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/validation/AddStyleAction.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/validation/AddStyleAction.java?rev=905107&view=auto
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/validation/AddStyleAction.java
 (added)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/validation/AddStyleAction.java
 Sun Jan 31 19:31:53 2010
@@ -0,0 +1,36 @@
+package org.apache.hupa.client.validation;
+
+import com.google.gwt.user.client.Timer;
+import com.google.gwt.user.client.ui.UIObject;
+
+import eu.maydu.gwt.validation.client.ValidationResult;
+import eu.maydu.gwt.validation.client.actions.StyleAction;
+
+/**
+ * It's like StyleAction but with a timer to remove the style
+ */
+public class AddStyleAction extends StyleAction {
+    
+    Timer removeTimer = new Timer() {
+        @Override
+        public void run() {
+            reset();
+        }
+    };
+    
+    int removePeriod = 0;
+   
+    public AddStyleAction(String add, int millisecs) {
+        super(add);
+        this.removePeriod = millisecs;
+    }
+    
+    @Override
+    public void invoke(ValidationResult result, UIObject object) {
+        super.invoke(result, object);
+        if (removePeriod > 0) {
+            removeTimer.schedule(removePeriod);
+        }
+    }
+    
+}

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/validation/EmailListValidator.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/validation/EmailListValidator.java?rev=905107&r1=905106&r2=905107&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/validation/EmailListValidator.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/validation/EmailListValidator.java
 Sun Jan 31 19:31:53 2010
@@ -47,8 +47,7 @@
     }
 
     @Override
-    public <V extends ValidationMessages> ValidationResult validate(
-            V messages) {
+    public <V extends ValidationMessages> ValidationResult validate(V 
messages) {
         if (isValidAddressList(text.getText()) == false) {
             return new ValidationResult();
         }
@@ -67,7 +66,7 @@
                 return false;
             String[] addresses = text.split("[,;\r\n]+");
             for (int i = 0; i < addresses.length; i++) {
-                if (!addresses[i].trim().isEmpty() && 
isValidAddress(addresses[i]) == false) {
+                if (!addresses[i].trim().isEmpty() && 
isValidAddress(addresses[i].trim()) == false) {
                     return false;
                 }
             }

Added: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/validation/SetFocusAction.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/validation/SetFocusAction.java?rev=905107&view=auto
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/validation/SetFocusAction.java
 (added)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/validation/SetFocusAction.java
 Sun Jan 31 19:31:53 2010
@@ -0,0 +1,18 @@
+package org.apache.hupa.client.validation;
+
+import com.google.gwt.user.client.ui.Focusable;
+
+import eu.maydu.gwt.validation.client.ValidationAction;
+import eu.maydu.gwt.validation.client.ValidationResult;
+
+/**
+ * FocusAction uses FocusWidget instead of focusable, so it doesn't work
+ * with customized widgets extending composite.
+ * 
+ */
+public class SetFocusAction extends ValidationAction<Focusable> {
+    @Override
+    public void invoke(ValidationResult result, Focusable widget) {
+        widget.setFocus(true);
+    }
+}

Modified: 
james/hupa/trunk/client/src/test/java/org/apache/hupa/client/validation/EmailListValidatorTest.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/test/java/org/apache/hupa/client/validation/EmailListValidatorTest.java?rev=905107&r1=905106&r2=905107&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/test/java/org/apache/hupa/client/validation/EmailListValidatorTest.java
 (original)
+++ 
james/hupa/trunk/client/src/test/java/org/apache/hupa/client/validation/EmailListValidatorTest.java
 Sun Jan 31 19:31:53 2010
@@ -9,6 +9,7 @@
     
     public void testEmailValidator() {
         assertTrue(EmailListValidator.isValidAddressList("a...@abc.def"));
+        assertTrue(EmailListValidator.isValidAddressList(" a...@abc.def"));
         assertTrue(EmailListValidator.isValidAddressList("<a...@abc.def>"));
         assertTrue(EmailListValidator.isValidAddressList(" AAA <a...@abc.def> 
"));
         assertFalse(EmailListValidator.isValidAddressList(", , ,"));

Modified: james/hupa/trunk/client/war/Hupa.css
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/war/Hupa.css?rev=905107&r1=905106&r2=905107&view=diff
==============================================================================
--- james/hupa/trunk/client/war/Hupa.css (original)
+++ james/hupa/trunk/client/war/Hupa.css Sun Jan 31 19:31:53 2010
@@ -267,6 +267,11 @@
        width: 100%;
 }
 
+.hupa-validate-error {
+       border: 1pt solid red;
+    background-color: #fae5b0;
+}
+
 /************[ view: ContactsView ]*******************/
 table.hupa-contacts {
        margin-left: auto;
@@ -284,9 +289,6 @@
     color:                                #FF0000;
 }
 
-.hupa-validationErrorBorder {
-       border:                                                 1pt solid red;
-}
 
 
 

Modified: 
james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/ui/MultiValueSuggestArea.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/ui/MultiValueSuggestArea.java?rev=905107&r1=905106&r2=905107&view=diff
==============================================================================
--- 
james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/ui/MultiValueSuggestArea.java
 (original)
+++ 
james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/ui/MultiValueSuggestArea.java
 Sun Jan 31 19:31:53 2010
@@ -21,6 +21,7 @@
 
 import com.google.gwt.user.client.DOM;
 import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.Focusable;
 import com.google.gwt.user.client.ui.HasText;
 import com.google.gwt.user.client.ui.MultiWordSuggestOracle;
 import com.google.gwt.user.client.ui.SuggestBox;
@@ -33,7 +34,7 @@
  * 
  * @author manolo
  */
-public class MultiValueSuggestArea extends Composite implements HasText {
+public class MultiValueSuggestArea extends Composite implements HasText, 
Focusable {
 
     /**
      * It is necessary to modify the behavior of the default SuggestBox, 
because
@@ -53,7 +54,7 @@
                 
                 @Override
                 public String getText() {
-                    return search = super.getText().replaceFirst("\\s$", 
"").replaceAll("[\\s;]", ",").replaceFirst("^.+,", "");
+                    return search = super.getText().replaceFirst("\\s+$", 
"").replaceFirst("^\\s+","").replaceAll("[\\s;]", ",").replaceFirst("^.+,", "");
                 }
                 
                 @Override
@@ -119,4 +120,20 @@
     public SuggestOracle getOracle() {
         return oracle;
     }
+
+    public int getTabIndex() {
+        return box.getTabIndex();
+    }
+
+    public void setAccessKey(char key) {
+        box.setAccessKey(key);
+    }
+
+    public void setFocus(boolean focused) {
+        box.setFocus(focused);
+    }
+
+    public void setTabIndex(int index) {
+        box.setTabIndex(index);
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

  • svn commit: r905107 - in /james/hupa/trunk: client/src/main/java/org/apache/hupa/client/ client/src/main/java/org/apache/hupa/client/mvp/ client/src/main/java/org/apache/hupa/client/validation/ client manolo