From c437cff8b469f8b751e1a5a396b3b3006e3d44b2 Mon Sep 17 00:00:00 2001 From: nelsonnew Date: Thu, 13 Oct 2022 18:49:27 +0200 Subject: [PATCH] #1454 - Initial commit with new module project, frontend implementation and basic class structure --- cobigen-gui/gui-systemtest/pom.xml | 9 + cobigen-gui/gui/pom.xml | 56 +++++ .../gui/src/main/java/module-info.java | 11 + .../src/main/java/org/gui/CellFactory.java | 65 ++++++ .../gui/src/main/java/org/gui/Controller.java | 76 +++++++ .../main/java/org/gui/DetailsController.java | 9 + .../gui/src/main/java/org/gui/HomeScreen.fxml | 58 ++++++ .../gui/src/main/java/org/gui/Main.java | 43 ++++ .../src/main/java/org/gui/SearchResults.fxml | 193 ++++++++++++++++++ .../main/java/org/gui/TemplateSetDetails.fxml | 8 + .../org/gui/TemplateSetManagementGui.fxml | 92 +++++++++ .../gui/src/main/java/org/gui/application.css | 1 + .../src/main/resources/org/gui/primary.fxml | 16 ++ .../src/main/resources/org/gui/secondary.fxml | 16 ++ cobigen-gui/pom.xml | 22 ++ pom.xml | 2 + 16 files changed, 677 insertions(+) create mode 100644 cobigen-gui/gui-systemtest/pom.xml create mode 100644 cobigen-gui/gui/pom.xml create mode 100644 cobigen-gui/gui/src/main/java/module-info.java create mode 100644 cobigen-gui/gui/src/main/java/org/gui/CellFactory.java create mode 100644 cobigen-gui/gui/src/main/java/org/gui/Controller.java create mode 100644 cobigen-gui/gui/src/main/java/org/gui/DetailsController.java create mode 100644 cobigen-gui/gui/src/main/java/org/gui/HomeScreen.fxml create mode 100644 cobigen-gui/gui/src/main/java/org/gui/Main.java create mode 100644 cobigen-gui/gui/src/main/java/org/gui/SearchResults.fxml create mode 100644 cobigen-gui/gui/src/main/java/org/gui/TemplateSetDetails.fxml create mode 100644 cobigen-gui/gui/src/main/java/org/gui/TemplateSetManagementGui.fxml create mode 100644 cobigen-gui/gui/src/main/java/org/gui/application.css create mode 100644 cobigen-gui/gui/src/main/resources/org/gui/primary.fxml create mode 100644 cobigen-gui/gui/src/main/resources/org/gui/secondary.fxml create mode 100644 cobigen-gui/pom.xml diff --git a/cobigen-gui/gui-systemtest/pom.xml b/cobigen-gui/gui-systemtest/pom.xml new file mode 100644 index 0000000000..4ffff27ce0 --- /dev/null +++ b/cobigen-gui/gui-systemtest/pom.xml @@ -0,0 +1,9 @@ + + 4.0.0 + + com.devonfw.cobigen + gui-parent + ${revision} + + gui-systemtest + \ No newline at end of file diff --git a/cobigen-gui/gui/pom.xml b/cobigen-gui/gui/pom.xml new file mode 100644 index 0000000000..787bbb717b --- /dev/null +++ b/cobigen-gui/gui/pom.xml @@ -0,0 +1,56 @@ + + + 4.0.0 + + gui-parent + com.devonfw.cobigen + ${revision} + + com.devonfw.cobigen + gui + ${revision} + + 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.8 + + + + + default-cli + + org.gui.Main + + + + + + + diff --git a/cobigen-gui/gui/src/main/java/module-info.java b/cobigen-gui/gui/src/main/java/module-info.java new file mode 100644 index 0000000000..5d65c0bfc8 --- /dev/null +++ b/cobigen-gui/gui/src/main/java/module-info.java @@ -0,0 +1,11 @@ +module gui { + requires javafx.controls; + + requires javafx.fxml; + + requires transitive javafx.graphics; + + opens org.gui to javafx.fxml; + + exports org.gui; +} diff --git a/cobigen-gui/gui/src/main/java/org/gui/CellFactory.java b/cobigen-gui/gui/src/main/java/org/gui/CellFactory.java new file mode 100644 index 0000000000..20bf937420 --- /dev/null +++ b/cobigen-gui/gui/src/main/java/org/gui/CellFactory.java @@ -0,0 +1,65 @@ +package org.gui; + +import javafx.application.Application; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.scene.Scene; +import javafx.scene.control.ListCell; +import javafx.scene.control.ListView; +import javafx.scene.layout.HBox; +import javafx.stage.Stage; + +public class CellFactory extends Application { + @Override + public void start(Stage stage) { + + ObservableList wordsList = FXCollections.observableArrayList(); + wordsList.add(new TemplateSetCell("First Word", "Definition of First Word")); + wordsList.add(new TemplateSetCell("Second Word", "Definition of Second Word")); + wordsList.add(new TemplateSetCell("Third Word", "Definition of Third Word")); + ListView listViewOfWords = new ListView<>(wordsList); + listViewOfWords.setCellFactory(param -> new ListCell() { + @Override + protected void updateItem(TemplateSetCell item, boolean empty) { + + super.updateItem(item, empty); + + if (empty || item == null || item.getWord() == null) { + setText(null); + } else { + setText(item.getWord()); + } + } + }); + stage.setScene(new Scene(listViewOfWords)); + stage.show(); + } + + public static class TemplateSetCell extends HBox { + + private final String word; + + private final String definition; + + public TemplateSetCell(String word, String definition) { + + this.word = word; + this.definition = definition; + } + + public String getWord() { + + return this.word; + } + + public String getDefinition() { + + return this.definition; + } + } + + public static void main(String[] args) { + + launch(args); + } +} diff --git a/cobigen-gui/gui/src/main/java/org/gui/Controller.java b/cobigen-gui/gui/src/main/java/org/gui/Controller.java new file mode 100644 index 0000000000..e79a7afd4d --- /dev/null +++ b/cobigen-gui/gui/src/main/java/org/gui/Controller.java @@ -0,0 +1,76 @@ +package org.gui; + +import java.net.URL; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.ResourceBundle; +import java.util.stream.Collectors; + +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.Button; +import javafx.scene.control.ListView; +import javafx.scene.control.TextField; +import javafx.scene.input.KeyEvent; + +/** + * Controller for the Template Set Management GUI + */ +public class Controller implements Initializable { + + ArrayList templateSets = new ArrayList<>(Arrays.asList("templates-devon4j-tests", "templates-devon4j-utils", + "crud-openapi-net", "crud-angular-client-app", "crud-ionic-client-app", "rest-documentation")); + + @FXML + public Button clearSearchResultsButton; + + @FXML + public TextField searchBar; + + // TODO: Transform to ListView + @FXML + public ListView searchResultsView; + + @FXML + public void search(KeyEvent event) { + + this.searchResultsView.getItems().clear(); + this.searchResultsView.getItems().addAll(searchTemplateSets(this.searchBar.getText(), this.templateSets)); + } + + /** + * Called when clearSearchResultsButton is pressed + */ + @FXML + public void clearSearchResults() { + + this.searchBar.clear(); + this.searchResultsView.getItems().clear(); + this.searchResultsView.getItems().addAll(this.templateSets); + } + + /** + * Initial View + */ + @Override + public void initialize(URL arg0, ResourceBundle arg1) { + + this.searchResultsView.getItems().addAll(this.templateSets); + } + + /** + * @param text + * @param templateSets2 + * @return + */ + private List searchTemplateSets(String searchWords, List listOfStrings) { + + List searchTemplateSetsArray = Arrays.asList(searchWords.trim().split(" ")); + + return listOfStrings.stream().filter(input -> { + return searchTemplateSetsArray.stream().allMatch(word -> input.toLowerCase().contains(word.toLowerCase())); + }).collect(Collectors.toList()); + } + +} diff --git a/cobigen-gui/gui/src/main/java/org/gui/DetailsController.java b/cobigen-gui/gui/src/main/java/org/gui/DetailsController.java new file mode 100644 index 0000000000..31758502b0 --- /dev/null +++ b/cobigen-gui/gui/src/main/java/org/gui/DetailsController.java @@ -0,0 +1,9 @@ +package org.gui; + +/** + * TODO nneuhaus This type ... + * + */ +public class DetailsController { + +} diff --git a/cobigen-gui/gui/src/main/java/org/gui/HomeScreen.fxml b/cobigen-gui/gui/src/main/java/org/gui/HomeScreen.fxml new file mode 100644 index 0000000000..4c070d27fa --- /dev/null +++ b/cobigen-gui/gui/src/main/java/org/gui/HomeScreen.fxml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cobigen-gui/gui/src/main/java/org/gui/Main.java b/cobigen-gui/gui/src/main/java/org/gui/Main.java new file mode 100644 index 0000000000..421e97dfe9 --- /dev/null +++ b/cobigen-gui/gui/src/main/java/org/gui/Main.java @@ -0,0 +1,43 @@ +package org.gui; + +import java.io.FileInputStream; + +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Scene; +import javafx.scene.layout.AnchorPane; +import javafx.stage.Stage; + +public class Main extends Application { + + public static void main(String[] args) { + + launch(args); + } + + @Override + public void start(Stage primaryStage) { + + try { + // Create the FXMLLoader + FXMLLoader loader = new FXMLLoader(); + // Path to the FXML File + String fxmlDocPath = "C:\\projects\\my-project\\workspaces\\main\\cobigen\\cobigen-gui\\gui\\src\\main\\java\\org\\gui\\TemplateSetManagementGui.fxml"; + FileInputStream fxmlStream = new FileInputStream(fxmlDocPath); + // Create the Pane and all Details + AnchorPane root = (AnchorPane) loader.load(fxmlStream); + // Create the Scene + Scene scene = new Scene(root); + // Set the Scene to the Stage + primaryStage.setScene(scene); + // Set the Title to the Stage + primaryStage.setTitle("A SceneBuilder Example"); + // Display the Stage + primaryStage.show(); + + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/cobigen-gui/gui/src/main/java/org/gui/SearchResults.fxml b/cobigen-gui/gui/src/main/java/org/gui/SearchResults.fxml new file mode 100644 index 0000000000..1e4d21a308 --- /dev/null +++ b/cobigen-gui/gui/src/main/java/org/gui/SearchResults.fxml @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cobigen-gui/gui/src/main/java/org/gui/TemplateSetDetails.fxml b/cobigen-gui/gui/src/main/java/org/gui/TemplateSetDetails.fxml new file mode 100644 index 0000000000..5599e8b1da --- /dev/null +++ b/cobigen-gui/gui/src/main/java/org/gui/TemplateSetDetails.fxml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/cobigen-gui/gui/src/main/java/org/gui/TemplateSetManagementGui.fxml b/cobigen-gui/gui/src/main/java/org/gui/TemplateSetManagementGui.fxml new file mode 100644 index 0000000000..8668c18fe9 --- /dev/null +++ b/cobigen-gui/gui/src/main/java/org/gui/TemplateSetManagementGui.fxml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +