package com.vaadin.tests.components.browserframe; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.io.UnsupportedEncodingException; import com.vaadin.server.StreamResource; import com.vaadin.tests.components.TestBase; import com.vaadin.ui.BrowserFrame; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.HorizontalLayout; public class BrowserFrameIsVisible extends TestBase { @Override protected void setup() { HorizontalLayout buttonLayout = new HorizontalLayout(); buttonLayout.setSpacing(false); addComponent(buttonLayout); Button page1 = new Button("Hello World"); buttonLayout.addComponent(page1); Button page2 = new Button("Lorem ipsum"); buttonLayout.addComponent(page2); Button page3 = new Button("null"); buttonLayout.addComponent(page3); final BrowserFrame browser = new BrowserFrame(); browser.setId("browser"); browser.setWidth("600px"); browser.setHeight("300px"); browser.setAlternateText("Browser alternative text"); final TextSource textSource = new TextSource("initial"); final StreamResource textResource = new StreamResource(textSource, "initial.txt"); textResource.setMIMEType("text/plain"); browser.setSource(textResource); addComponent(browser); page1.addClickListener(new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { TextSource helloSource = new TextSource("Hello World"); StreamResource helloResource = new StreamResource(helloSource, "helloworld.txt"); helloResource.setMIMEType("text/plain"); browser.setSource(helloResource); } }); page2.addClickListener(new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { TextSource helloSource = new TextSource("Lorem Ipsum"); StreamResource helloResource = new StreamResource(helloSource, "loremipsum.txt"); helloResource.setMIMEType("text/plain"); browser.setSource(helloResource); } }); page3.addClickListener(new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { browser.setSource(null); } }); } @Override protected String getDescription() { return "Embedded browser should be visible for all browsers"; } @Override protected Integer getTicketNumber() { return null; } public class TextSource implements StreamResource.StreamSource { private String text; public TextSource(String text) { this.text = text; } @Override public InputStream getStream() { StringBuilder sb = new StringBuilder(); for (int i = 0; i < 200; ++i) { sb.append(text); sb.append("\n"); } ByteArrayInputStream istream; try { istream = new ByteArrayInputStream( sb.toString().getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } return istream; // new DownloadStream (istream,null,null); } } }