diff options
author | Denis Anisimov <denis@vaadin.com> | 2014-09-03 22:49:44 +0300 |
---|---|---|
committer | Sauli Tähkäpää <sauli@vaadin.com> | 2014-09-12 16:54:20 +0300 |
commit | 51b6c263cb2076bcc07f366bac966536448a5d3c (patch) | |
tree | e64e45ca9c5bb42e5d2544a6a96f14d334b2dd7a | |
parent | 219cd81c6d097b34419dadc68e307f48575b5cbb (diff) | |
download | vaadin-framework-51b6c263cb2076bcc07f366bac966536448a5d3c.tar.gz vaadin-framework-51b6c263cb2076bcc07f366bac966536448a5d3c.zip |
Set title to empty string for Upload if tooltip is used (#14482).
Change-Id: Id9cc9d644772af923d3f5307ea4123df8666a489
4 files changed, 130 insertions, 0 deletions
diff --git a/client/src/com/vaadin/client/ui/VUpload.java b/client/src/com/vaadin/client/ui/VUpload.java index 92df9d9614..24ac9cd72d 100644 --- a/client/src/com/vaadin/client/ui/VUpload.java +++ b/client/src/com/vaadin/client/ui/VUpload.java @@ -312,6 +312,26 @@ public class VUpload extends SimplePanel { Scheduler.get().scheduleDeferred(startUploadCmd); } + public void disableTitle(boolean disable) { + if (disable) { + // Disable title attribute for upload element. + if (BrowserInfo.get().isChrome()) { + // In Chrome title has to be set to " " to make it invisible + fu.setTitle(" "); + } else if (BrowserInfo.get().isFirefox()) { + // In FF title has to be set to empty string to make it + // invisible + // Method setTitle removes title attribute when it's an empty + // string, so setAttribute() should be used here + fu.getElement().setAttribute("title", ""); + } + // For other browsers absent title doesn't show default tooltip for + // input element + } else { + fu.setTitle(null); + } + } + @Override protected void onAttach() { super.onAttach(); @@ -357,4 +377,5 @@ public class VUpload extends SimplePanel { synthesizedFrame = null; } } + } diff --git a/client/src/com/vaadin/client/ui/upload/UploadConnector.java b/client/src/com/vaadin/client/ui/upload/UploadConnector.java index 87e97bc675..ca16b7c513 100644 --- a/client/src/com/vaadin/client/ui/upload/UploadConnector.java +++ b/client/src/com/vaadin/client/ui/upload/UploadConnector.java @@ -21,6 +21,7 @@ import com.google.gwt.event.dom.client.ChangeHandler; import com.vaadin.client.ApplicationConnection; import com.vaadin.client.Paintable; import com.vaadin.client.UIDL; +import com.vaadin.client.communication.StateChangeEvent; import com.vaadin.client.ui.AbstractComponentConnector; import com.vaadin.client.ui.VUpload; import com.vaadin.shared.EventId; @@ -92,6 +93,13 @@ public class UploadConnector extends AbstractComponentConnector implements } @Override + public void onStateChanged(StateChangeEvent stateChangeEvent) { + super.onStateChanged(stateChangeEvent); + + getWidget().disableTitle(hasTooltip()); + } + + @Override public VUpload getWidget() { return (VUpload) super.getWidget(); } diff --git a/uitest/src/com/vaadin/tests/components/upload/UploadTitleWithTooltip.java b/uitest/src/com/vaadin/tests/components/upload/UploadTitleWithTooltip.java new file mode 100644 index 0000000000..e2d47ab901 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/upload/UploadTitleWithTooltip.java @@ -0,0 +1,47 @@ +/* + * Copyright 2000-2014 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.upload; + +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Upload; + +/** + * Test UI for browser-dependent tootlip for Upload component. + * + * @author Vaadin Ltd + */ +public class UploadTitleWithTooltip extends AbstractTestUI { + + @Override + protected void setup(VaadinRequest request) { + Upload upload = new Upload(); + upload.setDescription("tootlip"); + + addComponent(upload); + } + + @Override + protected String getTestDescription() { + return "Browser dependent title should not be visible for upload if Vaadin tooltip is used"; + } + + @Override + protected Integer getTicketNumber() { + return 14482; + } + +} diff --git a/uitest/src/com/vaadin/tests/components/upload/UploadTitleWithTooltipTest.java b/uitest/src/com/vaadin/tests/components/upload/UploadTitleWithTooltipTest.java new file mode 100644 index 0000000000..54ccf993ff --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/upload/UploadTitleWithTooltipTest.java @@ -0,0 +1,54 @@ +/* + * Copyright 2000-2014 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.upload; + +import java.util.List; + +import org.junit.Assert; +import org.junit.Test; +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; + +import com.vaadin.tests.tb3.TooltipTest; + +/** + * Test for check visibility of browser-dependent tootlip for Upload component. + * + * @author Vaadin Ltd + */ +public class UploadTitleWithTooltipTest extends TooltipTest { + + @Test + public void testDropdownTable() throws Exception { + openTestURL(); + + List<WebElement> elements = findElements(By.tagName("input")); + WebElement input = null; + for (WebElement element : elements) { + if ("file".equals(element.getAttribute("type"))) { + input = element; + } + } + + Assert.assertNotNull("Input element with type 'file' is not found", + input); + + checkTooltip(input, "tootlip"); + + compareScreen(getScreenshotBaseName()); + } + +} |