Skip to content

Commit d3855c2

Browse files
authored
Merge pull request #34 from doubleSlashde/feature/windowsAndDownToMinimize
added shortcut (win + down) to minimize main window
2 parents 5edfaa2 + efcd862 commit d3855c2

File tree

2 files changed

+32
-4
lines changed

2 files changed

+32
-4
lines changed

src/main/java/de/doubleslash/keeptime/Main.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@
5050
import javafx.scene.control.Alert.AlertType;
5151
import javafx.scene.control.Label;
5252
import javafx.scene.control.TextArea;
53+
import javafx.scene.input.KeyCode;
54+
import javafx.scene.input.KeyCodeCombination;
55+
import javafx.scene.input.KeyCombination;
56+
import javafx.scene.input.KeyEvent;
5357
import javafx.scene.layout.GridPane;
5458
import javafx.scene.layout.Pane;
5559
import javafx.scene.layout.Priority;
@@ -239,6 +243,8 @@ private void initialiseUI(final Stage primaryStage) throws IOException {
239243
// Show the scene containing the root layout.
240244
final Scene mainScene = new Scene(mainPane, Color.TRANSPARENT);
241245

246+
registerMinimizeEventlistener(mainScene, primaryStage);
247+
registerMaximizeEventlistener(mainScene, primaryStage);
242248
// Image(Resources.getResource(RESOURCE.ICON_MAIN).toString())); // TODO use an app icon
243249

244250
primaryStage.setTitle("KeepTime");
@@ -260,6 +266,28 @@ public void handle(final WindowEvent event) {
260266

261267
}
262268

269+
private void registerMinimizeEventlistener(final Scene mainScene, final Stage primaryStage) {
270+
final KeyCombination keyComb = new KeyCodeCombination(KeyCode.DOWN, KeyCombination.META_DOWN);
271+
mainScene.addEventFilter(KeyEvent.KEY_RELEASED, keyEvent -> {
272+
if (keyComb.match(keyEvent)) {
273+
LOG.info("KeyCombination '{}' was pressed: Minimizing window.", keyComb);
274+
primaryStage.setIconified(true);
275+
keyEvent.consume();
276+
}
277+
});
278+
}
279+
280+
private void registerMaximizeEventlistener(final Scene mainScene, final Stage primaryStage) {
281+
final KeyCombination keyComb = new KeyCodeCombination(KeyCode.UP, KeyCombination.META_DOWN);
282+
mainScene.addEventFilter(KeyEvent.KEY_RELEASED, keyEvent -> {
283+
if (keyComb.match(keyEvent)) {
284+
LOG.info("KeyCombination '{}' was pressed: Maximizing window.", keyComb);
285+
primaryStage.setIconified(false);
286+
keyEvent.consume();
287+
}
288+
});
289+
}
290+
263291
@Override
264292
public void stop() throws Exception {
265293
springContext.stop();

src/main/java/de/doubleslash/keeptime/view/ViewController.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -445,16 +445,16 @@ private void loadSubStages() {
445445
try {
446446
// Report stage
447447
final FXMLLoader fxmlLoader = createFXMLLoader(RESOURCE.FXML_REPORT);
448-
final Parent sceneRoot = fxmlLoader.load();
449-
sceneRoot.setFocusTraversable(true);
450-
sceneRoot.requestFocus();
448+
final Parent root = fxmlLoader.load();
449+
root.setFocusTraversable(true);
450+
root.requestFocus();
451451
reportController = fxmlLoader.getController();
452452
reportController.setModel(model);
453453
reportController.setController(controller);
454454
reportStage = new Stage();
455455
reportStage.initModality(Modality.APPLICATION_MODAL);
456456

457-
final Scene reportScene = new Scene(sceneRoot);
457+
final Scene reportScene = new Scene(root);
458458
reportScene.setOnKeyPressed(ke -> {
459459
if (ke.getCode() == KeyCode.ESCAPE) {
460460
LOG.info("pressed ESCAPE");

0 commit comments

Comments
 (0)