Skip to content

Commit

Permalink
Merge pull request #114 from dlsc-software-consulting-gmbh/fix-date-r…
Browse files Browse the repository at this point in the history
…ange-picker-focus-issue

Fix missing focus issue on date range picker;
  • Loading branch information
dlemmermann authored Feb 23, 2024
2 parents 556516d + 82ba217 commit 89d0371
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 15 deletions.
Original file line number Diff line number Diff line change
@@ -1,20 +1,17 @@
package com.dlsc.gemsfx.daterange;

import com.dlsc.gemsfx.skins.DateRangePickerSkin;
import javafx.beans.property.*;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Side;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.scene.control.ComboBoxBase;
import javafx.scene.control.Skin;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.time.temporal.TemporalAdjusters;
import java.time.temporal.TemporalField;
import java.time.temporal.WeekFields;
import java.util.Locale;
import java.util.Objects;

/**
Expand All @@ -39,8 +36,6 @@ public DateRangePicker() {

getStyleClass().add("date-range-picker");
getStylesheets().add(getUserAgentStylesheet());

setOnMouseClicked(evt -> requestFocus());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,22 +19,23 @@

public class DateRangePickerSkin extends CustomComboBoxSkinBase<DateRangePicker> {

private final DateRangePicker picker;
private final DateRangeView view;
private Label titleLabel;
private Label rangeLabel;

private final DateRangeView view;
private HBox hBox;

public DateRangePickerSkin(DateRangePicker picker) {
super(picker);
this.picker = picker;

view = picker.getDateRangeView();
view.setFocusTraversable(false); // keep the picker focused / blue border
view.valueProperty().bindBidirectional(getSkinnable().valueProperty());
view.setOnClose(this::hide);

picker.setOnMouseClicked(evt -> picker.show());
picker.setOnTouchPressed(evt -> picker.show());
picker.setOnMouseClicked(evt -> showPicker());
picker.setOnTouchPressed(evt -> showPicker());

InvalidationListener updateLabelsListener = it -> updateLabels();
picker.valueProperty().addListener(updateLabelsListener);
Expand All @@ -47,6 +48,11 @@ public DateRangePickerSkin(DateRangePicker picker) {
updateLabels();
}

private void showPicker() {
picker.requestFocus();
picker.show();
}

@Override
protected double computePrefHeight(double width, double v1, double v2, double v3, double v4) {
return hBox.prefHeight(width);
Expand Down

0 comments on commit 89d0371

Please sign in to comment.