Browse Source

Set title to empty string for Upload if tooltip is used (#14482).

Change-Id: Id9cc9d644772af923d3f5307ea4123df8666a489
tags/7.4.0.beta1
Denis Anisimov 9 years ago
parent
commit
305db63d59

+ 21
- 0
client/src/com/vaadin/client/ui/VUpload.java View 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;
}
}

}

+ 8
- 0
client/src/com/vaadin/client/ui/upload/UploadConnector.java View 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();

+ 47
- 0
uitest/src/com/vaadin/tests/components/upload/UploadTitleWithTooltip.java View File

@@ -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;
}

}

+ 54
- 0
uitest/src/com/vaadin/tests/components/upload/UploadTitleWithTooltipTest.java View File

@@ -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());
}

}

Loading…
Cancel
Save