From f23c20c1c66b39fb1f49307e08e8593fa708e026 Mon Sep 17 00:00:00 2001 From: Kostya Date: Wed, 9 Sep 2026 10:05:12 +0300 Subject: ui-desktop: build the JavaFX market UI on top of the service Replace the placeholder hello-world window with a working desktop client for the guess market. ServiceEngine wires the in-memory repositories, XML loader, risk, matching, fulfillment and settlement contexts together, and AppState exposes their results as observable JavaFX state for the views to bind to. The FXML views have an events tab and a users tab. The events tab lists events with mechanism and commission filters, and shows each event's price chart, order book ladder, trade history and participants. The users tab shows each user's ledger and positions, and lets them place buy and sell orders. Dialogs cover loading an XML file (in a background task), creating an event and resolving one. Bundle a CSS theme and Nerd Font faces so the UI looks the same on every machine. Teach build.sh to copy each module's src/main/resources into its class output, since FXML, CSS and fonts are loaded from the classpath at runtime. --- .../market/guess/ui/desktop/app_view.fxml | 158 ++++ .../desktop/controllers/dialog_create_event.fxml | 137 +++ .../guess/ui/desktop/controllers/dialog_load.fxml | 32 + .../ui/desktop/controllers/dialog_resolve.fxml | 54 ++ .../guess/ui/desktop/controllers/empty_state.fxml | 19 + .../guess/ui/desktop/controllers/events_tab.fxml | 448 ++++++++++ .../guess/ui/desktop/controllers/users_tab.fxml | 240 ++++++ .../market/guess/ui/desktop/event_list_item.fxml | 30 + .../desktop/fonts/CaskaydiaCoveNerdFont-Bold.ttf | Bin 0 -> 2959748 bytes .../fonts/CaskaydiaCoveNerdFont-Regular.ttf | Bin 0 -> 2959676 bytes .../ui/desktop/fonts/FiraCodeNerdFont-Bold.ttf | Bin 0 -> 2782540 bytes .../ui/desktop/fonts/FiraCodeNerdFont-Regular.ttf | Bin 0 -> 2752724 bytes .../desktop/fonts/JetBrainsMonoNerdFont-Bold.ttf | Bin 0 -> 2472872 bytes .../fonts/JetBrainsMonoNerdFont-Regular.ttf | Bin 0 -> 2469104 bytes .../market/guess/ui/desktop/ladder_item.fxml | 18 + .../market/guess/ui/desktop/participant_item.fxml | 19 + .../resources/market/guess/ui/desktop/theme.css | 926 +++++++++++++++++++++ .../guess/ui/desktop/trade_history_item.fxml | 19 + .../market/guess/ui/desktop/user_event_item.fxml | 21 + .../market/guess/ui/desktop/user_list_item.fxml | 22 + 20 files changed, 2143 insertions(+) create mode 100644 ui-desktop/src/main/resources/market/guess/ui/desktop/app_view.fxml create mode 100644 ui-desktop/src/main/resources/market/guess/ui/desktop/controllers/dialog_create_event.fxml create mode 100644 ui-desktop/src/main/resources/market/guess/ui/desktop/controllers/dialog_load.fxml create mode 100644 ui-desktop/src/main/resources/market/guess/ui/desktop/controllers/dialog_resolve.fxml create mode 100644 ui-desktop/src/main/resources/market/guess/ui/desktop/controllers/empty_state.fxml create mode 100644 ui-desktop/src/main/resources/market/guess/ui/desktop/controllers/events_tab.fxml create mode 100644 ui-desktop/src/main/resources/market/guess/ui/desktop/controllers/users_tab.fxml create mode 100644 ui-desktop/src/main/resources/market/guess/ui/desktop/event_list_item.fxml create mode 100644 ui-desktop/src/main/resources/market/guess/ui/desktop/fonts/CaskaydiaCoveNerdFont-Bold.ttf create mode 100644 ui-desktop/src/main/resources/market/guess/ui/desktop/fonts/CaskaydiaCoveNerdFont-Regular.ttf create mode 100644 ui-desktop/src/main/resources/market/guess/ui/desktop/fonts/FiraCodeNerdFont-Bold.ttf create mode 100644 ui-desktop/src/main/resources/market/guess/ui/desktop/fonts/FiraCodeNerdFont-Regular.ttf create mode 100644 ui-desktop/src/main/resources/market/guess/ui/desktop/fonts/JetBrainsMonoNerdFont-Bold.ttf create mode 100644 ui-desktop/src/main/resources/market/guess/ui/desktop/fonts/JetBrainsMonoNerdFont-Regular.ttf create mode 100644 ui-desktop/src/main/resources/market/guess/ui/desktop/ladder_item.fxml create mode 100644 ui-desktop/src/main/resources/market/guess/ui/desktop/participant_item.fxml create mode 100644 ui-desktop/src/main/resources/market/guess/ui/desktop/theme.css create mode 100644 ui-desktop/src/main/resources/market/guess/ui/desktop/trade_history_item.fxml create mode 100644 ui-desktop/src/main/resources/market/guess/ui/desktop/user_event_item.fxml create mode 100644 ui-desktop/src/main/resources/market/guess/ui/desktop/user_list_item.fxml (limited to 'ui-desktop/src/main/resources') diff --git a/ui-desktop/src/main/resources/market/guess/ui/desktop/app_view.fxml b/ui-desktop/src/main/resources/market/guess/ui/desktop/app_view.fxml new file mode 100644 index 0000000..855b787 --- /dev/null +++ b/ui-desktop/src/main/resources/market/guess/ui/desktop/app_view.fxml @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +