From b5218c45503cd5936062dd26ae94928dc2bc7246 Mon Sep 17 00:00:00 2001 From: John Alhroos Date: Thu, 16 Jun 2011 10:26:23 +0000 Subject: Fixes selection by clicking on the row icons. #7026 svn changeset:19421/svn branch:6.6 --- .../terminal/gwt/client/ui/VScrollTable.java | 60 +++++++++------------- 1 file changed, 23 insertions(+), 37 deletions(-) (limited to 'src') diff --git a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java index d36c2137d8..6330459d3c 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java @@ -4555,54 +4555,40 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, * target is this element or a child of it) */ private Element getEventTargetTdOrTr(Event event) { - Element targetTdOrTr = null; - - final Element eventTarget = DOM.eventGetTarget(event); - final Element eventTargetParent = DOM.getParent(eventTarget); - final Element eventTargetGrandParent = DOM - .getParent(eventTargetParent); - + final Element eventTarget = event.getEventTarget().cast(); + Widget widget = Util.findWidget(eventTarget, null); final Element thisTrElement = getElement(); - if (eventTarget == thisTrElement) { - // This was a click on the TR element - targetTdOrTr = eventTarget; - // rowTarget = true; - } else if (thisTrElement == eventTargetParent) { - // Target parent is the TR, so the actual target is the TD - targetTdOrTr = eventTarget; - } else if (thisTrElement == eventTargetGrandParent) { - // Target grand parent is the TR, so the parent is the TD - targetTdOrTr = eventTargetParent; - } else { + if (widget != this) { /* * This is a workaround to make Labels, read only TextFields * and Embedded in a Table clickable (see #2688). It is * really not a fix as it does not work with a custom read * only components (not extending VLabel/VEmbedded). */ - Widget widget = Util.findWidget(eventTarget, null); - if (widget != this) { - while (widget != null && widget.getParent() != this) { - widget = widget.getParent(); - } - if (widget != null) { - // widget is now the closest widget to this row - if (widget instanceof VLabel - || widget instanceof VEmbedded - || (widget instanceof VTextField && ((VTextField) widget) - .isReadOnly())) { - Element tdElement = eventTargetParent; - while (DOM.getParent(tdElement) != thisTrElement) { - tdElement = DOM.getParent(tdElement); - } - targetTdOrTr = tdElement; - } - } + while (widget != null && widget.getParent() != this) { + widget = widget.getParent(); + } + + if (!(widget instanceof VLabel) + && !(widget instanceof VEmbedded) + && !(widget instanceof VTextField && ((VTextField) widget) + .isReadOnly())) { + return null; } } + if (eventTarget == thisTrElement) { + // This was a click on the TR element + return thisTrElement; + } - return targetTdOrTr; + // Iterate upwards until we find the TR element + Element element = eventTarget; + while (element != null + && element.getParentElement().cast() != thisTrElement) { + element = element.getParentElement().cast(); + } + return element; } public void showContextMenu(Event event) { -- cgit v1.2.3 From 9cf4a1b2ee8bd9b38c48261230b45d52408e6799 Mon Sep 17 00:00:00 2001 From: John Alhroos Date: Wed, 22 Jun 2011 11:46:23 +0000 Subject: Fixed issue with file upload dialog not closing when selecting file #7135 svn changeset:19499/svn branch:6.6 --- src/com/vaadin/terminal/gwt/client/ui/VUpload.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/com/vaadin/terminal/gwt/client/ui/VUpload.java b/src/com/vaadin/terminal/gwt/client/ui/VUpload.java index 206b89eb82..a49450e086 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VUpload.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VUpload.java @@ -1,4 +1,4 @@ -/* +/* @ITMillApache2LicenseForJavaFiles@ */ @@ -22,6 +22,7 @@ import com.google.gwt.user.client.ui.Hidden; import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.SimplePanel; import com.vaadin.terminal.gwt.client.ApplicationConnection; +import com.vaadin.terminal.gwt.client.BrowserInfo; import com.vaadin.terminal.gwt.client.Paintable; import com.vaadin.terminal.gwt.client.UIDL; import com.vaadin.terminal.gwt.client.VConsole; @@ -44,7 +45,8 @@ public class VUpload extends SimplePanel implements Paintable { && !"".equals(fu.getFilename())) { submit(); } - } else if (event.getTypeInt() == Event.ONFOCUS) { + } else if (BrowserInfo.get().isIE() + && event.getTypeInt() == Event.ONFOCUS) { // IE and user has clicked on hidden textarea part of upload // field. Manually open file selector, other browsers do it by // default. -- cgit v1.2.3 From 809c1778c8094e53bd1b6674b4507043a2b16f5b Mon Sep 17 00:00:00 2001 From: John Alhroos Date: Thu, 23 Jun 2011 10:55:10 +0000 Subject: Fix for #6588 svn changeset:19527/svn branch:6.6 --- src/com/vaadin/ui/AbstractTextField.java | 48 ++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/com/vaadin/ui/AbstractTextField.java b/src/com/vaadin/ui/AbstractTextField.java index 4ed76d367b..622b8d18d9 100644 --- a/src/com/vaadin/ui/AbstractTextField.java +++ b/src/com/vaadin/ui/AbstractTextField.java @@ -1,4 +1,4 @@ -/* +/* @ITMillApache2LicenseForJavaFiles@ */ @@ -123,7 +123,20 @@ public abstract class AbstractTextField extends AbstractField implements throw new IllegalStateException( "Null values are not allowed if the null-representation is null"); } - target.addVariable(this, "text", value); + + if (requestRepaintInTextChangeEvent && !valueChangeInTextChangeEvent) { + /* + * If the repaint occurred in a text change event then we do not + * want to send back the old value since it will just overwrite the + * typed value so we send the last known value instead which is + * updated by the text change event. + */ + target.addVariable(this, "text", lastKnownTextContent); + } else { + target.addVariable(this, "text", value); + } + requestRepaintInTextChangeEvent = false; + valueChangeInTextChangeEvent = false; if (selectionPosition != -1) { target.addAttribute("selpos", selectionPosition); @@ -171,6 +184,22 @@ public abstract class AbstractTextField extends AbstractField implements } } + /** + * Flag for monitoring if a repaint gets requested in a text change event + */ + private boolean requestRepaintInTextChangeEvent = false; + + @Override + public void requestRepaint() { + if (textChangeEventPending) { + /* + * Textchange event listener triggered this repaint + */ + requestRepaintInTextChangeEvent = true; + } + super.requestRepaint(); + } + @Override public void changeVariables(Object source, Map variables) { changingVariables = true; @@ -438,13 +467,26 @@ public abstract class AbstractTextField extends AbstractField implements private void firePendingTextChangeEvent() { if (textChangeEventPending) { - textChangeEventPending = false; fireEvent(new TextChangeEventImpl(this)); + textChangeEventPending = false; } } + /** + * Flag for monitoring if the value got changed in a TextChangeEvent + * listener + */ + protected boolean valueChangeInTextChangeEvent = false; + @Override protected void setInternalValue(Object newValue) { + if (textChangeEventPending) { + /* + * Value changed in a TextChangeEvent listener + */ + valueChangeInTextChangeEvent = true; + } + if (changingVariables && !textChangeEventPending) { /* * Fire a "simulated" text change event before value change event if -- cgit v1.2.3 From 61fa67baac6567afd369e94a7f2689f3d3700336 Mon Sep 17 00:00:00 2001 From: Henri Sara Date: Thu, 23 Jun 2011 11:24:17 +0000 Subject: #7198 simplify code in AbstractValidator.validate() svn changeset:19531/svn branch:6.6 --- src/com/vaadin/data/validator/AbstractValidator.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'src') diff --git a/src/com/vaadin/data/validator/AbstractValidator.java b/src/com/vaadin/data/validator/AbstractValidator.java index 6ea2cae880..7d4f1c3a0d 100644 --- a/src/com/vaadin/data/validator/AbstractValidator.java +++ b/src/com/vaadin/data/validator/AbstractValidator.java @@ -43,12 +43,7 @@ public abstract class AbstractValidator implements Validator { public void validate(Object value) throws InvalidValueException { if (!isValid(value)) { - String message; - if (value == null) { - message = errorMessage.replace("{0}", "null"); - } else { - message = errorMessage.replace("{0}", value.toString()); - } + String message = errorMessage.replace("{0}", String.valueOf(value)); throw new InvalidValueException(message); } } -- cgit v1.2.3 From ee8db4bc93fab0fca273bfb506d722322eaaab15 Mon Sep 17 00:00:00 2001 From: John Alhroos Date: Thu, 23 Jun 2011 12:14:33 +0000 Subject: Fixes #5980 svn changeset:19534/svn branch:6.6 --- src/com/vaadin/terminal/gwt/client/ui/VTextArea.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/com/vaadin/terminal/gwt/client/ui/VTextArea.java b/src/com/vaadin/terminal/gwt/client/ui/VTextArea.java index 3e4724102d..842be7ce05 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VTextArea.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VTextArea.java @@ -1,4 +1,4 @@ -/* +/* @ITMillApache2LicenseForJavaFiles@ */ @@ -39,7 +39,7 @@ public class VTextArea extends VTextField { } if (getMaxLength() >= 0) { - sinkEvents(Event.ONKEYPRESS); + sinkEvents(Event.ONKEYUP); } } @@ -57,7 +57,7 @@ public class VTextArea extends VTextField { @Override public void onBrowserEvent(Event event) { - if (getMaxLength() >= 0 && event.getTypeInt() == Event.ONKEYPRESS) { + if (getMaxLength() >= 0 && event.getTypeInt() == Event.ONKEYUP) { Scheduler.get().scheduleDeferred(new Command() { public void execute() { if (getText().length() > getMaxLength()) { -- cgit v1.2.3 From aa7ce42de1f18c4454247ce41ec116322ddee4d4 Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Thu, 23 Jun 2011 21:08:48 +0000 Subject: Terminate reading the multipart request propertly if file is not the last field (latest flash + EasyUploads) svn changeset:19539/svn branch:6.6 --- src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java b/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java index 74b7a27a96..27416186f3 100644 --- a/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java +++ b/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java @@ -2193,7 +2193,7 @@ public abstract class AbstractCommunicationManager implements public SimpleMultiPartInputStream(InputStream realInputStream, String boundaryString) { - boundary = (CRLF + DASHDASH + boundaryString + DASHDASH) + boundary = (CRLF + DASHDASH + boundaryString) .toCharArray(); this.realInputStream = realInputStream; } -- cgit v1.2.3