]> source.dussan.org Git - vaadin-framework.git/commitdiff
Set title to empty string for Upload if tooltip is used (#14482).
authorDenis Anisimov <denis@vaadin.com>
Wed, 3 Sep 2014 19:49:44 +0000 (22:49 +0300)
committerMarkus Koivisto <markus@vaadin.com>
Wed, 10 Sep 2014 11:54:47 +0000 (11:54 +0000)
Change-Id: Id9cc9d644772af923d3f5307ea4123df8666a489

client/src/com/vaadin/client/ui/VUpload.java
client/src/com/vaadin/client/ui/upload/UploadConnector.java
uitest/src/com/vaadin/tests/components/upload/UploadTitleWithTooltip.java [new file with mode: 0644]
uitest/src/com/vaadin/tests/components/upload/UploadTitleWithTooltipTest.java [new file with mode: 0644]

index 92df9d96145661f5a67a5a3985af244f858e1235..24ac9cd72d661c07210e8dcd3421d6b73982ade2 100644 (file)
@@ -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;
         }
     }
+
 }
index 87e97bc6755b6c1b4da8f40c9e3be6a47a67975f..ca16b7c513e2c4fdd01aaf03548ac20d92af5ed5 100644 (file)
@@ -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;
@@ -91,6 +92,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 (file)
index 0000000..e2d47ab
--- /dev/null
@@ -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 (file)
index 0000000..54ccf99
--- /dev/null
@@ -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());
+    }
+
+}