@@ -24,6 +24,7 @@ public class ChangeWithTimeDialog {
2424
2525 private static final Logger LOG = LoggerFactory .getLogger (ChangeWithTimeDialog .class );
2626 private static final String TIME_ZERO = "00:00:00" ;
27+ private static final int BIG_SLIDER_STEP = 5 ;
2728
2829 private LongProperty activeWorkSecondsProperty ;
2930 private Model model ;
@@ -56,8 +57,6 @@ public void setUpDialog(final Project p) {
5657 grid .add (new Label ("Minutes to transfer" ), 0 , gridRow );
5758 final Slider slider = setUpSliderChangeWithTimeMenuItem (activeWorkSecondsProperty );
5859
59- okButton .setOnKeyPressed (ke -> slider .requestFocus ());
60-
6160 grid .add (slider , 1 , gridRow );
6261 final Label minutesToTransferLabel = new Label ("999 minute(s)" );
6362 grid .add (minutesToTransferLabel , 2 , gridRow );
@@ -78,7 +77,6 @@ public void setUpDialog(final Project p) {
7877 grid .add (new Label ("New project duration: " + p .getName ()), 0 , gridRow );
7978 final Label newProjectTimeLabel = new Label (TIME_ZERO );
8079 grid .add (newProjectTimeLabel , 1 , gridRow );
81- gridRow ++;
8280
8381 final Runnable updateLabelsRunnable = () -> {
8482 final long minutesOffset = slider .valueProperty ().longValue ();
@@ -96,6 +94,13 @@ public void setUpDialog(final Project p) {
9694 slider .valueProperty ().addListener ((obs , oldValue , newValue ) -> updateLabelsRunnable .run ());
9795 vBox .getChildren ().add (grid );
9896
97+ // hack to get focus on slider (doesn't work with dialog.setOnShowing(...) or dialog.setOnShown(...))
98+ okButton .setOnKeyPressed (keyEvent -> {
99+ if ((keyEvent .getCode () == KeyCode .LEFT || keyEvent .getCode () == KeyCode .RIGHT ) && !slider .isFocused ()) {
100+ slider .requestFocus ();
101+ }
102+ });
103+
99104 dialog .getDialogPane ().setContent (vBox );
100105
101106 dialog .setResultConverter (dialogButton -> {
@@ -143,6 +148,7 @@ private Slider setUpSliderChangeWithTimeMenuItem(final LongProperty activeWorkSe
143148 slider .setSnapToTicks (true );
144149 slider .setFocusTraversable (true );
145150
151+ // allows you to make bigger steps with arrow keys on slider if ctrl is pressed
146152 slider .setOnKeyPressed (ke -> {
147153 if (!slider .isFocused ()) {
148154 slider .requestFocus ();
@@ -153,11 +159,11 @@ private Slider setUpSliderChangeWithTimeMenuItem(final LongProperty activeWorkSe
153159 }
154160
155161 if (ke .getCode () == KeyCode .LEFT && ctrlIsPressed ) {
156- slider .adjustValue (slider .getValue () - 5 );
162+ slider .adjustValue (slider .getValue () - BIG_SLIDER_STEP );
157163 }
158164
159165 if (ke .getCode () == KeyCode .RIGHT && ctrlIsPressed ) {
160- slider .adjustValue (slider .getValue () + 5 );
166+ slider .adjustValue (slider .getValue () + BIG_SLIDER_STEP );
161167 }
162168
163169 });
0 commit comments