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