Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

VerticalLayoutWithEmptyLabel.java 7.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. package com.vaadin.tests.components.orderedlayout;
  2. import com.vaadin.server.Sizeable;
  3. import com.vaadin.server.VaadinRequest;
  4. import com.vaadin.shared.ui.MarginInfo;
  5. import com.vaadin.tests.components.AbstractReindeerTestUI;
  6. import com.vaadin.ui.Alignment;
  7. import com.vaadin.ui.Button;
  8. import com.vaadin.ui.CheckBox;
  9. import com.vaadin.ui.Component;
  10. import com.vaadin.ui.HorizontalLayout;
  11. import com.vaadin.ui.Label;
  12. import com.vaadin.ui.Panel;
  13. import com.vaadin.ui.VerticalLayout;
  14. import com.vaadin.v7.ui.Table;
  15. import com.vaadin.v7.ui.TextArea;
  16. import com.vaadin.v7.ui.TextField;
  17. public class VerticalLayoutWithEmptyLabel extends AbstractReindeerTestUI {
  18. private static final float UPPER_BAR_HEIGHT = 42;
  19. private final VerticalLayout rootLayout = new VerticalLayout();
  20. private final Label subtitleLabel = new Label();
  21. private final String rootTitle;
  22. private Component lowerPanel;
  23. public VerticalLayoutWithEmptyLabel() {
  24. rootTitle = "Vaadin Layout Bug";
  25. getPage().setTitle(rootTitle);
  26. }
  27. @Override
  28. public void setup(VaadinRequest request) {
  29. buildRootLayout();
  30. setContent(rootLayout);
  31. }
  32. @Override
  33. public void attach() {
  34. super.attach();
  35. rebuildLowerPanel();
  36. }
  37. protected void rebuildLowerPanel() {
  38. updateLowerPanel(null);
  39. }
  40. private void updateLowerPanel(Object user) {
  41. // Remove previous content
  42. if (lowerPanel != null) {
  43. rootLayout.removeComponent(lowerPanel);
  44. }
  45. // If not logged in, present login form, otherwise check user's rights
  46. // and build lower panel
  47. lowerPanel = new MyPanel();
  48. // Update layout
  49. rootLayout.addComponent(lowerPanel);
  50. rootLayout.setExpandRatio(lowerPanel, 1.0f);
  51. rootLayout.setComponentAlignment(lowerPanel, Alignment.MIDDLE_CENTER);
  52. }
  53. protected Component getRootLowerPanel() {
  54. return lowerPanel;
  55. }
  56. protected void buildRootLayout() {
  57. rootLayout.setSpacing(true);
  58. rootLayout.setSizeFull();
  59. rootLayout.setMargin(new MarginInfo(false, true, true, true));
  60. rootLayout.addComponent(buildRootUpperBar());
  61. rootLayout.addComponent(buildRootSeparator());
  62. rebuildLowerPanel();
  63. }
  64. protected Component buildRootUpperBar() {
  65. // Title
  66. Label titleLabel = new Label(rootTitle);
  67. titleLabel.addStyleName("pexp-application-title");
  68. titleLabel.setSizeUndefined();
  69. titleLabel.setHeight(18, Sizeable.Unit.PIXELS);
  70. subtitleLabel.setSizeUndefined();
  71. VerticalLayout titleLayout = new VerticalLayout();
  72. titleLayout.setSizeUndefined();
  73. titleLayout.addComponent(titleLabel);
  74. titleLayout.setComponentAlignment(titleLabel, Alignment.BOTTOM_CENTER);
  75. titleLayout.addComponent(subtitleLabel);
  76. titleLayout.setComponentAlignment(subtitleLabel,
  77. Alignment.BOTTOM_CENTER);
  78. // Sequence parts
  79. HorizontalLayout layout = new HorizontalLayout();
  80. layout.addStyleName("pexp-main-upper-bar");
  81. layout.setSpacing(true);
  82. layout.setWidth("100%");
  83. layout.setHeight(UPPER_BAR_HEIGHT, Sizeable.Unit.PIXELS);
  84. layout.addComponent(titleLayout);
  85. layout.setExpandRatio(titleLayout, 1.0f);
  86. layout.setComponentAlignment(titleLayout, Alignment.BOTTOM_CENTER);
  87. return layout;
  88. }
  89. protected Component buildRootSeparator() {
  90. VerticalLayout layout = new VerticalLayout();
  91. layout.setMargin(true);
  92. Panel panel = new Panel(layout);
  93. panel.addStyleName("pexp-separator");
  94. panel.setWidth("100%");
  95. panel.setHeight(3.0f, Sizeable.Unit.PIXELS);
  96. return panel;
  97. }
  98. class MyPanel extends VerticalLayout {
  99. private final Table table;
  100. private final Label myLabel = new Label("");
  101. private final TextField filterPhoneField = new TextField(
  102. "Foobar Number");
  103. private final TextField filterFoobarField = new TextField("Foobar ID");
  104. private final CheckBox incomingOnlyField = new CheckBox(
  105. "Incoming foobar only");
  106. public MyPanel() {
  107. // Setup layout
  108. this.setMargin(true);
  109. setSpacing(true);
  110. this.setHeight("100%");
  111. // Setup top layout with controls and fields
  112. HorizontalLayout topLayout = new HorizontalLayout();
  113. topLayout.setSpacing(true);
  114. // Foobar Content
  115. final TextArea smsContent = new TextArea("Foobar Content");
  116. topLayout.addComponent(smsContent);
  117. topLayout.setExpandRatio(smsContent, 1);
  118. smsContent.setRows(3);
  119. smsContent.setColumns(40);
  120. // topLayout.setWidth("100%");
  121. this.addComponent(topLayout);
  122. // Foobar phone #
  123. final TextField smsNumber = new TextField("Foobar Phone #");
  124. smsNumber.setSizeUndefined();
  125. smsNumber.setColumns(12);
  126. smsNumber.setMaxLength(16);
  127. // smsNumber.setStyleName("pexp-fixed-width");
  128. // Phone number and button layout
  129. VerticalLayout buttonNumberLayout = new VerticalLayout();
  130. buttonNumberLayout.setSizeUndefined();
  131. buttonNumberLayout.setHeight("100%");
  132. buttonNumberLayout.addComponent(smsNumber);
  133. buttonNumberLayout.addComponent(myLabel);
  134. Button button = new Button("Receive Foobar");
  135. buttonNumberLayout.addComponent(button);
  136. buttonNumberLayout.setExpandRatio(button, 1);
  137. buttonNumberLayout.setComponentAlignment(button,
  138. Alignment.BOTTOM_LEFT);
  139. topLayout.addComponent(buttonNumberLayout);
  140. // Add message table
  141. table = new Table();
  142. table.setWidth("100%");
  143. table.setHeight("100%");
  144. this.addComponent(table);
  145. setExpandRatio(table, 1);
  146. // Message table controls
  147. VerticalLayout tableControlsLayout = new VerticalLayout();
  148. tableControlsLayout.setSizeUndefined();
  149. tableControlsLayout.setSpacing(true);
  150. // Configure filter for phone #
  151. filterPhoneField.setSizeUndefined();
  152. filterPhoneField.setImmediate(true);
  153. filterPhoneField.setColumns(12);
  154. filterPhoneField.setMaxLength(16);
  155. // this.filterPhoneField.setStyleName("pexp-fixed-width");
  156. // Configure filter for foobar ID
  157. filterFoobarField.setSizeUndefined();
  158. filterFoobarField.setImmediate(true);
  159. filterFoobarField.setColumns(16);
  160. filterFoobarField.setMaxLength(16);
  161. // this.filterFoobarField.setStyleName("pexp-fixed-width");
  162. // Add filter inputs for phone # and foobar ID
  163. tableControlsLayout.addComponent(filterPhoneField);
  164. tableControlsLayout.addComponent(filterFoobarField);
  165. topLayout.addComponent(tableControlsLayout);
  166. topLayout.addComponent(incomingOnlyField);
  167. topLayout.setComponentAlignment(incomingOnlyField,
  168. Alignment.BOTTOM_LEFT);
  169. }
  170. }
  171. @Override
  172. protected String getTestDescription() {
  173. return "foobar";
  174. }
  175. @Override
  176. protected Integer getTicketNumber() {
  177. return 10098;
  178. }
  179. }