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.

TestSelectAndDatefieldInDeepLayouts.java 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package com.vaadin.tests;
  2. import java.util.Collection;
  3. import java.util.Vector;
  4. import com.vaadin.tests.components.TestDateField;
  5. import com.vaadin.ui.AbstractOrderedLayout;
  6. import com.vaadin.ui.Component;
  7. import com.vaadin.ui.ComponentContainer;
  8. import com.vaadin.ui.CustomComponent;
  9. import com.vaadin.ui.Panel;
  10. import com.vaadin.ui.VerticalLayout;
  11. import com.vaadin.v7.ui.Select;
  12. /**
  13. * This test has a somewhat deep layout within one page. At the bottom, Select
  14. * and Datefield render their popups incorrectly. Popus tend to be "left behind"
  15. * from the actual components. When the page is even bigger or longer, the
  16. * popups are eventually rendered outside the visual parts of the page.
  17. *
  18. * @author Ville Ingman
  19. *
  20. */
  21. public class TestSelectAndDatefieldInDeepLayouts extends CustomComponent {
  22. public TestSelectAndDatefieldInDeepLayouts() {
  23. final AbstractOrderedLayout root = getOrderedLayout();
  24. setCompositionRoot(root);
  25. root.addComponent(getSelect());
  26. root.addComponent(getDateField());
  27. root.addComponent(getSelect());
  28. root.addComponent(getDateField());
  29. final VerticalLayout p1Layout = createPanelLayout();
  30. final Panel p1 = getPanel(p1Layout);
  31. p1.setContent(p1Layout);
  32. root.addComponent(p1);
  33. p1Layout.addComponent(getSelect());
  34. p1Layout.addComponent(getDateField());
  35. p1Layout.addComponent(getSelect());
  36. p1Layout.addComponent(getDateField());
  37. final AbstractOrderedLayout l1 = getOrderedLayout();
  38. p1Layout.addComponent(l1);
  39. l1.addComponent(getSelect());
  40. l1.addComponent(getDateField());
  41. l1.addComponent(getSelect());
  42. l1.addComponent(getDateField());
  43. final VerticalLayout p2Layout = createPanelLayout();
  44. final Panel p2 = getPanel(p2Layout);
  45. l1.addComponent(p2);
  46. p2Layout.addComponent(getSelect());
  47. p2Layout.addComponent(getDateField());
  48. p2Layout.addComponent(getSelect());
  49. p2Layout.addComponent(getDateField());
  50. }
  51. VerticalLayout getOrderedLayout() {
  52. final VerticalLayout l = new VerticalLayout();
  53. l.setCaption(getCaption("orderedlayout"));
  54. return l;
  55. }
  56. private VerticalLayout createPanelLayout() {
  57. VerticalLayout layout = new VerticalLayout();
  58. layout.setMargin(true);
  59. return layout;
  60. }
  61. Panel getPanel(ComponentContainer content) {
  62. final Panel panel = new Panel(content);
  63. panel.setCaption(getCaption("panel"));
  64. return panel;
  65. }
  66. Component getSelect() {
  67. return new Select(getCaption("select"), getSelectOptions());
  68. }
  69. Component getDateField() {
  70. return new TestDateField(getCaption("datefield"));
  71. }
  72. private Collection<String> getSelectOptions() {
  73. final Collection<String> opts = new Vector<>(3);
  74. opts.add(getCaption("opt 1"));
  75. opts.add(getCaption("opt 2"));
  76. opts.add(getCaption("opt 3"));
  77. return opts;
  78. }
  79. private String getCaption(String string) {
  80. return string + (Math.random() * 99999.9);
  81. // This is Java 5 code:
  82. // return string + " " + UUID.randomUUID().toString().substring(0, 5);
  83. }
  84. }