diff --git a/app/display/model/src/main/resources/examples/controls_spinner_slider_scrollbar.bob b/app/display/model/src/main/resources/examples/controls_spinner_slider_scrollbar.bob index cc34519523..f3fe26358b 100644 --- a/app/display/model/src/main/resources/examples/controls_spinner_slider_scrollbar.bob +++ b/app/display/model/src/main/resources/examples/controls_spinner_slider_scrollbar.bob @@ -1,5 +1,5 @@ - + Spinner Slider Scrollbar Scrollbar @@ -45,7 +45,6 @@ 110 220 false - #.## Label_3 @@ -70,18 +69,16 @@ Label_5 - The value can be adjusted both with -the mouse and, when the widget is in -focus, using the arrow keys and -page up/down keys. + The value can be adjusted both with the mouse and, when the widget is in focus, using the arrow keys and page up/down keys. + Up/Down arrow keys and Page Up/Down keys will change the value by 1 step size + Ctrl + Up/Down arrow keys will change the value by 5 x step size + Ctrl + Left/Right arrow keys to make changes at 10 x step szie -The "increment" property of the widget -determines the step size when using -the keyboard. - 143 - 191 - 238 - 189 +The "increment" property of the widget determines the step size when using the keyboard. + 141 + 160 + 579 + 250 Scaled Slider_1 @@ -90,7 +87,6 @@ the keyboard. 429 419 61 - #.## false diff --git a/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/SpinnerRepresentation.java b/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/SpinnerRepresentation.java index f8ee0881db..aad488ca8c 100644 --- a/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/SpinnerRepresentation.java +++ b/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/SpinnerRepresentation.java @@ -105,16 +105,50 @@ else if(focused){ } break; //incrementing by keyboard + //isShiftDown(), isControlDown(), isAltDown(), and isMetaDown() + case LEFT: + if(event.isControlDown()) { + spinner.getValueFactory().increment(10); + } + break; + case RIGHT: + if(event.isControlDown()) { + spinner.getValueFactory().decrement(10); + } + break; case UP: + if (!active) { + if(event.isControlDown()) { + spinner.getValueFactory().increment(5); + } + else { + spinner.getValueFactory().increment(1); + } + } + break; case PAGE_UP: - if (!active) - spinner.getValueFactory().increment(1); + if (!active) { + spinner.getValueFactory().increment(1); + } break; case DOWN: + if (!active) { + if(event.isControlDown()) { + spinner.getValueFactory().decrement(5); + } + else { + spinner.getValueFactory().decrement(1); + } + } + break; case PAGE_DOWN: - if (!active) - spinner.getValueFactory().decrement(1); + if (!active) { + spinner.getValueFactory().decrement(1); + } break; + case CONTROL: + setActive(false); + break; default: // Any other key results in active state setActive(true); @@ -608,3 +642,4 @@ private void setActive(final boolean active) updateChanges(); } } +