|
| 1 | +package us.house.installer; |
| 2 | + |
| 3 | +import javafx.application.Application; |
| 4 | +import javafx.geometry.Insets; |
| 5 | +import javafx.scene.Scene; |
| 6 | +import javafx.scene.control.*; |
| 7 | +import javafx.scene.layout.*; |
| 8 | +import javafx.stage.Stage; |
| 9 | + |
| 10 | +/** Cross-platform JavaFX installer UI for Windows, macOS and Linux. */ |
| 11 | +public final class USHouseInstaller extends Application { |
| 12 | + private final CheckBox core = new CheckBox("1 — Core US House runtime"); |
| 13 | + private final CheckBox tools = new CheckBox("2 — Software-house tools and conveniences"); |
| 14 | + private final CheckBox configure = new CheckBox("3 — Configure after installation"); |
| 15 | + private final CheckBox microsoft = new CheckBox("Microsoft software integration"); |
| 16 | + private final CheckBox apple = new CheckBox("Apple software integration"); |
| 17 | + private final CheckBox launch = new CheckBox("Launch after installation"); |
| 18 | + private final TextArea log = new TextArea(); |
| 19 | + |
| 20 | + @Override public void start(Stage stage) { |
| 21 | + core.setSelected(true); tools.setSelected(true); configure.setSelected(true); |
| 22 | + Label title = new Label("US House — Installation"); |
| 23 | + title.setStyle("-fx-font-size:22px;-fx-font-weight:bold;"); |
| 24 | + Label platform = new Label("Platform: " + System.getProperty("os.name") + " / " + System.getProperty("os.arch")); |
| 25 | + VBox order = new VBox(8, core, tools, configure); |
| 26 | + TitledPane integrations = new TitledPane("Software integrations", new VBox(8, microsoft, apple, launch)); |
| 27 | + integrations.setExpanded(true); |
| 28 | + Button install = new Button("Install"); |
| 29 | + Button close = new Button("Close"); |
| 30 | + install.setDefaultButton(true); install.setOnAction(e -> plan()); close.setOnAction(e -> stage.close()); |
| 31 | + log.setEditable(false); log.setPrefRowCount(10); |
| 32 | + log.setText("Select installation stages and configuration options.\n"); |
| 33 | + VBox root = new VBox(14, title, platform, new Label("Installation order"), order, |
| 34 | + integrations, new Label("Installer output"), log, new HBox(8, install, close)); |
| 35 | + root.setPadding(new Insets(18)); |
| 36 | + stage.setTitle("US House Installer"); stage.setScene(new Scene(root, 620, 560)); stage.show(); |
| 37 | + } |
| 38 | + |
| 39 | + private void plan() { |
| 40 | + log.clear(); |
| 41 | + log.appendText("US House installation plan\n"); |
| 42 | + log.appendText("1. Origin: installation request\n"); |
| 43 | + if (core.isSelected()) log.appendText(" • Core runtime selected\n"); |
| 44 | + if (tools.isSelected()) log.appendText(" • Tools/conveniences selected\n"); |
| 45 | + if (configure.isSelected()) log.appendText(" • Post-install configuration selected\n"); |
| 46 | + if (microsoft.isSelected()) log.appendText(" • Microsoft integration selected\n"); |
| 47 | + if (apple.isSelected()) log.appendText(" • Apple integration selected\n"); |
| 48 | + if (launch.isSelected()) log.appendText(" • Launch-after-install selected\n"); |
| 49 | + log.appendText("2. Custody: selected installation targets\n"); |
| 50 | + log.appendText("3. Production: platform launcher actions\n"); |
| 51 | + log.appendText("4. Release: installation result and verification\n"); |
| 52 | + log.appendText("\nGUI plan prepared. Privileged platform changes require the corresponding OS launcher.\n"); |
| 53 | + } |
| 54 | + |
| 55 | + public static void main(String[] args) { launch(args); } |
| 56 | +} |
0 commit comments