]> source.dussan.org Git - vaadin-framework.git/commitdiff
setCaption of Panel did not honor setCaptionAsHtml (#11523)
authorTatu Lund <tatu@vaadin.com>
Tue, 2 Apr 2019 10:46:29 +0000 (13:46 +0300)
committerAnastasia Smirnova <anasmi@utu.fi>
Tue, 2 Apr 2019 10:46:29 +0000 (13:46 +0300)
Verify that correct mode(HTML/TEXT) of caption is set for the  Panel
Fixes #11521

client/src/main/java/com/vaadin/client/ui/VPanel.java
client/src/main/java/com/vaadin/client/ui/panel/PanelConnector.java
uitest/src/main/java/com/vaadin/tests/components/panel/PanelChangeContents.java
uitest/src/main/java/com/vaadin/tests/components/panel/PanelHTMLCaption.java [new file with mode: 0644]
uitest/src/test/java/com/vaadin/tests/components/panel/PanelChangeContentsTest.java
uitest/src/test/java/com/vaadin/tests/components/panel/PanelHTMLCaptionTest.java [new file with mode: 0644]

index 6396b833366bc1fb09d8cb99f386651d5dd94b0f..d740c70fab9de96516c30d277ac11c302d74246f 100644 (file)
@@ -130,8 +130,12 @@ public class VPanel extends SimplePanel implements ShortcutActionHandlerOwner,
     }
 
     /** For internal use only. May be removed or replaced in the future. */
-    public void setCaption(String text) {
-        DOM.setInnerHTML(captionText, text);
+    public void setCaption(String text, boolean captionAsHtml) {
+        if (captionAsHtml) {
+            captionText.setInnerHTML(text);
+        } else {
+            captionText.setInnerText(text);
+        }
     }
 
     /** For internal use only. May be removed or replaced in the future. */
index f454e511be5082505bdac783ec7577952fe6b186..44d60121b1b95f0299b40367eb9a59794b689e47 100644 (file)
@@ -97,9 +97,9 @@ public class PanelConnector extends AbstractSingleComponentContainerConnector
             panel.captionNode.setClassName(VPanel.CLASSNAME + "-caption");
             boolean hasCaption = hasCaption();
             if (hasCaption) {
-                panel.setCaption(getState().caption);
+                panel.setCaption(getState().caption,getState().captionAsHtml);
             } else {
-                panel.setCaption("");
+                panel.setCaption("",false);
                 panel.captionNode.setClassName(VPanel.CLASSNAME + "-nocaption");
             }
 
index ae3c617ae5d513373218621cb251a003d5d251b2..d00ae206fe3b46862d0d02354d504c488819895e 100644 (file)
@@ -35,6 +35,7 @@ public class PanelChangeContents extends AbstractReindeerTestUI
         buttons.addComponent(companiesButton);
         buttons.addComponent(settingsButton);
         panel = new Panel();
+        panel.setCaption("<div class=\"caption-with-html\">Caption</div>");
         panel.setSizeFull();
         panel.setContent(stats);
         content.addComponent(buttons);
diff --git a/uitest/src/main/java/com/vaadin/tests/components/panel/PanelHTMLCaption.java b/uitest/src/main/java/com/vaadin/tests/components/panel/PanelHTMLCaption.java
new file mode 100644 (file)
index 0000000..bdae0b5
--- /dev/null
@@ -0,0 +1,31 @@
+package com.vaadin.tests.components.panel;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Panel;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.VerticalLayout;
+
+public class PanelHTMLCaption extends AbstractTestUI {
+    public static final String caption = "<b> <div id='divId'>BOLD CAPTION</div></b>";
+
+    @Override
+    protected void setup(VaadinRequest request) {
+        Panel panel = new Panel();
+        panel.setId("panelId");
+        panel.setWidth("200px");
+        panel.setHeight("200px");
+
+        panel.setCaption(caption);
+        panel.setCaptionAsHtml(false);
+
+        panel.setContent(new VerticalLayout());
+
+        addComponent(panel);
+        Button changeCaptionFormat = new Button("Set Caption as HTML", e -> {
+            panel.setCaptionAsHtml(true);
+        });
+        changeCaptionFormat.setId("buttonId");
+        addComponent(changeCaptionFormat);
+    }
+}
\ No newline at end of file
index 317dc1093b097784e3e6eaa67ca2dde850ed2c34..49e2be2ccfa0ce99ac6914b1fdf408ae92ce0b4d 100644 (file)
@@ -4,6 +4,7 @@ import static org.junit.Assert.assertEquals;
 
 import org.junit.Test;
 
+import com.vaadin.testbench.By;
 import com.vaadin.tests.tb3.MultiBrowserTest;
 
 public class PanelChangeContentsTest extends MultiBrowserTest {
@@ -29,5 +30,6 @@ public class PanelChangeContentsTest extends MultiBrowserTest {
                 "/VVerticalLayout[0]/Slot[1]/VPanel[0]/VVerticalLayout[0]/Slot[0]/VLabel[0]")
                         .getText());
 
+        assertElementNotPresent(By.className("caption-with-html"));
     }
 }
diff --git a/uitest/src/test/java/com/vaadin/tests/components/panel/PanelHTMLCaptionTest.java b/uitest/src/test/java/com/vaadin/tests/components/panel/PanelHTMLCaptionTest.java
new file mode 100644 (file)
index 0000000..e360bfa
--- /dev/null
@@ -0,0 +1,16 @@
+package com.vaadin.tests.components.panel;
+
+import com.vaadin.tests.tb3.MultiBrowserTest;
+import org.junit.Test;
+import org.openqa.selenium.By;
+
+
+public class PanelHTMLCaptionTest extends MultiBrowserTest {
+    @Test
+    public void testCaptionDisplayedAsText() {
+        openTestURL();
+        assertElementNotPresent(By.id("divId"));
+        findElement(By.id("buttonId")).click();
+        assertElementPresent(By.id("divId"));
+    }
+}