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.

NativeWindowing.java 5.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. /*
  2. @ITMillApache2LicenseForJavaFiles@
  3. */
  4. package com.vaadin.tests;
  5. import java.net.MalformedURLException;
  6. import java.net.URL;
  7. import com.vaadin.Application;
  8. import com.vaadin.ui.Button;
  9. import com.vaadin.ui.Button.ClickEvent;
  10. import com.vaadin.ui.Label;
  11. import com.vaadin.ui.Window;
  12. public class NativeWindowing extends Application {
  13. Window main = new Window("Windowing test");
  14. @Override
  15. public void init() {
  16. setMainWindow(main);
  17. main.addComponent(new Button("Add new subwindow",
  18. new Button.ClickListener() {
  19. public void buttonClick(ClickEvent event) {
  20. final Window w = new Window("sw "
  21. + System.currentTimeMillis());
  22. main.addWindow(w);
  23. w.setPositionX(100);
  24. w.setPositionY(100);
  25. w.setWidth(200);
  26. w.setHeight(200);
  27. w.setWidth(100);
  28. w.setHeight(400);
  29. final Button closebutton = new Button("Close "
  30. + w.getCaption(), new Button.ClickListener() {
  31. public void buttonClick(ClickEvent event) {
  32. main.removeWindow(w);
  33. }
  34. });
  35. w.addComponent(closebutton);
  36. w.addComponent(new Label(
  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. + "<p>Lorem ipsum dolor sit amet.</p>"
  56. + "<p>Lorem ipsum dolor sit amet.</p>"
  57. + "<p>Lorem ipsum dolor sit amet.</p>"
  58. + "<p>Lorem ipsum dolor sit amet.</p>",
  59. Label.CONTENT_XHTML));
  60. }
  61. }));
  62. main.addComponent(new Button(
  63. "Open a currently uncreated application level window",
  64. new Button.ClickListener() {
  65. public void buttonClick(ClickEvent event) {
  66. try {
  67. main.open(
  68. new com.vaadin.terminal.ExternalResource(
  69. new URL(
  70. getURL(),
  71. "mainwin-"
  72. + System.currentTimeMillis()
  73. + "/")), null);
  74. } catch (final MalformedURLException e) {
  75. }
  76. }
  77. }));
  78. main.addComponent(new Button(
  79. "Commit (saves window state: size, place, scrollpos)"));
  80. }
  81. @Override
  82. public Window getWindow(String name) {
  83. final Window w = super.getWindow(name);
  84. if (w != null) {
  85. return w;
  86. }
  87. if (name != null && name.startsWith("mainwin-")) {
  88. final String postfix = name.substring("mainwin-".length());
  89. final Window ww = new Window("Window: " + postfix);
  90. ww.setName(name);
  91. ww.addComponent(new Label(
  92. "This is a application-level window opened with name: "
  93. + name));
  94. ww.addComponent(new Button("Click me", new Button.ClickListener() {
  95. int state = 0;
  96. public void buttonClick(ClickEvent event) {
  97. ww.addComponent(new Label("Button clicked " + (++state)
  98. + " times"));
  99. }
  100. }));
  101. addWindow(ww);
  102. return ww;
  103. }
  104. return null;
  105. }
  106. }