diff options
author | Leif Åstrand <leif@vaadin.com> | 2013-01-08 13:20:05 +0000 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2013-01-08 13:20:05 +0000 |
commit | 26be32479311497d4fe51859037653d3d9ff3ce2 (patch) | |
tree | a5cf1a1deccccc4d4a4fb8d16ed8d8ca0913c9a5 | |
parent | 2e035d560d7bf61bb77b4910c31ffcc25955bf4d (diff) | |
parent | 27fcaf2699ee4359c2e0cdefb53f17bead2165db (diff) | |
download | vaadin-framework-26be32479311497d4fe51859037653d3d9ff3ce2.tar.gz vaadin-framework-26be32479311497d4fe51859037653d3d9ff3ce2.zip |
Merge "Fix for fixing both styling and broken behavior with ListSelect with newItemsAllowed enabled. #10537"
4 files changed, 97 insertions, 0 deletions
diff --git a/client/src/com/vaadin/client/ApplicationConnection.java b/client/src/com/vaadin/client/ApplicationConnection.java index fa3b945163..4a3215bb21 100644 --- a/client/src/com/vaadin/client/ApplicationConnection.java +++ b/client/src/com/vaadin/client/ApplicationConnection.java @@ -3110,6 +3110,15 @@ public class ApplicationConnection { */ @Deprecated public boolean hasEventListeners(Widget widget, String eventIdentifier) { + ComponentConnector connector = getConnectorMap().getConnector(widget); + if (connector == null) { + /* + * No connector will exist in cases where Vaadin widgets have been + * re-used without implementing server<->client communication. + */ + return false; + } + return hasEventListeners(getConnectorMap().getConnector(widget), eventIdentifier); } diff --git a/client/src/com/vaadin/client/ui/optiongroup/OptionGroupBaseConnector.java b/client/src/com/vaadin/client/ui/optiongroup/OptionGroupBaseConnector.java index 93df05e347..86e857ac7f 100644 --- a/client/src/com/vaadin/client/ui/optiongroup/OptionGroupBaseConnector.java +++ b/client/src/com/vaadin/client/ui/optiongroup/OptionGroupBaseConnector.java @@ -18,6 +18,7 @@ package com.vaadin.client.ui.optiongroup; import com.vaadin.client.ApplicationConnection; import com.vaadin.client.Paintable; +import com.vaadin.client.StyleConstants; import com.vaadin.client.UIDL; import com.vaadin.client.ui.AbstractFieldConnector; import com.vaadin.client.ui.VNativeButton; @@ -72,8 +73,14 @@ public abstract class OptionGroupBaseConnector extends AbstractFieldConnector getWidget().newItemButton = new VNativeButton(); getWidget().newItemButton.setText("+"); getWidget().newItemButton.addClickHandler(getWidget()); + getWidget().newItemButton + .addStyleName(StyleConstants.UI_WIDGET); getWidget().newItemField = new VTextField(); + getWidget().newItemField.client = getConnection(); + getWidget().newItemField.paintableId = getConnectorId(); getWidget().newItemField.addKeyPressHandler(getWidget()); + getWidget().newItemField.addStyleName(StyleConstants.UI_WIDGET); + } getWidget().newItemField.setEnabled(getWidget().isEnabled() && !getWidget().isReadonly()); diff --git a/uitest/src/com/vaadin/tests/components/listselect/ListSelectAllowNewItem.html b/uitest/src/com/vaadin/tests/components/listselect/ListSelectAllowNewItem.html new file mode 100644 index 0000000000..ad5eda1ace --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/listselect/ListSelectAllowNewItem.html @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head profile="http://selenium-ide.openqa.org/profiles/test-case"> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<link rel="selenium.base" href="http://localhost:8888/" /> +<title>New Test</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">New Test</td></tr> +</thead><tbody> +<tr> + <td>open</td> + <td>/run/com.vaadin.tests.components.listselect.ListSelectAllowNewItem?restartApplication</td> + <td></td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentslistselectListSelectAllowNewItem::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[0]/VListSelect[0]/domChild[1]</td> + <td>125,7</td> +</tr> +<tr> + <td>type</td> + <td>vaadin=runcomvaadintestscomponentslistselectListSelectAllowNewItem::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[0]/VListSelect[0]/domChild[1]</td> + <td>aaa</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runcomvaadintestscomponentslistselectListSelectAllowNewItem::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[0]/VListSelect[0]/domChild[2]</td> + <td>15,8</td> +</tr> +<tr> + <td>assertText</td> + <td>vaadin=runcomvaadintestscomponentslistselectListSelectAllowNewItem::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[0]/VListSelect[0]/domChild[0]/domChild[3]</td> + <td>aaa</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentslistselectListSelectAllowNewItem::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[0]/VListSelect[0]/domChild[1]</td> + <td>v-widget</td> +</tr> +<tr> + <td>assertCSSClass</td> + <td>vaadin=runcomvaadintestscomponentslistselectListSelectAllowNewItem::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[0]/VListSelect[0]/domChild[2]</td> + <td>v-widget</td> +</tr> + +</tbody></table> +</body> +</html> diff --git a/uitest/src/com/vaadin/tests/components/listselect/ListSelectAllowNewItem.java b/uitest/src/com/vaadin/tests/components/listselect/ListSelectAllowNewItem.java new file mode 100644 index 0000000000..8e74a7a53d --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/listselect/ListSelectAllowNewItem.java @@ -0,0 +1,29 @@ +package com.vaadin.tests.components.listselect; + +import java.util.Arrays; + +import com.vaadin.tests.components.TestBase; +import com.vaadin.ui.ListSelect; + +public class ListSelectAllowNewItem extends TestBase { + + @Override + protected void setup() { + ListSelect select = new ListSelect("Select", Arrays.asList("Option 1", + "Option 2")); + select.setImmediate(true); + select.setNewItemsAllowed(true); + addComponent(select); + } + + @Override + protected String getDescription() { + return "ListSelect with allowNewItems turned on"; + } + + @Override + protected Integer getTicketNumber() { + return 10537; + } + +} |