From af94ecb12929741b13510c18e8b6d824a00fedc6 Mon Sep 17 00:00:00 2001 From: AKP Date: Tue, 31 Jan 2023 21:24:40 +0000 Subject: [PATCH] Alter 7 files Add `.gitignore` Add `pom.xml` Add `module-info.java` Add `App.java` Add `Controller.java` Add `TodoObject.java` Add `primary.fxml` --- .gitignore | 46 +++++++++++++++ openjfx-todo/pom.xml | 51 ++++++++++++++++ openjfx-todo/src/main/java/module-info.java | 7 +++ .../src/main/java/net/akpain/todo/App.java | 38 ++++++++++++ .../main/java/net/akpain/todo/Controller.java | 59 +++++++++++++++++++ .../main/java/net/akpain/todo/TodoObject.java | 11 ++++ .../resources/net/akpain/todo/primary.fxml | 16 +++++ 7 files changed, 228 insertions(+) create mode 100644 .gitignore create mode 100644 openjfx-todo/pom.xml create mode 100644 openjfx-todo/src/main/java/module-info.java create mode 100644 openjfx-todo/src/main/java/net/akpain/todo/App.java create mode 100644 openjfx-todo/src/main/java/net/akpain/todo/Controller.java create mode 100644 openjfx-todo/src/main/java/net/akpain/todo/TodoObject.java create mode 100644 openjfx-todo/src/main/resources/net/akpain/todo/primary.fxml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6d0f21f --- /dev/null +++ b/.gitignore @@ -0,0 +1,46 @@ + +### Java ### +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + + +### Maven ### +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +# https://github.com/takari/maven-wrapper#usage-without-binary-jar +.mvn/wrapper/maven-wrapper.jar + +### Maven Patch ### +# Eclipse m2e generated files +# Eclipse Core +.project +# JDT-specific (Eclipse Java Development Tools) +.classpath diff --git a/openjfx-todo/pom.xml b/openjfx-todo/pom.xml new file mode 100644 index 0000000..7e27202 --- /dev/null +++ b/openjfx-todo/pom.xml @@ -0,0 +1,51 @@ + + 4.0.0 + net.akpain.todo + _01-openjfx-intro + 1.0.0 + + UTF-8 + 11 + 11 + + + + org.openjfx + javafx-controls + 19 + + + org.openjfx + javafx-fxml + 19 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.0 + + 11 + + + + org.openjfx + javafx-maven-plugin + 0.0.6 + + + + + default-cli + + net.akpain.todo.App + + + + + + + diff --git a/openjfx-todo/src/main/java/module-info.java b/openjfx-todo/src/main/java/module-info.java new file mode 100644 index 0000000..20268bd --- /dev/null +++ b/openjfx-todo/src/main/java/module-info.java @@ -0,0 +1,7 @@ +module net.akpain.todo { + requires javafx.controls; + requires javafx.fxml; + + opens net.akpain.todo to javafx.fxml; + exports net.akpain.todo; +} diff --git a/openjfx-todo/src/main/java/net/akpain/todo/App.java b/openjfx-todo/src/main/java/net/akpain/todo/App.java new file mode 100644 index 0000000..6a12adc --- /dev/null +++ b/openjfx-todo/src/main/java/net/akpain/todo/App.java @@ -0,0 +1,38 @@ +package net.akpain.todo; + +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.stage.Stage; + +import java.io.IOException; + +/** + * JavaFX App + */ +public class App extends Application { + + private static Scene scene; + + @Override + public void start(Stage stage) throws IOException { + scene = new Scene(loadFXML("primary"), 400, 400); + stage.setScene(scene); + stage.show(); + } + + static void setRoot(String fxml) throws IOException { + scene.setRoot(loadFXML(fxml)); + } + + private static Parent loadFXML(String fxml) throws IOException { + FXMLLoader fxmlLoader = new FXMLLoader(App.class.getResource(fxml + ".fxml")); + return fxmlLoader.load(); + } + + public static void main(String[] args) { + launch(); + } + +} \ No newline at end of file diff --git a/openjfx-todo/src/main/java/net/akpain/todo/Controller.java b/openjfx-todo/src/main/java/net/akpain/todo/Controller.java new file mode 100644 index 0000000..d251981 --- /dev/null +++ b/openjfx-todo/src/main/java/net/akpain/todo/Controller.java @@ -0,0 +1,59 @@ +package net.akpain.todo; + +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.scene.control.CheckBox; +import javafx.scene.control.Label; +import javafx.scene.control.TextField; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.HBox; +import javafx.scene.layout.VBox; + +public class Controller { + + public VBox todoDisplayBox; + public TextField todoTextField; + + public Controller() { + todoDisplayBox = new VBox(); + } + + @FXML + private void addTodo() { + String input = todoTextField.getCharacters().toString(); + + if (input.length() == 0) { + return; + } + + HBox p = new HBox(10); + CheckBox cb = new CheckBox(); + cb.onMouseClickedProperty().set(this::checkBoxChecked); + + p.getChildren().add(cb); + p.getChildren().add(new Label(input)); + + todoDisplayBox.getChildren().add(p); + todoTextField.clear(); + } + + private void checkBoxChecked(MouseEvent event) { + System.out.printf("checkbox checked %s\n", event.toString()); + CheckBox source = (CheckBox) event.getSource(); + HBox hbox = (HBox) source.getParent(); + Label label = (Label) hbox.getChildren().get(1); + label.setStyle("-fx-strikethrough: true"); + System.out.println(label.getStyle()); + } + + @FXML + private void onTextFieldKeyPress(KeyEvent keyEvent) { + if (keyEvent.getCode().getCode() == 10) { + // 10 is the keycode for enter + addTodo(); + } + } + + private void renderTodos() {} +} diff --git a/openjfx-todo/src/main/java/net/akpain/todo/TodoObject.java b/openjfx-todo/src/main/java/net/akpain/todo/TodoObject.java new file mode 100644 index 0000000..d9f40a2 --- /dev/null +++ b/openjfx-todo/src/main/java/net/akpain/todo/TodoObject.java @@ -0,0 +1,11 @@ +package net.akpain.todo; + +public class TodoObject { + private String text; + private boolean completed; + + public TodoObject(String text) { + this.completed = false; + this.text = text; + } +} diff --git a/openjfx-todo/src/main/resources/net/akpain/todo/primary.fxml b/openjfx-todo/src/main/resources/net/akpain/todo/primary.fxml new file mode 100644 index 0000000..47ac077 --- /dev/null +++ b/openjfx-todo/src/main/resources/net/akpain/todo/primary.fxml @@ -0,0 +1,16 @@ + + + + + + + + + + + +