Change-Id: I880dda9cd25dbd8d6313c1b73b5998679d63aecbtags/7.4.7
@@ -223,7 +223,7 @@ public class VFormLayout extends SimplePanel { | |||
private Icon icon; | |||
private Element captionText; | |||
private Element captionContent; | |||
/** | |||
* | |||
@@ -274,13 +274,13 @@ public class VFormLayout extends SimplePanel { | |||
} | |||
if (state.caption != null) { | |||
if (captionText == null) { | |||
captionText = DOM.createSpan(); | |||
if (captionContent == null) { | |||
captionContent = DOM.createSpan(); | |||
AriaHelper.bindCaption(owner.getWidget(), captionText); | |||
AriaHelper.bindCaption(owner.getWidget(), captionContent); | |||
DOM.insertChild(getElement(), captionText, icon == null ? 0 | |||
: 1); | |||
DOM.insertChild(getElement(), captionContent, | |||
icon == null ? 0 : 1); | |||
} | |||
String c = state.caption; | |||
if (c == null) { | |||
@@ -288,12 +288,16 @@ public class VFormLayout extends SimplePanel { | |||
} else { | |||
isEmpty = false; | |||
} | |||
DOM.setInnerText(captionText, c); | |||
if (state.captionAsHtml) { | |||
captionContent.setInnerHTML(c); | |||
} else { | |||
captionContent.setInnerText(c); | |||
} | |||
} else { | |||
// TODO should span also be removed | |||
} | |||
if (state.description != null && captionText != null) { | |||
if (state.description != null && captionContent != null) { | |||
addStyleDependentName("hasdescription"); | |||
} else { | |||
removeStyleDependentName("hasdescription"); |
@@ -0,0 +1,43 @@ | |||
/* | |||
* 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.formlayout; | |||
import com.vaadin.server.VaadinRequest; | |||
import com.vaadin.tests.components.AbstractTestUI; | |||
import com.vaadin.ui.Button; | |||
import com.vaadin.ui.Button.ClickEvent; | |||
import com.vaadin.ui.FormLayout; | |||
import com.vaadin.ui.TextField; | |||
public class HtmlCaptionInFormLayout extends AbstractTestUI { | |||
@Override | |||
protected void setup(VaadinRequest request) { | |||
final TextField asHtml = new TextField("Contains <b>HTML</b>"); | |||
asHtml.setCaptionAsHtml(true); | |||
final TextField asText = new TextField("Contains <b>HTML</b>"); | |||
addComponent(new FormLayout(asHtml, asText)); | |||
addComponent(new Button("Toggle", new Button.ClickListener() { | |||
@Override | |||
public void buttonClick(ClickEvent event) { | |||
asHtml.setCaptionAsHtml(!asHtml.isCaptionAsHtml()); | |||
asText.setCaptionAsHtml(!asText.isCaptionAsHtml()); | |||
} | |||
})); | |||
} | |||
} |
@@ -0,0 +1,59 @@ | |||
/* | |||
* 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.formlayout; | |||
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.testbench.elements.ButtonElement; | |||
import com.vaadin.tests.tb3.SingleBrowserTest; | |||
public class HtmlCaptionInFormLayoutTest extends SingleBrowserTest { | |||
@Test | |||
public void testHtmlCaptions() { | |||
openTestURL(); | |||
List<WebElement> captions = getDriver().findElements( | |||
By.cssSelector(".v-formlayout-captioncell span")); | |||
Assert.assertEquals("Should be two formlayout captions", 2, | |||
captions.size()); | |||
Assert.assertEquals("Contains HTML", captions.get(0).getText()); | |||
Assert.assertEquals("Contains <b>HTML</b>", captions.get(1).getText()); | |||
} | |||
@Test | |||
public void testHtmlCaptionToggle() { | |||
openTestURL(); | |||
$(ButtonElement.class).caption("Toggle").first().click(); | |||
List<WebElement> captions = getDriver().findElements( | |||
By.cssSelector(".v-formlayout-captioncell span")); | |||
Assert.assertEquals("Should be two formlayout captions", 2, | |||
captions.size()); | |||
Assert.assertEquals("Contains <b>HTML</b>", captions.get(0).getText()); | |||
Assert.assertEquals("Contains HTML", captions.get(1).getText()); | |||
} | |||
} |