From ea73ab687b86579fa34cecff28e13aa0b7b198ba Mon Sep 17 00:00:00 2001 From: Harkamal Randhawa Date: Mon, 20 Apr 2026 10:41:49 -0600 Subject: [PATCH] auto-refresh product list --- .../controllers/ProductController.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/desktop/src/main/java/org/example/petshopdesktop/controllers/ProductController.java b/desktop/src/main/java/org/example/petshopdesktop/controllers/ProductController.java index 07b94d0a..31f4164c 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/controllers/ProductController.java +++ b/desktop/src/main/java/org/example/petshopdesktop/controllers/ProductController.java @@ -1,5 +1,7 @@ package org.example.petshopdesktop.controllers; +import javafx.animation.KeyFrame; +import javafx.animation.Timeline; import javafx.application.Platform; import javafx.collections.FXCollections; import javafx.collections.ObservableList; @@ -8,6 +10,7 @@ import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.geometry.Pos; import javafx.scene.Scene; +import javafx.util.Duration; import javafx.scene.control.*; import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.image.ImageView; @@ -78,8 +81,9 @@ public class ProductController { private TextField txtSearch; //data declaration - private ObservableList data = FXCollections.observableArrayList(); //empty + private ObservableList data = FXCollections.observableArrayList(); private String mode = null; + private Timeline refreshTimer; /** * Set up the table view for products and display it when starting up @@ -130,6 +134,15 @@ public class ProductController { } }); + refreshTimer = new Timeline(new KeyFrame(Duration.seconds(30), e -> applyFilters())); + refreshTimer.setCycleCount(Timeline.INDEFINITE); + refreshTimer.play(); + tvProducts.sceneProperty().addListener((obs, oldScene, newScene) -> { + if (newScene == null && refreshTimer != null) { + refreshTimer.stop(); + } + }); + } /**