You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ClosingWindowWithBrowserFrameShouldntGenerate404.java 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package com.vaadin.tests.components.window;
  2. import com.vaadin.server.StreamResource;
  3. import com.vaadin.server.VaadinRequest;
  4. import com.vaadin.tests.components.AbstractTestUI;
  5. import com.vaadin.ui.*;
  6. import org.apache.commons.io.IOUtils;
  7. import java.io.ByteArrayInputStream;
  8. import java.io.IOException;
  9. import java.io.InputStream;
  10. public class ClosingWindowWithBrowserFrameShouldntGenerate404
  11. extends AbstractTestUI {
  12. private VerticalLayout layout;
  13. @Override
  14. protected void setup(VaadinRequest request) {
  15. layout = new VerticalLayout();
  16. Button button = new Button("Click Me", e -> showPdfInAWindow());
  17. layout.addComponent(button);
  18. addComponent(layout);
  19. }
  20. private void showPdfInAWindow() {
  21. try {
  22. final String fileName = "sample.pdf";
  23. final byte[] bytes = IOUtils
  24. .toByteArray(getClass().getResource("/" + fileName));
  25. StreamResource.StreamSource source = new StreamResource.StreamSource() {
  26. @Override
  27. public InputStream getStream() {
  28. return new ByteArrayInputStream(bytes);
  29. }
  30. };
  31. StreamResource resource = new StreamResource(source, fileName);
  32. resource.setMIMEType("application/pdf");
  33. resource.getStream().setParameter("Content-Disposition",
  34. "attachment; filename=" + fileName);
  35. resource.setCacheTime(-1);
  36. // Use browser frame
  37. BrowserFrame frame = new BrowserFrame();
  38. frame.setSizeFull();
  39. frame.setSource(resource);
  40. frame.setHeight("650px");
  41. Window pdfWindow = new Window("Sample PDF");
  42. pdfWindow.center();
  43. pdfWindow.setModal(true);
  44. pdfWindow.setResizable(false);
  45. pdfWindow.setHeight("700px");
  46. pdfWindow.setWidth("900px");
  47. pdfWindow.setContent(frame);
  48. pdfWindow.addCloseListener(e -> {
  49. layout.addComponent(new Label("PDF was sent"));
  50. });
  51. UI.getCurrent().addWindow(pdfWindow);
  52. } catch (IOException e) {
  53. e.printStackTrace();
  54. }
  55. }
  56. }