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.

LegacyDateFieldRanges.java 8.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. package com.vaadin.tests.components.datefield;
  2. import java.util.Calendar;
  3. import java.util.Date;
  4. import java.util.Locale;
  5. import com.vaadin.server.VaadinRequest;
  6. import com.vaadin.shared.ui.MarginInfo;
  7. import com.vaadin.tests.components.AbstractReindeerTestUI;
  8. import com.vaadin.ui.Button;
  9. import com.vaadin.ui.Button.ClickEvent;
  10. import com.vaadin.ui.CheckBox;
  11. import com.vaadin.ui.GridLayout;
  12. import com.vaadin.ui.HorizontalLayout;
  13. import com.vaadin.ui.Label;
  14. import com.vaadin.ui.VerticalLayout;
  15. import com.vaadin.v7.data.Property.ValueChangeEvent;
  16. import com.vaadin.v7.data.Property.ValueChangeListener;
  17. import com.vaadin.v7.shared.ui.datefield.Resolution;
  18. import com.vaadin.v7.ui.DateField;
  19. import com.vaadin.v7.ui.InlineDateField;
  20. import com.vaadin.v7.ui.NativeSelect;
  21. public class LegacyDateFieldRanges extends AbstractReindeerTestUI {
  22. @Override
  23. protected Integer getTicketNumber() {
  24. return 6241;
  25. }
  26. private Label label = new Label();
  27. private NativeSelect resoSelect = new NativeSelect("Resolution");
  28. private DateField fromRange = new DateField("Range start");
  29. private DateField toRange = new DateField("Range end");
  30. private DateField valueDF = new DateField("Value");
  31. private CheckBox immediateCB = new CheckBox("Immediate");
  32. private Button recreate = new Button("Recreate static datefields");
  33. private Button clearRangeButton = new Button("Clear range");
  34. private GridLayout currentStaticContainer;
  35. private DateField inlineDynamicDateField;
  36. private DateField dynamicDateField;
  37. private Calendar createCalendar() {
  38. Calendar c = Calendar.getInstance();
  39. c.set(2013, 3, 26, 6, 1, 12);
  40. return c;
  41. }
  42. private Date newDate() {
  43. return createCalendar().getTime();
  44. }
  45. private void initializeControlFields() {
  46. resoSelect.addItem(Resolution.MINUTE);
  47. resoSelect.addItem(Resolution.SECOND);
  48. resoSelect.addItem(Resolution.HOUR);
  49. resoSelect.addItem(Resolution.DAY);
  50. resoSelect.addItem(Resolution.MONTH);
  51. resoSelect.addItem(Resolution.YEAR);
  52. resoSelect.setImmediate(true);
  53. resoSelect.setValue(Resolution.DAY);
  54. resoSelect.addValueChangeListener(new ValueChangeListener() {
  55. @Override
  56. public void valueChange(ValueChangeEvent event) {
  57. Resolution r = (Resolution) resoSelect.getValue();
  58. inlineDynamicDateField.setResolution(r);
  59. dynamicDateField.setResolution(r);
  60. }
  61. });
  62. fromRange.setValue(null);
  63. fromRange.setImmediate(true);
  64. fromRange.addValueChangeListener(new ValueChangeListener() {
  65. @Override
  66. public void valueChange(ValueChangeEvent event) {
  67. inlineDynamicDateField.setRangeStart(fromRange.getValue());
  68. dynamicDateField.setRangeStart(fromRange.getValue());
  69. }
  70. });
  71. toRange.setValue(null);
  72. toRange.setImmediate(true);
  73. toRange.addValueChangeListener(new ValueChangeListener() {
  74. @Override
  75. public void valueChange(ValueChangeEvent event) {
  76. inlineDynamicDateField.setRangeEnd(toRange.getValue());
  77. dynamicDateField.setRangeEnd(toRange.getValue());
  78. }
  79. });
  80. valueDF.setValue(null);
  81. valueDF.setImmediate(true);
  82. valueDF.addValueChangeListener(new ValueChangeListener() {
  83. @Override
  84. public void valueChange(ValueChangeEvent event) {
  85. inlineDynamicDateField.setValue(valueDF.getValue());
  86. dynamicDateField.setValue(valueDF.getValue());
  87. }
  88. });
  89. immediateCB.setValue(true);
  90. immediateCB.addValueChangeListener(event -> {
  91. inlineDynamicDateField.setImmediate(immediateCB.getValue());
  92. dynamicDateField.setImmediate(immediateCB.getValue());
  93. });
  94. recreate.addClickListener(new Button.ClickListener() {
  95. @Override
  96. public void buttonClick(ClickEvent event) {
  97. GridLayout newContainer = createStaticFields();
  98. replaceComponent(currentStaticContainer, newContainer);
  99. currentStaticContainer = newContainer;
  100. }
  101. });
  102. clearRangeButton.addClickListener(new Button.ClickListener() {
  103. @Override
  104. public void buttonClick(ClickEvent event) {
  105. fromRange.setValue(null);
  106. toRange.setValue(null);
  107. }
  108. });
  109. Calendar startCal = createCalendar();
  110. Calendar endCal = createCalendar();
  111. endCal.add(Calendar.DATE, 30);
  112. dynamicDateField = createDateField(startCal.getTime(), endCal.getTime(),
  113. null, Resolution.DAY, false);
  114. inlineDynamicDateField = createDateField(startCal.getTime(),
  115. endCal.getTime(), null, Resolution.DAY, true);
  116. resoSelect.setId("resoSelect");
  117. fromRange.setId("fromRange");
  118. toRange.setId("toRange");
  119. valueDF.setId("valueDF");
  120. immediateCB.setId("immediateCB");
  121. recreate.setId("recreate");
  122. clearRangeButton.setId("clearRangeButton");
  123. dynamicDateField.setId("dynamicDateField");
  124. inlineDynamicDateField.setId("inlineDynamicDateField");
  125. }
  126. @Override
  127. protected void setup(VaadinRequest request) {
  128. setLocale(new Locale("en", "US"));
  129. getLayout().setWidth(100, Unit.PERCENTAGE);
  130. getLayout().setHeight(null);
  131. getLayout().setMargin(new MarginInfo(true, false, false, false));
  132. getLayout().setSpacing(true);
  133. initializeControlFields();
  134. GridLayout gl = new GridLayout(2, 2);
  135. gl.setSpacing(true);
  136. gl.addComponent(dynamicDateField);
  137. gl.addComponent(inlineDynamicDateField);
  138. HorizontalLayout hl = new HorizontalLayout();
  139. hl.setSpacing(true);
  140. hl.addComponent(resoSelect);
  141. hl.addComponent(fromRange);
  142. hl.addComponent(toRange);
  143. hl.addComponent(valueDF);
  144. hl.addComponent(immediateCB);
  145. hl.addComponent(recreate);
  146. hl.addComponent(clearRangeButton);
  147. addComponent(hl);
  148. addComponent(new Label("Dynamic DateFields"));
  149. addComponent(gl);
  150. currentStaticContainer = createStaticFields();
  151. addComponent(new Label("Static DateFields"));
  152. addComponent(currentStaticContainer);
  153. addComponent(label);
  154. }
  155. private GridLayout createStaticFields() {
  156. Calendar startCal = createCalendar();
  157. Calendar endCal = createCalendar();
  158. endCal.add(Calendar.DATE, 30);
  159. GridLayout gl = new GridLayout(2, 2);
  160. gl.setSpacing(true);
  161. DateField df = createDateField(startCal.getTime(), endCal.getTime(),
  162. null, Resolution.DAY, false);
  163. gl.addComponent(df);
  164. DateField inline = createDateField(startCal.getTime(), endCal.getTime(),
  165. null, Resolution.DAY, true);
  166. gl.addComponent(inline);
  167. inline.setId("staticInline");
  168. VerticalLayout vl = new VerticalLayout();
  169. return gl;
  170. }
  171. private DateField createDateField(Date rangeStart, Date rangeEnd,
  172. Date value, Resolution resolution, boolean inline) {
  173. DateField df = null;
  174. if (inline) {
  175. df = new InlineDateField();
  176. } else {
  177. df = new DateField();
  178. }
  179. final DateField gg = df;
  180. updateValuesForDateField(df);
  181. df.addValueChangeListener(new ValueChangeListener() {
  182. @Override
  183. public void valueChange(ValueChangeEvent event) {
  184. label.setValue((gg.getValue() == null ? "Nothing"
  185. : gg.getValue().toString()) + " selected. isValid: "
  186. + gg.isValid());
  187. }
  188. });
  189. return df;
  190. }
  191. @Override
  192. protected String getTestDescription() {
  193. return "Not defined yet";
  194. }
  195. private void updateValuesForDateField(DateField df) {
  196. Date fromVal = fromRange.getValue();
  197. Date toVal = toRange.getValue();
  198. Date value = valueDF.getValue();
  199. Resolution r = (Resolution) resoSelect.getValue();
  200. boolean immediate = immediateCB.getValue();
  201. df.setValue(value);
  202. df.setResolution(r);
  203. df.setRangeStart(fromVal);
  204. df.setRangeEnd(toVal);
  205. df.setImmediate(immediate);
  206. }
  207. }