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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  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.data.Property.ValueChangeEvent;
  6. import com.vaadin.data.Property.ValueChangeListener;
  7. import com.vaadin.server.VaadinRequest;
  8. import com.vaadin.shared.ui.MarginInfo;
  9. import com.vaadin.shared.ui.datefield.Resolution;
  10. import com.vaadin.tests.components.AbstractTestUI;
  11. import com.vaadin.ui.Button;
  12. import com.vaadin.ui.Button.ClickEvent;
  13. import com.vaadin.ui.CheckBox;
  14. import com.vaadin.ui.GridLayout;
  15. import com.vaadin.ui.HorizontalLayout;
  16. import com.vaadin.ui.Label;
  17. import com.vaadin.ui.NativeSelect;
  18. import com.vaadin.ui.VerticalLayout;
  19. import com.vaadin.v7.ui.LegacyDateField;
  20. import com.vaadin.v7.ui.LegacyInlineDateField;
  21. public class LegacyDateFieldRanges extends AbstractTestUI {
  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 LegacyDateField fromRange = new LegacyDateField("Range start");
  29. private LegacyDateField toRange = new LegacyDateField("Range end");
  30. private LegacyDateField valueDF = new LegacyDateField("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 LegacyDateField inlineDynamicDateField;
  36. private LegacyDateField 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.setImmediate(true);
  91. immediateCB.addValueChangeListener(event -> {
  92. inlineDynamicDateField.setImmediate(immediateCB.getValue());
  93. dynamicDateField.setImmediate(immediateCB.getValue());
  94. });
  95. recreate.addClickListener(new Button.ClickListener() {
  96. @Override
  97. public void buttonClick(ClickEvent event) {
  98. GridLayout newContainer = createStaticFields();
  99. replaceComponent(currentStaticContainer, newContainer);
  100. currentStaticContainer = newContainer;
  101. }
  102. });
  103. clearRangeButton.addClickListener(new Button.ClickListener() {
  104. @Override
  105. public void buttonClick(ClickEvent event) {
  106. fromRange.setValue(null);
  107. toRange.setValue(null);
  108. }
  109. });
  110. Calendar startCal = createCalendar();
  111. Calendar endCal = createCalendar();
  112. endCal.add(Calendar.DATE, 30);
  113. dynamicDateField = createDateField(startCal.getTime(), endCal.getTime(),
  114. null, Resolution.DAY, false);
  115. inlineDynamicDateField = createDateField(startCal.getTime(),
  116. endCal.getTime(), null, Resolution.DAY, true);
  117. resoSelect.setId("resoSelect");
  118. fromRange.setId("fromRange");
  119. toRange.setId("toRange");
  120. valueDF.setId("valueDF");
  121. immediateCB.setId("immediateCB");
  122. recreate.setId("recreate");
  123. clearRangeButton.setId("clearRangeButton");
  124. dynamicDateField.setId("dynamicDateField");
  125. inlineDynamicDateField.setId("inlineDynamicDateField");
  126. }
  127. @Override
  128. protected void setup(VaadinRequest request) {
  129. setLocale(new Locale("en", "US"));
  130. getLayout().setWidth(100, Unit.PERCENTAGE);
  131. getLayout().setHeight(null);
  132. getLayout().setMargin(new MarginInfo(true, false, false, false));
  133. getLayout().setSpacing(true);
  134. initializeControlFields();
  135. GridLayout gl = new GridLayout(2, 2);
  136. gl.setSpacing(true);
  137. gl.addComponent(dynamicDateField);
  138. gl.addComponent(inlineDynamicDateField);
  139. HorizontalLayout hl = new HorizontalLayout();
  140. hl.setSpacing(true);
  141. hl.addComponent(resoSelect);
  142. hl.addComponent(fromRange);
  143. hl.addComponent(toRange);
  144. hl.addComponent(valueDF);
  145. hl.addComponent(immediateCB);
  146. hl.addComponent(recreate);
  147. hl.addComponent(clearRangeButton);
  148. addComponent(hl);
  149. addComponent(new Label("Dynamic DateFields"));
  150. addComponent(gl);
  151. currentStaticContainer = createStaticFields();
  152. addComponent(new Label("Static DateFields"));
  153. addComponent(currentStaticContainer);
  154. addComponent(label);
  155. }
  156. private GridLayout createStaticFields() {
  157. Calendar startCal = createCalendar();
  158. Calendar endCal = createCalendar();
  159. endCal.add(Calendar.DATE, 30);
  160. GridLayout gl = new GridLayout(2, 2);
  161. gl.setSpacing(true);
  162. LegacyDateField df = createDateField(startCal.getTime(),
  163. endCal.getTime(), null, Resolution.DAY, false);
  164. gl.addComponent(df);
  165. LegacyDateField inline = createDateField(startCal.getTime(),
  166. endCal.getTime(), null, Resolution.DAY, true);
  167. gl.addComponent(inline);
  168. inline.setId("staticInline");
  169. VerticalLayout vl = new VerticalLayout();
  170. return gl;
  171. }
  172. private LegacyDateField createDateField(Date rangeStart, Date rangeEnd,
  173. Date value, Resolution resolution, boolean inline) {
  174. LegacyDateField df = null;
  175. if (inline) {
  176. df = new LegacyInlineDateField();
  177. } else {
  178. df = new LegacyDateField();
  179. }
  180. final LegacyDateField gg = df;
  181. updateValuesForDateField(df);
  182. df.addValueChangeListener(new ValueChangeListener() {
  183. @Override
  184. public void valueChange(ValueChangeEvent event) {
  185. label.setValue((gg.getValue() == null ? "Nothing"
  186. : gg.getValue().toString()) + " selected. isValid: "
  187. + gg.isValid());
  188. }
  189. });
  190. return df;
  191. }
  192. @Override
  193. protected String getTestDescription() {
  194. return "Not defined yet";
  195. }
  196. private void updateValuesForDateField(LegacyDateField df) {
  197. Date fromVal = fromRange.getValue();
  198. Date toVal = toRange.getValue();
  199. Date value = valueDF.getValue();
  200. Resolution r = (Resolution) resoSelect.getValue();
  201. boolean immediate = immediateCB.getValue();
  202. df.setValue(value);
  203. df.setResolution(r);
  204. df.setRangeStart(fromVal);
  205. df.setRangeEnd(toVal);
  206. df.setImmediate(immediate);
  207. }
  208. }