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.3KB

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