]> source.dussan.org Git - vaadin-framework.git/commitdiff
pick Panel HTML caption changes from master (#11589)
authorOlli Tietäväinen <ollit@vaadin.com>
Tue, 21 May 2019 09:41:59 +0000 (12:41 +0300)
committerGitHub <noreply@github.com>
Tue, 21 May 2019 09:41:59 +0000 (12:41 +0300)
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 f032fc54306ce28df9b9df0d2c99d0656a5417c8..76870462ec7dcfca3dceabf1e54bd97d93d7fe93 100644 (file)
@@ -132,8 +132,12 @@ public class VPanel extends SimplePanel
     }
 
     /** 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 950c472ded98bd4ebbe6505a76681375781c36f1..6e72bcacfb412f9507623e4e3114f30ddb7c27b9 100644 (file)
@@ -91,18 +91,17 @@ public class PanelConnector extends AbstractSingleComponentContainerConnector
             // Affects size calculations
 
             // Restore default stylenames
+
             getWidget().contentNode.setClassName(VPanel.CLASSNAME + "-content");
             getWidget().bottomDecoration
                     .setClassName(VPanel.CLASSNAME + "-deco");
             getWidget().captionNode.setClassName(VPanel.CLASSNAME + "-caption");
-            boolean hasCaption = false;
-            if (getState().caption != null && !"".equals(getState().caption)) {
-                getWidget().setCaption(getState().caption);
-                hasCaption = true;
+            boolean hasCaption = hasCaption();
+            if (hasCaption) {
+                getWidget().setCaption(getState().caption,getState().captionAsHtml);
             } else {
-                getWidget().setCaption("");
-                getWidget().captionNode
-                        .setClassName(VPanel.CLASSNAME + "-nocaption");
+                getWidget().setCaption("",false);
+                getWidget().captionNode.setClassName(VPanel.CLASSNAME + "-nocaption");
             }
 
             // Add proper stylenames for all elements. This way we can prevent
@@ -177,6 +176,15 @@ public class PanelConnector extends AbstractSingleComponentContainerConnector
         getWidget().contentNode.setTabIndex(getState().tabIndex);
     }
 
+    /**
+     * Detects if caption div should be visible.
+     *
+     * @return {@code true} if caption div should be shown
+     */
+    protected boolean hasCaption() {
+        return getState().caption != null && !getState().caption.isEmpty();
+    }
+
     @Override
     public void updateCaption(ComponentConnector component) {
         // NOP: layouts caption, errors etc not rendered in Panel
index a040647c1260ded56344cde2a949749d1ccbcda7..ccd9a8a9fbe4a38955c496b29e984324d6641a77 100644 (file)
@@ -50,6 +50,7 @@ public class PanelChangeContents extends AbstractTestUI
         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..bbd5c57
--- /dev/null
@@ -0,0 +1,37 @@
+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>";
+    private Panel panel;
+
+    @Override
+    protected void setup(VaadinRequest request) {
+        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", new Button.ClickListener() {
+            @Override
+            public void buttonClick(Button.ClickEvent event) {
+                panel.setCaptionAsHtml(true);
+            }
+        });
+
+        changeCaptionFormat.setId("buttonId");
+        addComponent(changeCaptionFormat);
+    }
+}
\ No newline at end of file
index 35c716ab5534d32af3fe8a82e071094d9e864acf..d2704d935754aebff6a4d389fe4c26bfc3de2b83 100644 (file)
@@ -3,6 +3,7 @@ package com.vaadin.tests.components.panel;
 import org.junit.Assert;
 import org.junit.Test;
 
+import com.vaadin.testbench.By;
 import com.vaadin.tests.tb3.MultiBrowserTest;
 
 public class PanelChangeContentsTest extends MultiBrowserTest {
@@ -31,5 +32,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"));
+    }
+}