Skip to content

Commit

Permalink
Centralized key event handling for paging controls.
Browse files Browse the repository at this point in the history
  • Loading branch information
dlemmermann committed Dec 4, 2024
1 parent 224e690 commit 0e6215a
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 25 deletions.
17 changes: 16 additions & 1 deletion gemsfx/src/main/java/com/dlsc/gemsfx/PagingControlBase.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,13 @@
import javafx.geometry.HPos;
import javafx.scene.Node;
import javafx.scene.control.Control;
import javafx.scene.control.Label;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.Region;
import javafx.util.Callback;

import java.util.Objects;

public abstract class PagingControlBase extends Control {

public PagingControlBase() {
Expand Down Expand Up @@ -50,6 +53,18 @@ public PagingControlBase() {
Region lastPageDivider = new Region();
lastPageDivider.getStyleClass().addAll("page-divider", "last-page-divider");
setLastPageDivider(lastPageDivider);

addEventFilter(KeyEvent.KEY_PRESSED, evt -> {
if (Objects.equals(evt.getCode(), KeyCode.RIGHT) || Objects.equals(evt.getCode(), KeyCode.PAGE_DOWN)) {
nextPage();
} else if (Objects.equals(evt.getCode(), KeyCode.LEFT) || Objects.equals(evt.getCode(), KeyCode.PAGE_UP)) {
previousPage();
} else if (Objects.equals(evt.getCode(), KeyCode.HOME)) {
firstPage();
} else if (Objects.equals(evt.getCode(), KeyCode.END)) {
lastPage();
}
});
}

private final BooleanProperty showPreviousNextPageButton = new SimpleBooleanProperty(this, "showPreviousNextButton", true);
Expand Down
14 changes: 0 additions & 14 deletions gemsfx/src/main/java/com/dlsc/gemsfx/PagingControls.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

import com.dlsc.gemsfx.skins.PagingControlsSkin;
import javafx.scene.control.Skin;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseEvent;

import java.util.Objects;
Expand All @@ -22,18 +20,6 @@ public PagingControls() {
getStyleClass().add(DEFAULT_STYLE_CLASS);

addEventFilter(MouseEvent.MOUSE_PRESSED, evt -> requestFocus());

addEventHandler(KeyEvent.KEY_PRESSED, evt -> {
if (Objects.equals(evt.getCode(), KeyCode.RIGHT)) {
nextPage();
} else if (Objects.equals(evt.getCode(), KeyCode.LEFT)) {
previousPage();
} else if (Objects.equals(evt.getCode(), KeyCode.HOME)) {
firstPage();
} else if (Objects.equals(evt.getCode(), KeyCode.END)) {
lastPage();
}
});
}

@Override
Expand Down
10 changes: 0 additions & 10 deletions gemsfx/src/main/java/com/dlsc/gemsfx/PagingListView.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@
import javafx.scene.control.MultipleSelectionModel;
import javafx.scene.control.SelectionMode;
import javafx.scene.control.Skin;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.util.Callback;

import java.util.Collections;
Expand Down Expand Up @@ -88,14 +86,6 @@ protected void updateItem(T item, boolean empty) {
pageProperty().addListener(weakUpdateListener);
cellFactoryProperty().addListener(weakUpdateListener);

addEventFilter(KeyEvent.KEY_PRESSED, evt -> {
if (evt.getCode() == KeyCode.RIGHT) {
nextPage();
} else if (evt.getCode() == KeyCode.LEFT) {
previousPage();
}
});

refresh();
}

Expand Down

0 comments on commit 0e6215a

Please sign in to comment.