Skip to content

Commit af060bb

Browse files
committed
Add JavaFX US House cross-platform installer GUI
1 parent fd4c1bc commit af060bb

1 file changed

Lines changed: 56 additions & 0 deletions

File tree

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
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

Comments
 (0)