private void initialize() { this.getStyleClass().add(DEFAULT_STYLE_CLASS); try { editorProperty(); Field editorField = DatePicker.class.getDeclaredField("editor"); editorField.setAccessible(true); ReadOnlyObjectWrapper<TextField> editor = (ReadOnlyObjectWrapper<TextField>) editorField.get(this); final FakeFocusJFXTextField editorNode = new FakeFocusJFXTextField(); this.focusedProperty().addListener((obj, oldVal, newVal) -> { if (getEditor() != null) { editorNode.setFakeFocus(newVal); } }); editorNode.activeValidatorWritableProperty().bind(activeValidatorProperty()); editor.set(editorNode); } catch (NoSuchFieldException e) { } catch (IllegalAccessException e) { } }
this.jfxDatePicker = datePicker; try { Field helper = datePicker.focusedProperty().getClass().getSuperclass() .getDeclaredField("helper"); helper.setAccessible(true); ExpressionHelper value = (ExpressionHelper) helper.get(datePicker.focusedProperty()); Field changeListenersField = value.getClass().getDeclaredField("changeListeners"); changeListenersField.setAccessible(true); datePicker.focusedProperty().removeListener(changeListeners[i]); break; datePicker.focusedProperty().addListener((obj, oldVal, newVal) -> { if (getEditor() != null && !newVal) { setTextFromTextFieldIntoComboBoxValue(); + " 960h-832v-704h832v704z", null); ((SVGGlyph) arrow).setFill(jfxDatePicker.getDefaultColor()); ((SVGGlyph) arrow).setSize(20, 20); arrowButton.getChildren().setAll(arrow); ((JFXTextField) getEditor()).setFocusColor(jfxDatePicker.getDefaultColor()); registerChangeListener(datePicker.converterProperty(), "CONVERTER"); registerChangeListener(datePicker.dayCellFactoryProperty(), "DAY_CELL_FACTORY"); registerChangeListener(datePicker.showWeekNumbersProperty(), "SHOW_WEEK_NUMBERS"); registerChangeListener(datePicker.valueProperty(), "VALUE"); registerChangeListener(datePicker.defaultColorProperty(), "DEFAULT_COLOR");
public final void setDialogParent(final StackPane dialogParent) { this.dialogParentProperty().set(dialogParent); }
datePicker.focusedProperty().addListener(observable -> { if (getEditor() != null && !datePicker.isFocused()) { reflectSetTextFromTextFieldIntoComboBoxValue(); ((JFXTextField) getEditor()).setFocusColor(jfxDatePicker.getDefaultColor()); registerChangeListener(datePicker.defaultColorProperty(), obs -> updateArrow(datePicker)); registerChangeListener(datePicker.converterProperty(), obs -> reflectUpdateDisplayNode()); registerChangeListener(datePicker.editableProperty(), obs -> reflectGetEditableInputNode()); registerChangeListener(datePicker.dayCellFactoryProperty(), obs -> { reflectUpdateDisplayNode(); content = null; registerChangeListener(datePicker.valueProperty(), obs -> { reflectUpdateDisplayNode(); if (content != null) { LocalDate date = jfxDatePicker.getValue(); content.displayedYearMonthProperty().set((date != null) ? YearMonth.from(date) : YearMonth.now()); content.updateValues(); jfxDatePicker.fireEvent(new ActionEvent()); }); registerChangeListener(datePicker.showWeekNumbersProperty(), obs -> { if (content != null) { registerChangeListener(datePicker.showingProperty(), obs -> { if (jfxDatePicker.isShowing()) {
@Override protected void handleControlPropertyChanged(String p) { if ("DEFAULT_COLOR".equals(p)) { ((JFXTextField) getEditor()).setFocusColor(jfxDatePicker.getDefaultColor()); } else if ("DAY_CELL_FACTORY".equals(p)) { updateDisplayNode(); getEditableInputNode(); } else if ("SHOWING".equals(p)) { if (jfxDatePicker.isShowing()) { if (content != null) { LocalDate date = jfxDatePicker.getValue(); updateDisplayNode(); if (content != null) { LocalDate date = jfxDatePicker.getValue(); content.displayedYearMonthProperty().set((date != null) ? YearMonth.from(date) : YearMonth.now()); content.updateValues(); jfxDatePicker.fireEvent(new ActionEvent()); } else { super.handleControlPropertyChanged(p);
protected void updateMonthYearPane() { // update date labels YearMonth yearMonth = selectedYearMonth.get(); LocalDate value = datePicker.getValue(); value = value == null ? LocalDate.now() : value; selectedDateLabel.setText(DateTimeFormatter.ofPattern("EEE, MMM dd").format(value)); selectedYearLabel.setText(formatYear(yearMonth)); monthYearLabel.setText(formatMonth(yearMonth) + " " + formatYear(yearMonth)); Chronology chrono = datePicker.getChronology(); LocalDate firstDayOfMonth = yearMonth.atDay(1); backMonthButton.setDisable(!isValidDate(chrono, firstDayOfMonth, -1, DAYS)); forwardMonthButton.setDisable(!isValidDate(chrono, firstDayOfMonth, +1, MONTHS)); }
/** * this method must be overriden when implementing other Chronolgy */ protected Chronology getPrimaryChronology() { return datePicker.getChronology(); }
@Override public StyleableProperty<Paint> getStyleableProperty(JFXDatePicker control) { return control.defaultColorProperty(); } };
@Override public List<CssMetaData<? extends Styleable, ?>> getControlCssMetaData() { if (STYLEABLES == null) { final List<CssMetaData<? extends Styleable, ?>> styleables = new ArrayList<>(Control.getClassCssMetaData()); styleables.addAll(getClassCssMetaData()); styleables.addAll(DatePicker.getClassCssMetaData()); STYLEABLES = Collections.unmodifiableList(styleables); } return STYLEABLES; }
protected void updateMonthYearPane() { // update date labels YearMonth yearMonth = selectedYearMonth.get(); LocalDate value = datePicker.getValue(); value = value == null ? LocalDate.now() : value; selectedDateLabel.setText(DateTimeFormatter.ofPattern("EEE, MMM dd").format(value)); selectedYearLabel.setText(formatYear(yearMonth)); monthYearLabel.setText(formatMonth(yearMonth) + " " + formatYear(yearMonth)); Chronology chrono = datePicker.getChronology(); LocalDate firstDayOfMonth = yearMonth.atDay(1); backMonthButton.setDisable(!isValidDate(chrono, firstDayOfMonth, -1, DAYS)); forwardMonthButton.setDisable(!isValidDate(chrono, firstDayOfMonth, +1, MONTHS)); }
private void goToDate(LocalDate date, boolean focusDayCell) { if (isValidDate(datePicker.getChronology(), date)) { selectedYearMonth.set(YearMonth.from(date)); if (focusDayCell) { findDayCellOfDate(date).requestFocus(); } } }
@Override public StyleableProperty<Paint> getStyleableProperty(JFXDatePicker control) { return control.defaultColorProperty(); } };
@Override public List<CssMetaData<? extends Styleable, ?>> getControlCssMetaData() { if (STYLEABLES == null) { final List<CssMetaData<? extends Styleable, ?>> styleables = new ArrayList<>(Control.getClassCssMetaData()); styleables.addAll(getClassCssMetaData()); styleables.addAll(DatePicker.getClassCssMetaData()); STYLEABLES = Collections.unmodifiableList(styleables); } return STYLEABLES; }
private void initialize() { this.getStyleClass().add(DEFAULT_STYLE_CLASS); editorProperty(); ReadOnlyObjectWrapper<TextField> editor = ReflectionHelper.getFieldContent(DatePicker.class, this, "editor" ); final FakeFocusJFXTextField editorNode = new FakeFocusJFXTextField(); this.focusedProperty().addListener((obj, oldVal, newVal) -> { if (getEditor() != null) { editorNode.setFakeFocus(newVal); } }); editorNode.activeValidatorWritableProperty().bind(activeValidatorProperty()); editor.set(editorNode); }
/** * this method must be overriden when implementing other Chronolgy */ protected Chronology getPrimaryChronology() { return datePicker.getChronology(); }
public final StackPane getDialogParent() { return this.dialogParentProperty().get(); }
private void goToDate(LocalDate date, boolean focusDayCell) { if (isValidDate(datePicker.getChronology(), date)) { selectedYearMonth.set(YearMonth.from(date)); if (focusDayCell) { findDayCellOfDate(date).requestFocus(); } } }
public final StackPane getDialogParent() { return this.dialogParentProperty().get(); }
public final void setDialogParent(final StackPane dialogParent) { this.dialogParentProperty().set(dialogParent); }