public DatePickerPanel(Element wrap) { addStyleName(Style.DATE_PICKER_PANEL); if (wrap == null) { dateBox = new DatePickerText(this); add(dateBox); } else { dateBox = DatePickerText.wrapDatePickerText(this, wrap); } dateBox.addValueChangeHandler( new ValueChangeHandler<String>() { @Override public void onValueChange(ValueChangeEvent<String> event) { value = null; try { String date = dateBox.getValue(); if (date != null && !date.isEmpty()) { value = DF.parse(dateBox.getValue()); } } catch (Exception e) { } } }); dateBox.addValueChangeHandler( new ValueChangeHandler<String>() { @Override public void onValueChange(ValueChangeEvent<String> event) { setValue(DatePickerPanel.this.getValue(), true); } }); if (wrap == null) { setValue(new Date()); } }
private DatePickerBox getDatePickerBox() { if (dpb == null) { dpb = new DatePickerBox(); dpb.hide(); dpb.setValue(getValue()); final Command cmd = new Command() { @Override public void execute() { if (lastOne != null) { lastOne.hide(); lastOne = null; } lastOne = dpb; dpb.setValue(getValue()); dpb.setPopupPositionAndShow( new PositionCallback() { @Override public void setPosition(int offsetWidth, int offsetHeight) { if (showOnTop) { dpb.setPopupPosition( dateBox.getAbsoluteLeft(), dateBox.getAbsoluteTop() - offsetHeight); } else { dpb.setPopupPosition( dateBox.getAbsoluteLeft(), dateBox.getAbsoluteTop() + dateBox.getOffsetHeight()); } } }); } }; dateBox.addKeyUpHandler( new KeyUpHandler() { @Override public void onKeyUp(KeyUpEvent event) { dpb.setValue(DatePickerPanel.this.getValue(), false); } }); dateBox.addFocusHandler( new FocusHandler() { @Override public void onFocus(FocusEvent event) { cmd.execute(); } }); dpb.addValueChangeHandler( new ValueChangeHandler<Date>() { @Override public void onValueChange(ValueChangeEvent<Date> event) { setValue(event.getValue(), true); dpb.hide(); lastOne = null; } }); } return dpb; }
public static DatePickerText wrapDatePickerText(DatePickerPanel owner, Element element) { // Assert that the element is attached. assert Document.get().getBody().isOrHasChild(element); DatePickerText textBox = new DatePickerText(owner, element); // Mark it attached and remember it for cleanup. textBox.onAttach(); return textBox; }
@Override public void setValue(Date value, boolean fireEvents) { this.value = value; if (value != null) { dateBox.setText(DF.format(value)); } else { dateBox.setText(null); } if (fireEvents) { ValueChangeEvent.fire(this, value); } }
public void setEnabled(boolean enabled) { dateBox.setEnabled(enabled); }