diff options
-rw-r--r-- | WebContent/release-notes.html | 2 | ||||
-rw-r--r-- | src/com/vaadin/Application.java | 8 | ||||
-rw-r--r-- | src/com/vaadin/terminal/gwt/client/ui/VTree.java | 76 | ||||
-rw-r--r-- | tests/src/com/vaadin/tests/components/tree/TreeItemClickListening.html | 36 | ||||
-rw-r--r-- | tests/src/com/vaadin/tests/components/tree/TreeItemClickListening.java | 17 |
5 files changed, 71 insertions, 68 deletions
diff --git a/WebContent/release-notes.html b/WebContent/release-notes.html index e7ddc6e8de..4dc136d5ad 100644 --- a/WebContent/release-notes.html +++ b/WebContent/release-notes.html @@ -295,7 +295,7 @@ application servers:</p> it:</p> <ul> - <li>Mozilla Firefox 3 and 4</li> + <li>Mozilla Firefox 3, 4, and 5</li> <li>Internet Explorer releases 6, 7, 8 and 9</li> <li>Safari 4 and 5</li> <li>Opera 10 and 11</li> diff --git a/src/com/vaadin/Application.java b/src/com/vaadin/Application.java index 68f64613e9..39a70fe27f 100644 --- a/src/com/vaadin/Application.java +++ b/src/com/vaadin/Application.java @@ -134,7 +134,7 @@ public abstract class Application implements URIHandler, /** * Application status. */ - private boolean applicationIsRunning = false; + private volatile boolean applicationIsRunning = false; /** * Application properties. @@ -1384,7 +1384,7 @@ public abstract class Application implements URIHandler, } /** - * @return + * @return * "Take note of any unsaved data, and <u>click here</u> to continue." */ public String getSessionExpiredMessage() { @@ -1416,7 +1416,7 @@ public abstract class Application implements URIHandler, } /** - * @return + * @return * "Take note of any unsaved data, and <u>click here</u> to continue." */ public String getCommunicationErrorMessage() { @@ -1448,7 +1448,7 @@ public abstract class Application implements URIHandler, } /** - * @return + * @return * "Take note of any unsaved data, and <u>click here</u> to continue." */ public String getAuthenticationErrorMessage() { diff --git a/src/com/vaadin/terminal/gwt/client/ui/VTree.java b/src/com/vaadin/terminal/gwt/client/ui/VTree.java index ed705dbb9e..a8974aa5bc 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VTree.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VTree.java @@ -417,8 +417,7 @@ public class VTree extends FocusElementPanel implements Paintable, VerticalDropLocation curDetail = (VerticalDropLocation) event .getDropDetails().get("detail"); if (curDetail == detail - && newKey - .equals(currentMouseOverKey)) { + && newKey.equals(currentMouseOverKey)) { keyToNode.get(newKey).emphasis(detail); } /* @@ -778,8 +777,9 @@ public class VTree extends FocusElementPanel implements Paintable, if (selectable) { // caption click = selection change && possible click // event - if (handleClickSelection(event.getCtrlKey() - || event.getMetaKey(), event.getShiftKey())) { + if (handleClickSelection( + event.getCtrlKey() || event.getMetaKey(), + event.getShiftKey())) { event.preventDefault(); } } else { @@ -869,24 +869,30 @@ public class VTree extends FocusElementPanel implements Paintable, final MouseEventDetails details = new MouseEventDetails(evt); ScheduledCommand command = new ScheduledCommand() { public void execute() { - if (details.getButton() == 0) { - // non-immediate iff an immediate select event is going - // to - // happen and the left button was clicked - boolean imm = !immediate - || !selectable - || (!isNullSelectionAllowed && isSelected() && selectedIds - .size() == 1); - client.updateVariable(paintableId, "clickedKey", key, - false); - client.updateVariable(paintableId, "clickEvent", - details.toString(), imm); - } else { - client.updateVariable(paintableId, "clickedKey", key, - false); - client.updateVariable(paintableId, "clickEvent", - details.toString(), immediate); + // Determine if we should send the event immediately to the + // server. We do not want to send the event if there is a + // selection event happening after this. In all other cases + // we want to send it immediately. + boolean sendClickEventNow = true; + + if (details.getButton() == NativeEvent.BUTTON_LEFT + && immediate && selectable) { + // Probably a selection that will cause a value change + // event to be sent + sendClickEventNow = false; + + // The exception is that user clicked on the + // currently selected row and null selection is not + // allowed == no selection event + if (isSelected() && selectedIds.size() == 1 + && !isNullSelectionAllowed) { + sendClickEventNow = true; + } } + + client.updateVariable(paintableId, "clickedKey", key, false); + client.updateVariable(paintableId, "clickEvent", + details.toString(), sendClickEventNow); } }; if (treeHasFocus) { @@ -986,14 +992,14 @@ public class VTree extends FocusElementPanel implements Paintable, if (icon == null) { onloadHandled = false; icon = new Icon(client); - DOM.insertBefore(DOM.getFirstChild(nodeCaptionDiv), icon - .getElement(), nodeCaptionSpan); + DOM.insertBefore(DOM.getFirstChild(nodeCaptionDiv), + icon.getElement(), nodeCaptionSpan); } icon.setUri(uidl.getStringAttribute("icon")); } else { if (icon != null) { - DOM.removeChild(DOM.getFirstChild(nodeCaptionDiv), icon - .getElement()); + DOM.removeChild(DOM.getFirstChild(nodeCaptionDiv), + icon.getElement()); icon = null; } } @@ -1066,8 +1072,9 @@ public class VTree extends FocusElementPanel implements Paintable, childNodeContainer.add(childTree); } if (!i.hasNext()) { - childTree.addStyleDependentName(childTree.isLeaf() - ? "leaf-last" : "last"); + childTree + .addStyleDependentName(childTree.isLeaf() ? "leaf-last" + : "last"); childTree.childNodeContainer.addStyleDependentName("last"); } } @@ -1731,8 +1738,9 @@ public class VTree extends FocusElementPanel implements Paintable, // keypress event keyCode = CHARCODE_SPACE; } - if (handleKeyNavigation(keyCode, event.isControlKeyDown() - || event.isMetaKeyDown(), event.isShiftKeyDown())) { + if (handleKeyNavigation(keyCode, + event.isControlKeyDown() || event.isMetaKeyDown(), + event.isShiftKeyDown())) { event.preventDefault(); event.stopPropagation(); } @@ -1746,9 +1754,9 @@ public class VTree extends FocusElementPanel implements Paintable, * .event.dom.client.KeyDownEvent) */ public void onKeyDown(KeyDownEvent event) { - if (handleKeyNavigation(event.getNativeEvent().getKeyCode(), event - .isControlKeyDown() - || event.isMetaKeyDown(), event.isShiftKeyDown())) { + if (handleKeyNavigation(event.getNativeEvent().getKeyCode(), + event.isControlKeyDown() || event.isMetaKeyDown(), + event.isShiftKeyDown())) { event.preventDefault(); event.stopPropagation(); } @@ -2206,8 +2214,8 @@ public class VTree extends FocusElementPanel implements Paintable, ArrayList<Integer> positions = new ArrayList<Integer>(); while (treeNode.getParentNode() != null) { - positions.add(0, treeNode.getParentNode().getChildren().indexOf( - treeNode)); + positions.add(0, + treeNode.getParentNode().getChildren().indexOf(treeNode)); treeNode = treeNode.getParentNode(); } positions.add(0, getRootNodes().indexOf(treeNode)); diff --git a/tests/src/com/vaadin/tests/components/tree/TreeItemClickListening.html b/tests/src/com/vaadin/tests/components/tree/TreeItemClickListening.html index 42f298520f..841565df2f 100644 --- a/tests/src/com/vaadin/tests/components/tree/TreeItemClickListening.html +++ b/tests/src/com/vaadin/tests/components/tree/TreeItemClickListening.html @@ -22,9 +22,9 @@ <td>36,7</td> </tr> <tr> - <td>verifyTextPresent</td> - <td>exact:1: Left Click</td> - <td></td> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstreeTreeItemClickListening::PID_SLog_row_0</td> + <td>1. Left Click</td> </tr> <tr> <td>mouseClick</td> @@ -32,9 +32,9 @@ <td>45,7</td> </tr> <tr> - <td>verifyTextPresent</td> - <td>exact:1: Left Click<br />2: Left Click</td> - <td></td> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstreeTreeItemClickListening::PID_SLog_row_0</td> + <td>2. Left Click</td> </tr> <tr> <td>mouseClick</td> @@ -42,9 +42,9 @@ <td>37,13</td> </tr> <tr> - <td>verifyTextPresent</td> - <td>exact:1: Left Click<br />2: Left Click<br />3: Left Click</td> - <td></td> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstreeTreeItemClickListening::PID_SLog_row_0</td> + <td>3. Left Click</td> </tr> <tr> <td>mouseDownRight</td> @@ -57,9 +57,9 @@ <td></td> </tr> <tr> - <td>verifyTextPresent</td> - <td>exact:1: Left Click<br />2: Left Click<br />3: Left Click<br />4: Right Click</td> - <td></td> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstreeTreeItemClickListening::PID_SLog_row_0</td> + <td>4. Right Click</td> </tr> <tr> <td>mouseDownRight</td> @@ -72,16 +72,10 @@ <td></td> </tr> <tr> - <td>verifyTextPresent</td> - <td>exact:1: Left Click<br />2: Left Click<br />3: Left Click<br />4: Right Click<br />5: Right Click</td> - <td></td> -</tr> -<tr> - <td>screenCapture</td> - <td></td> - <td>ThreeLeftAndTwoRightClicks</td> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentstreeTreeItemClickListening::PID_SLog_row_0</td> + <td>5. Right Click</td> </tr> - </tbody></table> </body> </html> diff --git a/tests/src/com/vaadin/tests/components/tree/TreeItemClickListening.java b/tests/src/com/vaadin/tests/components/tree/TreeItemClickListening.java index 902edead88..e772be7cde 100644 --- a/tests/src/com/vaadin/tests/components/tree/TreeItemClickListening.java +++ b/tests/src/com/vaadin/tests/components/tree/TreeItemClickListening.java @@ -2,18 +2,18 @@ package com.vaadin.tests.components.tree; import com.vaadin.event.ItemClickEvent; import com.vaadin.tests.components.TestBase; -import com.vaadin.ui.Label; +import com.vaadin.tests.util.Log; import com.vaadin.ui.Tree; public class TreeItemClickListening extends TestBase { private int clickCounter = 0; + private Log log = new Log(5); + @Override protected void setup() { - final Label output = new Label("", Label.CONTENT_PREFORMATTED); - Tree tree = new Tree(); tree.setImmediate(true); @@ -32,19 +32,20 @@ public class TreeItemClickListening extends TestBase { clickCounter++; switch (event.getButton()) { case ItemClickEvent.BUTTON_LEFT: - output.setValue(output.getValue().toString() + clickCounter - + ": Left Click\n"); + log.log("Left Click"); break; case ItemClickEvent.BUTTON_RIGHT: - output.setValue(output.getValue().toString() + clickCounter - + ": Right Click\n"); + log.log("Right Click"); + break; + case ItemClickEvent.BUTTON_MIDDLE: + log.log("Middle Click"); break; } } }); addComponent(tree); - addComponent(output); + addComponent(log); } @Override |