From 5fb05e84c80931fcaa9929ad556a20f5316e06a8 Mon Sep 17 00:00:00 2001 From: John Ahlroos Date: Thu, 8 Aug 2013 11:05:38 +0300 Subject: [PATCH] Fixes Button icon alt text not being updated #12333 Change-Id: I23a26fbc5281e76792e257321d96f3d30a8bc2b2 --- client/src/com/vaadin/client/ui/Icon.java | 11 +++ .../client/ui/button/ButtonConnector.java | 13 +-- .../button/ButtonUpdateAltText.html | 46 ++++++++++ .../button/ButtonUpdateAltText.java | 89 +++++++++++++++++++ 4 files changed, 154 insertions(+), 5 deletions(-) create mode 100644 uitest/src/com/vaadin/tests/components/button/ButtonUpdateAltText.html create mode 100644 uitest/src/com/vaadin/tests/components/button/ButtonUpdateAltText.java diff --git a/client/src/com/vaadin/client/ui/Icon.java b/client/src/com/vaadin/client/ui/Icon.java index 5ba3cc6eeb..9d5829c079 100644 --- a/client/src/com/vaadin/client/ui/Icon.java +++ b/client/src/com/vaadin/client/ui/Icon.java @@ -53,4 +53,15 @@ public class Icon extends UIObject { } } + /** + * Sets the alternate text for the icon. + * + * @param alternateText + * with the alternate text. + */ + public void setAlternateText(String alternateText) { + getElement().setAttribute("alt", + alternateText == null ? "" : alternateText); + } + } diff --git a/client/src/com/vaadin/client/ui/button/ButtonConnector.java b/client/src/com/vaadin/client/ui/button/ButtonConnector.java index fff983c168..a6630f28b9 100644 --- a/client/src/com/vaadin/client/ui/button/ButtonConnector.java +++ b/client/src/com/vaadin/client/ui/button/ButtonConnector.java @@ -24,7 +24,6 @@ import com.google.gwt.event.dom.client.FocusEvent; import com.google.gwt.event.dom.client.FocusHandler; import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.user.client.DOM; -import com.google.gwt.user.client.Element; import com.vaadin.client.EventHelper; import com.vaadin.client.MouseEventDetailsBuilder; import com.vaadin.client.communication.StateChangeEvent; @@ -84,13 +83,12 @@ public class ButtonConnector extends AbstractComponentConnector implements if (getIcon() != null) { if (getWidget().icon == null) { getWidget().icon = new Icon(getConnection()); - Element iconElement = getWidget().icon.getElement(); - iconElement.setAttribute("alt", getState().iconAltText); - - getWidget().wrapper.insertBefore(iconElement, + getWidget().wrapper.insertBefore( + getWidget().icon.getElement(), getWidget().captionElement); } getWidget().icon.setUri(getIcon()); + getWidget().icon.setAlternateText(getState().iconAltText); } else { if (getWidget().icon != null) { getWidget().wrapper.removeChild(getWidget().icon @@ -120,6 +118,11 @@ public class ButtonConnector extends AbstractComponentConnector implements } } + if (getWidget().icon != null + && stateChangeEvent.hasPropertyChanged("iconAltText")) { + getWidget().icon.setAlternateText(getState().iconAltText); + } + getWidget().clickShortcut = getState().clickShortcutKeyCode; } diff --git a/uitest/src/com/vaadin/tests/components/button/ButtonUpdateAltText.html b/uitest/src/com/vaadin/tests/components/button/ButtonUpdateAltText.html new file mode 100644 index 0000000000..3608851f9c --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/button/ButtonUpdateAltText.html @@ -0,0 +1,46 @@ + + + + + + +New Test + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
New Test
open/run/com.vaadin.tests.components.button.ButtonUpdateAltText?restartApplication
assertAttribute//div[@id='button']//img[@class='v-icon']@altinitial alt text
mouseClickvaadin=runcomvaadintestscomponentsbuttonButtonUpdateAltText::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[1]/VCheckBox[0]/domChild[0]10,14
assertAttribute//div[@id='button']//img[@class='v-icon']@alt
mouseClickvaadin=runcomvaadintestscomponentsbuttonButtonUpdateAltText::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[1]/VCheckBox[0]/domChild[0]10,14
assertAttribute//div[@id='button']//img[@class='v-icon']@altalt text
+ + diff --git a/uitest/src/com/vaadin/tests/components/button/ButtonUpdateAltText.java b/uitest/src/com/vaadin/tests/components/button/ButtonUpdateAltText.java new file mode 100644 index 0000000000..8286398623 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/button/ButtonUpdateAltText.java @@ -0,0 +1,89 @@ +/* + * Copyright 2000-2013 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +/** + * + */ +package com.vaadin.tests.components.button; + +import com.vaadin.data.Property; +import com.vaadin.data.Property.ValueChangeEvent; +import com.vaadin.server.ThemeResource; +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Button; +import com.vaadin.ui.CheckBox; + +/** + * + * @since + * @author Vaadin Ltd + */ +public class ButtonUpdateAltText extends AbstractTestUI { + + private final ThemeResource ICON = new ThemeResource( + "../runo/icons/16/folder.png"); + + /* + * (non-Javadoc) + * + * @see com.vaadin.tests.components.AbstractTestUI#setup(com.vaadin.server. + * VaadinRequest) + */ + @Override + protected void setup(VaadinRequest request) { + final Button btn = new Button(); + btn.setId("button"); + btn.setIcon(ICON, "initial alt text"); + addComponent(btn); + + final CheckBox enable = new CheckBox("Enable alt text", true); + enable.setImmediate(true); + enable.addValueChangeListener(new Property.ValueChangeListener() { + + @Override + public void valueChange(ValueChangeEvent event) { + if (enable.booleanValue()) { + btn.setIconAlternateText("alt text"); + } else { + btn.setIconAlternateText(""); + } + } + }); + addComponent(enable); + } + + /* + * (non-Javadoc) + * + * @see com.vaadin.tests.components.AbstractTestUI#getTestDescription() + */ + @Override + protected String getTestDescription() { + return "Button should have a alt text"; + } + + /* + * (non-Javadoc) + * + * @see com.vaadin.tests.components.AbstractTestUI#getTicketNumber() + */ + @Override + protected Integer getTicketNumber() { + return 12333; + } + +} -- 2.39.5