From 22981606503cde4f81bd6ddc10756b11d61343f8 Mon Sep 17 00:00:00 2001 From: Harkamal Randhawa Date: Mon, 20 Apr 2026 17:51:03 -0600 Subject: [PATCH] comment desktop models and utils --- desktop/src/main/java/module-info.java | 6 +++++ .../petshopdesktop/DTOs/AppointmentDTO.java | 6 +++++ .../petshopdesktop/DTOs/ProductDTO.java | 6 +++++ .../DTOs/ProductSupplierDTO.java | 6 +++++ .../petshopdesktop/DTOs/PurchaseOrderDTO.java | 6 +++++ .../example/petshopdesktop/DTOs/SaleDTO.java | 6 +++++ .../petshopdesktop/DTOs/ServiceDTO.java | 8 ++++++- .../org/example/petshopdesktop/Launcher.java | 6 +++++ .../petshopdesktop/PetShopApplication.java | 6 +++++ .../org/example/petshopdesktop/Validator.java | 6 +++++ .../org/example/petshopdesktop/auth/Role.java | 6 +++++ .../petshopdesktop/auth/UserSession.java | 6 +++++ .../petshopdesktop/models/Adoption.java | 6 +++++ .../petshopdesktop/models/Appointment.java | 8 ++++++- .../petshopdesktop/models/Category.java | 6 +++++ .../petshopdesktop/models/Customer.java | 6 +++++ .../petshopdesktop/models/Inventory.java | 6 +++++ .../example/petshopdesktop/models/Pet.java | 6 +++++ .../petshopdesktop/models/Product.java | 6 +++++ .../models/ProductSupplier.java | 6 +++++ .../petshopdesktop/models/PurchaseOrder.java | 8 ++++++- .../petshopdesktop/models/SaleCartItem.java | 6 +++++ .../petshopdesktop/models/SaleDetail.java | 6 +++++ .../petshopdesktop/models/SaleLineItem.java | 6 +++++ .../petshopdesktop/models/Service.java | 8 ++++++- .../petshopdesktop/models/StaffAccount.java | 6 +++++ .../petshopdesktop/models/Supplier.java | 6 +++++ .../example/petshopdesktop/models/User.java | 6 +++++ .../models/analytics/DailySalesData.java | 6 +++++ .../models/analytics/EmployeeSalesData.java | 6 +++++ .../models/analytics/PaymentMethodData.java | 6 +++++ .../models/analytics/ProductSalesData.java | 6 +++++ .../models/analytics/SalesSummary.java | 6 +++++ .../petshopdesktop/ui/CalendarPane.java | 23 +++++++++++++++++++ .../petshopdesktop/ui/SvgWebViewFactory.java | 6 +++++ .../petshopdesktop/util/ActivityLogger.java | 6 +++++ .../util/DesktopImageSupport.java | 6 +++++ .../util/DesktopNotificationService.java | 6 +++++ .../util/FilePickerSupport.java | 6 +++++ .../petshopdesktop/util/TableViewSupport.java | 21 +++++++++++++++++ .../util/TextFieldFormatSupport.java | 6 +++++ 41 files changed, 282 insertions(+), 4 deletions(-) diff --git a/desktop/src/main/java/module-info.java b/desktop/src/main/java/module-info.java index 93a6704e..1a504108 100644 --- a/desktop/src/main/java/module-info.java +++ b/desktop/src/main/java/module-info.java @@ -1,3 +1,9 @@ +/* + * Module descriptor for the pet shop desktop application. + * + * Author: Harkamal + * Date: April 2026 + */ module org.example.petshopdesktop { requires javafx.controls; requires javafx.fxml; diff --git a/desktop/src/main/java/org/example/petshopdesktop/DTOs/AppointmentDTO.java b/desktop/src/main/java/org/example/petshopdesktop/DTOs/AppointmentDTO.java index 82b242b9..077d37df 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/DTOs/AppointmentDTO.java +++ b/desktop/src/main/java/org/example/petshopdesktop/DTOs/AppointmentDTO.java @@ -1,3 +1,9 @@ +/* + * Table-friendly wrapper for appointment data using JavaFX properties. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.DTOs; import javafx.beans.property.SimpleIntegerProperty; diff --git a/desktop/src/main/java/org/example/petshopdesktop/DTOs/ProductDTO.java b/desktop/src/main/java/org/example/petshopdesktop/DTOs/ProductDTO.java index 3270d6ca..425403bc 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/DTOs/ProductDTO.java +++ b/desktop/src/main/java/org/example/petshopdesktop/DTOs/ProductDTO.java @@ -1,3 +1,9 @@ +/* + * Table-friendly wrapper for product data using JavaFX properties. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.DTOs; import javafx.beans.property.SimpleDoubleProperty; diff --git a/desktop/src/main/java/org/example/petshopdesktop/DTOs/ProductSupplierDTO.java b/desktop/src/main/java/org/example/petshopdesktop/DTOs/ProductSupplierDTO.java index 8fb481b0..9e39a8fa 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/DTOs/ProductSupplierDTO.java +++ b/desktop/src/main/java/org/example/petshopdesktop/DTOs/ProductSupplierDTO.java @@ -1,3 +1,9 @@ +/* + * Table-friendly wrapper for product-supplier data using JavaFX properties. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.DTOs; import javafx.beans.property.SimpleDoubleProperty; diff --git a/desktop/src/main/java/org/example/petshopdesktop/DTOs/PurchaseOrderDTO.java b/desktop/src/main/java/org/example/petshopdesktop/DTOs/PurchaseOrderDTO.java index d30053cb..c12dd359 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/DTOs/PurchaseOrderDTO.java +++ b/desktop/src/main/java/org/example/petshopdesktop/DTOs/PurchaseOrderDTO.java @@ -1,3 +1,9 @@ +/* + * Table-friendly wrapper for purchase order data using JavaFX properties. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.DTOs; import javafx.beans.property.*; diff --git a/desktop/src/main/java/org/example/petshopdesktop/DTOs/SaleDTO.java b/desktop/src/main/java/org/example/petshopdesktop/DTOs/SaleDTO.java index a20bf5fd..37f91e2d 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/DTOs/SaleDTO.java +++ b/desktop/src/main/java/org/example/petshopdesktop/DTOs/SaleDTO.java @@ -1,3 +1,9 @@ +/* + * Table-friendly wrapper for sale data using JavaFX properties. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.DTOs; import javafx.beans.property.*; diff --git a/desktop/src/main/java/org/example/petshopdesktop/DTOs/ServiceDTO.java b/desktop/src/main/java/org/example/petshopdesktop/DTOs/ServiceDTO.java index c876cd3f..2b857bcd 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/DTOs/ServiceDTO.java +++ b/desktop/src/main/java/org/example/petshopdesktop/DTOs/ServiceDTO.java @@ -1,3 +1,9 @@ +/* + * Table-friendly wrapper for service data using JavaFX properties. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.DTOs; import javafx.beans.property.SimpleDoubleProperty; @@ -107,4 +113,4 @@ public class ServiceDTO { return service; } -} \ No newline at end of file +} diff --git a/desktop/src/main/java/org/example/petshopdesktop/Launcher.java b/desktop/src/main/java/org/example/petshopdesktop/Launcher.java index 70456482..02c3c863 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/Launcher.java +++ b/desktop/src/main/java/org/example/petshopdesktop/Launcher.java @@ -1,3 +1,9 @@ +/* + * Entry point that starts the JavaFX application. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop; import javafx.application.Application; diff --git a/desktop/src/main/java/org/example/petshopdesktop/PetShopApplication.java b/desktop/src/main/java/org/example/petshopdesktop/PetShopApplication.java index 18296405..24bf8718 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/PetShopApplication.java +++ b/desktop/src/main/java/org/example/petshopdesktop/PetShopApplication.java @@ -1,3 +1,9 @@ +/* + * Main JavaFX application that sets up and launches the window. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop; import javafx.application.Application; diff --git a/desktop/src/main/java/org/example/petshopdesktop/Validator.java b/desktop/src/main/java/org/example/petshopdesktop/Validator.java index 1a453556..5b473da1 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/Validator.java +++ b/desktop/src/main/java/org/example/petshopdesktop/Validator.java @@ -1,3 +1,9 @@ +/* + * Shared input validation methods used across the app. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop; public class Validator { diff --git a/desktop/src/main/java/org/example/petshopdesktop/auth/Role.java b/desktop/src/main/java/org/example/petshopdesktop/auth/Role.java index 64f38459..3c9a1042 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/auth/Role.java +++ b/desktop/src/main/java/org/example/petshopdesktop/auth/Role.java @@ -1,3 +1,9 @@ +/* + * Defines the roles a user can have in the system. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.auth; public enum Role { diff --git a/desktop/src/main/java/org/example/petshopdesktop/auth/UserSession.java b/desktop/src/main/java/org/example/petshopdesktop/auth/UserSession.java index cd5646f4..095c7ae8 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/auth/UserSession.java +++ b/desktop/src/main/java/org/example/petshopdesktop/auth/UserSession.java @@ -1,3 +1,9 @@ +/* + * Stores the currently logged-in user's session details. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.auth; public class UserSession { diff --git a/desktop/src/main/java/org/example/petshopdesktop/models/Adoption.java b/desktop/src/main/java/org/example/petshopdesktop/models/Adoption.java index 73f23afc..5575a26d 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/models/Adoption.java +++ b/desktop/src/main/java/org/example/petshopdesktop/models/Adoption.java @@ -1,3 +1,9 @@ +/* + * Represents an adoption record with JavaFX properties for table binding. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.models; import javafx.beans.property.SimpleDoubleProperty; diff --git a/desktop/src/main/java/org/example/petshopdesktop/models/Appointment.java b/desktop/src/main/java/org/example/petshopdesktop/models/Appointment.java index 7ab54292..c3181a40 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/models/Appointment.java +++ b/desktop/src/main/java/org/example/petshopdesktop/models/Appointment.java @@ -1,3 +1,9 @@ +/* + * Represents an appointment with JavaFX properties for table binding. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.models; import javafx.beans.property.SimpleIntegerProperty; @@ -43,4 +49,4 @@ public class Appointment { public SimpleStringProperty appointmentDateProperty() { return appointmentDate; } public SimpleStringProperty appointmentTimeProperty() { return appointmentTime; } public SimpleStringProperty appointmentStatusProperty() { return appointmentStatus; } -} \ No newline at end of file +} diff --git a/desktop/src/main/java/org/example/petshopdesktop/models/Category.java b/desktop/src/main/java/org/example/petshopdesktop/models/Category.java index 1f28182b..647ff623 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/models/Category.java +++ b/desktop/src/main/java/org/example/petshopdesktop/models/Category.java @@ -1,3 +1,9 @@ +/* + * Represents a product category with JavaFX properties for table binding. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.models; import javafx.beans.property.SimpleIntegerProperty; diff --git a/desktop/src/main/java/org/example/petshopdesktop/models/Customer.java b/desktop/src/main/java/org/example/petshopdesktop/models/Customer.java index 66602694..5103e0d3 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/models/Customer.java +++ b/desktop/src/main/java/org/example/petshopdesktop/models/Customer.java @@ -1,3 +1,9 @@ +/* + * Represents a customer with JavaFX properties for table binding. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.models; import javafx.beans.property.SimpleIntegerProperty; diff --git a/desktop/src/main/java/org/example/petshopdesktop/models/Inventory.java b/desktop/src/main/java/org/example/petshopdesktop/models/Inventory.java index 53f77543..85d3943d 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/models/Inventory.java +++ b/desktop/src/main/java/org/example/petshopdesktop/models/Inventory.java @@ -1,3 +1,9 @@ +/* + * Represents an inventory entry with JavaFX properties for table binding. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.models; import javafx.beans.property.SimpleIntegerProperty; diff --git a/desktop/src/main/java/org/example/petshopdesktop/models/Pet.java b/desktop/src/main/java/org/example/petshopdesktop/models/Pet.java index bc7e1a5c..bf983c36 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/models/Pet.java +++ b/desktop/src/main/java/org/example/petshopdesktop/models/Pet.java @@ -1,3 +1,9 @@ +/* + * Represents a pet with JavaFX properties for table binding. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.models; import javafx.beans.property.SimpleDoubleProperty; diff --git a/desktop/src/main/java/org/example/petshopdesktop/models/Product.java b/desktop/src/main/java/org/example/petshopdesktop/models/Product.java index bf0913e5..dd5f96cb 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/models/Product.java +++ b/desktop/src/main/java/org/example/petshopdesktop/models/Product.java @@ -1,3 +1,9 @@ +/* + * Represents a product with JavaFX properties for table binding. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.models; import javafx.beans.property.SimpleDoubleProperty; diff --git a/desktop/src/main/java/org/example/petshopdesktop/models/ProductSupplier.java b/desktop/src/main/java/org/example/petshopdesktop/models/ProductSupplier.java index e674974d..d3603f0d 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/models/ProductSupplier.java +++ b/desktop/src/main/java/org/example/petshopdesktop/models/ProductSupplier.java @@ -1,3 +1,9 @@ +/* + * Represents a product-supplier relationship with JavaFX properties. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.models; import javafx.beans.property.SimpleDoubleProperty; diff --git a/desktop/src/main/java/org/example/petshopdesktop/models/PurchaseOrder.java b/desktop/src/main/java/org/example/petshopdesktop/models/PurchaseOrder.java index c13afe50..d2def56f 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/models/PurchaseOrder.java +++ b/desktop/src/main/java/org/example/petshopdesktop/models/PurchaseOrder.java @@ -1,3 +1,9 @@ +/* + * Represents a purchase order with fields for display in tables. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.models; import java.math.BigDecimal; @@ -49,4 +55,4 @@ public class PurchaseOrder { public BigDecimal getTotalAmount() { return totalAmount; } -} \ No newline at end of file +} diff --git a/desktop/src/main/java/org/example/petshopdesktop/models/SaleCartItem.java b/desktop/src/main/java/org/example/petshopdesktop/models/SaleCartItem.java index 25c4da36..abd4e764 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/models/SaleCartItem.java +++ b/desktop/src/main/java/org/example/petshopdesktop/models/SaleCartItem.java @@ -1,3 +1,9 @@ +/* + * Represents a single item added to the sale cart. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.models; public class SaleCartItem { diff --git a/desktop/src/main/java/org/example/petshopdesktop/models/SaleDetail.java b/desktop/src/main/java/org/example/petshopdesktop/models/SaleDetail.java index 63d3cf47..875a04c7 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/models/SaleDetail.java +++ b/desktop/src/main/java/org/example/petshopdesktop/models/SaleDetail.java @@ -1,3 +1,9 @@ +/* + * Holds the full details of a completed sale for display. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.models; import javafx.collections.ObservableList; diff --git a/desktop/src/main/java/org/example/petshopdesktop/models/SaleLineItem.java b/desktop/src/main/java/org/example/petshopdesktop/models/SaleLineItem.java index f45938b0..014ced54 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/models/SaleLineItem.java +++ b/desktop/src/main/java/org/example/petshopdesktop/models/SaleLineItem.java @@ -1,3 +1,9 @@ +/* + * Represents one line item within a sale. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.models; public class SaleLineItem { diff --git a/desktop/src/main/java/org/example/petshopdesktop/models/Service.java b/desktop/src/main/java/org/example/petshopdesktop/models/Service.java index b259fc21..5c5c4265 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/models/Service.java +++ b/desktop/src/main/java/org/example/petshopdesktop/models/Service.java @@ -1,3 +1,9 @@ +/* + * Represents a service offered by the pet shop. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.models; import javafx.beans.property.SimpleDoubleProperty; @@ -95,4 +101,4 @@ public class Service { public String toString() { return getServiceName(); } -} \ No newline at end of file +} diff --git a/desktop/src/main/java/org/example/petshopdesktop/models/StaffAccount.java b/desktop/src/main/java/org/example/petshopdesktop/models/StaffAccount.java index 59923338..fca3aeb2 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/models/StaffAccount.java +++ b/desktop/src/main/java/org/example/petshopdesktop/models/StaffAccount.java @@ -1,3 +1,9 @@ +/* + * Represents a staff account used for login and permissions. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.models; import java.sql.Timestamp; diff --git a/desktop/src/main/java/org/example/petshopdesktop/models/Supplier.java b/desktop/src/main/java/org/example/petshopdesktop/models/Supplier.java index 1120670a..7e0386f4 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/models/Supplier.java +++ b/desktop/src/main/java/org/example/petshopdesktop/models/Supplier.java @@ -1,3 +1,9 @@ +/* + * Represents a supplier with JavaFX properties for table binding. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.models; import javafx.beans.property.SimpleIntegerProperty; diff --git a/desktop/src/main/java/org/example/petshopdesktop/models/User.java b/desktop/src/main/java/org/example/petshopdesktop/models/User.java index 7d2199e9..d006d55f 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/models/User.java +++ b/desktop/src/main/java/org/example/petshopdesktop/models/User.java @@ -1,3 +1,9 @@ +/* + * Represents the currently logged-in user. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.models; import org.example.petshopdesktop.auth.Role; diff --git a/desktop/src/main/java/org/example/petshopdesktop/models/analytics/DailySalesData.java b/desktop/src/main/java/org/example/petshopdesktop/models/analytics/DailySalesData.java index 1f41b8f2..d4e2d572 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/models/analytics/DailySalesData.java +++ b/desktop/src/main/java/org/example/petshopdesktop/models/analytics/DailySalesData.java @@ -1,3 +1,9 @@ +/* + * Holds sales data for a single day used in charts. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.models.analytics; import java.time.LocalDate; diff --git a/desktop/src/main/java/org/example/petshopdesktop/models/analytics/EmployeeSalesData.java b/desktop/src/main/java/org/example/petshopdesktop/models/analytics/EmployeeSalesData.java index a954d86b..94143f3e 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/models/analytics/EmployeeSalesData.java +++ b/desktop/src/main/java/org/example/petshopdesktop/models/analytics/EmployeeSalesData.java @@ -1,3 +1,9 @@ +/* + * Holds sales data grouped by employee for charts. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.models.analytics; public class EmployeeSalesData { diff --git a/desktop/src/main/java/org/example/petshopdesktop/models/analytics/PaymentMethodData.java b/desktop/src/main/java/org/example/petshopdesktop/models/analytics/PaymentMethodData.java index de45c727..b3ba30a8 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/models/analytics/PaymentMethodData.java +++ b/desktop/src/main/java/org/example/petshopdesktop/models/analytics/PaymentMethodData.java @@ -1,3 +1,9 @@ +/* + * Holds sales data grouped by payment method for charts. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.models.analytics; public class PaymentMethodData { diff --git a/desktop/src/main/java/org/example/petshopdesktop/models/analytics/ProductSalesData.java b/desktop/src/main/java/org/example/petshopdesktop/models/analytics/ProductSalesData.java index 3723eee6..2a802bca 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/models/analytics/ProductSalesData.java +++ b/desktop/src/main/java/org/example/petshopdesktop/models/analytics/ProductSalesData.java @@ -1,3 +1,9 @@ +/* + * Holds sales data grouped by product for charts. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.models.analytics; public class ProductSalesData { diff --git a/desktop/src/main/java/org/example/petshopdesktop/models/analytics/SalesSummary.java b/desktop/src/main/java/org/example/petshopdesktop/models/analytics/SalesSummary.java index 65e9f9c1..ca06fd18 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/models/analytics/SalesSummary.java +++ b/desktop/src/main/java/org/example/petshopdesktop/models/analytics/SalesSummary.java @@ -1,3 +1,9 @@ +/* + * Holds overall sales totals for the analytics dashboard. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.models.analytics; public class SalesSummary { diff --git a/desktop/src/main/java/org/example/petshopdesktop/ui/CalendarPane.java b/desktop/src/main/java/org/example/petshopdesktop/ui/CalendarPane.java index 2b2afeab..321c8a03 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/ui/CalendarPane.java +++ b/desktop/src/main/java/org/example/petshopdesktop/ui/CalendarPane.java @@ -1,3 +1,9 @@ +/* + * Custom calendar widget for picking and highlighting dates. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.ui; import javafx.geometry.Insets; @@ -87,6 +93,10 @@ public class CalendarPane extends VBox { onDateSelected = handler; } + /** + * Moves the calendar forward or backward by one week or month depending on mode. + * @param direction +1 for forward, -1 for backward + */ private void navigate(int direction) { if (weekMode) { currentDate = currentDate.plusWeeks(direction); @@ -96,6 +106,11 @@ public class CalendarPane extends VBox { rebuild(); } + /** + * Rebuilds the day grid from scratch. In week mode, shows 7 days starting + * from Sunday. In month mode, calculates how many rows are needed and offsets + * the first day to the correct column based on its day-of-week. + */ private void rebuild() { dayGrid.getChildren().clear(); dayGrid.getColumnConstraints().clear(); @@ -108,6 +123,7 @@ public class CalendarPane extends VBox { } if (weekMode) { + // getValue() gives Mon=1..Sun=7; mod 7 maps to Sun=0..Sat=6 int dow = currentDate.getDayOfWeek().getValue() % 7; LocalDate startOfWeek = currentDate.minusDays(dow); lblHeader.setText("Week of " + startOfWeek.format(DateTimeFormatter.ofPattern("MMM d, yyyy"))); @@ -117,6 +133,7 @@ public class CalendarPane extends VBox { } else { YearMonth ym = YearMonth.of(currentDate.getYear(), currentDate.getMonthValue()); lblHeader.setText(currentDate.format(DateTimeFormatter.ofPattern("MMMM yyyy"))); + // Figure out which column the 1st falls on, then how many rows we need int firstDow = ym.atDay(1).getDayOfWeek().getValue() % 7; int daysInMonth = ym.lengthOfMonth(); int rows = (int) Math.ceil((firstDow + daysInMonth) / 7.0); @@ -136,6 +153,12 @@ public class CalendarPane extends VBox { } } + /** + * Creates a single day cell with appropriate styling for selected/today/normal states. + * Shows a red dot if the date has events. Clicking toggles selection. + * @param date the date this cell represents + * @return the styled cell + */ private StackPane buildDayCell(LocalDate date) { boolean isSelected = date.equals(selectedDate); boolean isToday = date.equals(LocalDate.now()); diff --git a/desktop/src/main/java/org/example/petshopdesktop/ui/SvgWebViewFactory.java b/desktop/src/main/java/org/example/petshopdesktop/ui/SvgWebViewFactory.java index 6243e901..9463df17 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/ui/SvgWebViewFactory.java +++ b/desktop/src/main/java/org/example/petshopdesktop/ui/SvgWebViewFactory.java @@ -1,3 +1,9 @@ +/* + * Renders SVG files inside a WebView for display in the UI. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.ui; import javafx.scene.layout.StackPane; diff --git a/desktop/src/main/java/org/example/petshopdesktop/util/ActivityLogger.java b/desktop/src/main/java/org/example/petshopdesktop/util/ActivityLogger.java index 6a104a39..09d34ac2 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/util/ActivityLogger.java +++ b/desktop/src/main/java/org/example/petshopdesktop/util/ActivityLogger.java @@ -1,3 +1,9 @@ +/* + * Writes user actions to a local log file. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.util; import java.nio.charset.StandardCharsets; diff --git a/desktop/src/main/java/org/example/petshopdesktop/util/DesktopImageSupport.java b/desktop/src/main/java/org/example/petshopdesktop/util/DesktopImageSupport.java index dba81e76..ae4af636 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/util/DesktopImageSupport.java +++ b/desktop/src/main/java/org/example/petshopdesktop/util/DesktopImageSupport.java @@ -1,3 +1,9 @@ +/* + * Loads and caches images from the server for display. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.util; import javafx.application.Platform; diff --git a/desktop/src/main/java/org/example/petshopdesktop/util/DesktopNotificationService.java b/desktop/src/main/java/org/example/petshopdesktop/util/DesktopNotificationService.java index 4f9da43f..b936e996 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/util/DesktopNotificationService.java +++ b/desktop/src/main/java/org/example/petshopdesktop/util/DesktopNotificationService.java @@ -1,3 +1,9 @@ +/* + * Sends system tray notifications from the desktop app. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.util; import javafx.embed.swing.SwingFXUtils; diff --git a/desktop/src/main/java/org/example/petshopdesktop/util/FilePickerSupport.java b/desktop/src/main/java/org/example/petshopdesktop/util/FilePickerSupport.java index b81c764a..d3584478 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/util/FilePickerSupport.java +++ b/desktop/src/main/java/org/example/petshopdesktop/util/FilePickerSupport.java @@ -1,3 +1,9 @@ +/* + * Opens native file chooser dialogs for selecting files. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.util; import javafx.stage.FileChooser; diff --git a/desktop/src/main/java/org/example/petshopdesktop/util/TableViewSupport.java b/desktop/src/main/java/org/example/petshopdesktop/util/TableViewSupport.java index addf56ce..bb32fb3a 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/util/TableViewSupport.java +++ b/desktop/src/main/java/org/example/petshopdesktop/util/TableViewSupport.java @@ -1,3 +1,9 @@ +/* + * Helper methods for setting up and formatting table views. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.util; import javafx.collections.transformation.FilteredList; @@ -20,6 +26,12 @@ public final class TableViewSupport { private TableViewSupport() { } + /** + * Wraps a FilteredList in a SortedList and binds it to the table's sort order. + * This way clicking column headers sorts the already-filtered data. + * @param tableView the table to bind to + * @param filteredItems the filtered data source + */ public static void bindSortedItems(TableView tableView, FilteredList filteredItems) { SortedList sortedItems = new SortedList<>(filteredItems); sortedItems.comparatorProperty().bind(tableView.comparatorProperty()); @@ -43,6 +55,10 @@ public final class TableViewSupport { delay.playFromStart(); } + /** + * Formats a numeric column as Canadian currency (e.g. $12.50). + * @param column the table column to apply formatting to + */ public static void applyCurrencyColumn(TableColumn column) { if (column == null) { return; @@ -58,6 +74,11 @@ public final class TableViewSupport { }); } + /** + * Adds a double-click handler to table rows that calls the given action with the row item. + * @param tableView the table to add the handler to + * @param action callback that receives the clicked row's item + */ public static void installDoubleClickAction(TableView tableView, Consumer action) { tableView.setRowFactory(tv -> { TableRow row = new TableRow<>(); diff --git a/desktop/src/main/java/org/example/petshopdesktop/util/TextFieldFormatSupport.java b/desktop/src/main/java/org/example/petshopdesktop/util/TextFieldFormatSupport.java index 7dba0d9f..0e86a0e9 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/util/TextFieldFormatSupport.java +++ b/desktop/src/main/java/org/example/petshopdesktop/util/TextFieldFormatSupport.java @@ -1,3 +1,9 @@ +/* + * Applies input formatting like phone numbers to text fields. + * + * Author: Harkamal + * Date: April 2026 + */ package org.example.petshopdesktop.util; import javafx.application.Platform;