/** * Constructs a new <code>DateField</code> with the given caption and * initial text contents. The editor constructed this way will not be bound * to a Property unless * {@link Property.Viewer#setPropertyDataSource(Property)} is called to bind * it. * * @param caption * the caption <code>String</code> for the editor. * @param value * the Date value. */ public DateField(String caption, Date value) { setValue(value); setCaption(caption); }
@Override public void readDesign(Element design, DesignContext designContext) { super.readDesign(design, designContext); if (design.hasAttr("value") && !design.attr("value").isEmpty()) { Date date = DesignAttributeHandler.getFormatter() .parse(design.attr("value"), Date.class); // formatting will return null if it cannot parse the string if (date == null) { Logger.getLogger(DateField.class.getName()).info( "cannot parse " + design.attr("value") + " as date"); } this.setValue(date, false, true); } }
@Override public void setValue(DateInterval newFieldValue) throws com.vaadin.v7.data.Property.ReadOnlyException, ConversionException { if (newFieldValue == null) { newFieldValue = new DateInterval(null, null); } fromField.setValue(newFieldValue.getFrom()); toField.setValue(newFieldValue.getTo()); super.setValue(newFieldValue); updateCaption(newFieldValue.isNull()); }
@Override protected void setValue(Date newValue, boolean repaintIsNotNeeded) throws ReadOnlyException { if (settingInitialValue && getResolution().ordinal() > Resolution.HOUR.ordinal()) { if (getInitialTimeMode() == InitialTimeMode.START_OF_DAY) { newValue.setHours(0); newValue.setMinutes(0); newValue.setSeconds(0); newValue.setTime( newValue.getTime() - newValue.getTime() % 1000l); } else if (getInitialTimeMode() == InitialTimeMode.END_OF_DAY) { newValue.setHours(23); newValue.setMinutes(59); newValue.setSeconds(59); newValue.setTime( newValue.getTime() - newValue.getTime() % 1000l + 999l); } } super.setValue(newValue, repaintIsNotNeeded); }
private void updateValue(boolean nullTheValue) { if (nullTheValue) { fromField.setValue(null); toField.setValue(null); } else { cancelReset = true; } /* Truncate the from and to dates */ Resolution res = decorator != null ? decorator.getDateFieldResolution(propertyId) : DEFAULT_RESOLUTION; if (res == null) { res = DEFAULT_RESOLUTION; } fromValue = truncateDate(fromField.getValue(), res, true); toValue = truncateDate(toField.getValue(), res, false); setValue(new DateInterval(fromValue, toValue)); DateFilterPopup.this.content.setPopupVisible(false); }
@Override protected Component initContent() { if (content == null) { content = new PopupButton(null); content.setWidth(100, Unit.PERCENTAGE); setImmediate(true); buildPopup(); setStyleName("datefilterpopup"); setFilterDecorator(decorator); updateCaption(true); content.addPopupVisibilityListener(event -> { if (cancelReset || event.getPopupButton().isPopupVisible()) { fromValue = fromField.getValue(); toValue = toField.getValue(); cancelReset = false; return; } fromField.setValue(fromValue); toField.setValue(toValue); cancelReset = false; }); } return content; }
@Test public void validationFailsIfRequiredFieldIsEmpty() throws Exception { // GIVEN dateFieldDefinition.setRequired(true); createField(); DateField dateField = getSubFieldWithType(DateField.class); dateField.setValue(null); // WHEN boolean isValid = compositeField.isValid(); // THEN assertFalse(isValid); }