選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

NativeWindowing.java 4.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. package com.vaadin.tests;
  2. import java.net.MalformedURLException;
  3. import java.net.URL;
  4. import com.vaadin.server.LegacyApplication;
  5. import com.vaadin.shared.ui.ContentMode;
  6. import com.vaadin.ui.Button;
  7. import com.vaadin.ui.Button.ClickEvent;
  8. import com.vaadin.ui.Label;
  9. import com.vaadin.ui.LegacyWindow;
  10. import com.vaadin.ui.VerticalLayout;
  11. import com.vaadin.ui.Window;
  12. public class NativeWindowing extends LegacyApplication {
  13. LegacyWindow main = new LegacyWindow("Windowing test");
  14. @Override
  15. public void init() {
  16. setMainWindow(main);
  17. main.addComponent(new Button("Add new subwindow", event -> {
  18. VerticalLayout layout = new VerticalLayout();
  19. layout.setMargin(true);
  20. final Window w = new Window("sw " + System.currentTimeMillis(),
  21. layout);
  22. main.addWindow(w);
  23. w.setPositionX(100);
  24. w.setPositionY(100);
  25. w.setWidth("200px");
  26. w.setHeight("200px");
  27. w.setWidth("100px");
  28. w.setHeight("400px");
  29. final Button closebutton = new Button("Close " + w.getCaption(),
  30. clickEvent -> main.removeWindow(w));
  31. layout.addComponent(closebutton);
  32. layout.addComponent(new Label(
  33. "<p>Lorem ipsum dolor sit amet.</p>"
  34. + "<p>Lorem ipsum dolor sit amet.</p>"
  35. + "<p>Lorem ipsum dolor sit amet.</p>"
  36. + "<p>Lorem ipsum dolor sit amet.</p>"
  37. + "<p>Lorem ipsum dolor sit amet.</p>"
  38. + "<p>Lorem ipsum dolor sit amet.</p>"
  39. + "<p>Lorem ipsum dolor sit amet.</p>"
  40. + "<p>Lorem ipsum dolor sit amet.</p>"
  41. + "<p>Lorem ipsum dolor sit amet.</p>"
  42. + "<p>Lorem ipsum dolor sit amet.</p>"
  43. + "<p>Lorem ipsum dolor sit amet.</p>"
  44. + "<p>Lorem ipsum dolor sit amet.</p>"
  45. + "<p>Lorem ipsum dolor sit amet.</p>"
  46. + "<p>Lorem ipsum dolor sit amet.</p>"
  47. + "<p>Lorem ipsum dolor sit amet.</p>"
  48. + "<p>Lorem ipsum dolor sit amet.</p>"
  49. + "<p>Lorem ipsum dolor sit amet.</p>"
  50. + "<p>Lorem ipsum dolor sit amet.</p>"
  51. + "<p>Lorem ipsum dolor sit amet.</p>"
  52. + "<p>Lorem ipsum dolor sit amet.</p>"
  53. + "<p>Lorem ipsum dolor sit amet.</p>"
  54. + "<p>Lorem ipsum dolor sit amet.</p>",
  55. ContentMode.HTML));
  56. }));
  57. main.addComponent(new Button(
  58. "Open a currently uncreated application level window",
  59. event -> {
  60. try {
  61. main.open(new com.vaadin.server.ExternalResource(
  62. new URL(getURL(), "mainwin-"
  63. + System.currentTimeMillis() + "/")),
  64. null);
  65. } catch (final MalformedURLException e) {
  66. }
  67. }));
  68. main.addComponent(new Button(
  69. "Commit (saves window state: size, place, scrollpos)"));
  70. }
  71. @Override
  72. public LegacyWindow getWindow(String name) {
  73. final LegacyWindow w = super.getWindow(name);
  74. if (w != null) {
  75. return w;
  76. }
  77. if (name != null && name.startsWith("mainwin-")) {
  78. final String postfix = name.substring("mainwin-".length());
  79. final LegacyWindow ww = new LegacyWindow("Window: " + postfix);
  80. ww.setName(name);
  81. ww.addComponent(new Label(
  82. "This is a application-level window opened with name: "
  83. + name));
  84. ww.addComponent(new Button("Click me", new Button.ClickListener() {
  85. int state = 0;
  86. @Override
  87. public void buttonClick(ClickEvent event) {
  88. ww.addComponent(new Label(
  89. "Button clicked " + (++state) + " times"));
  90. }
  91. }));
  92. addWindow(ww);
  93. return ww;
  94. }
  95. return null;
  96. }
  97. }