From 400933e0e87e9e909cd7c95f5b255921580a4a4f Mon Sep 17 00:00:00 2001
From: Riegel <alexander.riegel@hft-stuttgart.de>
Date: Thu, 28 Nov 2024 13:54:05 +0100
Subject: [PATCH] Feat: Add elements for ZipLoaderGUI

---
 .../Extensions/CityDoctorZipLoader/pom.xml    |   4 +
 .../ziploader/gui/ZipLoaderController.java    |  24 +++++
 .../ziploader/gui/ZipLoaderGUI.java           |  12 +++
 .../ziploader/gui/ZipLoaderToolbar.java       |   9 ++
 .../ziploader/gui/ZipLoaderView.java          |  84 +++++++++++++++++-
 .../citydoctor2/ziploader/gui/zip.png         | Bin 0 -> 852 bytes
 .../{ZipLoaderGUI.fxml => zipLoaderGUI.fxml}  |   0
 .../ziploader/gui/zipLoaderToolbar.fxml       |  33 +++++++
 CityDoctorParent/pom.xml                      |  37 ++++----
 9 files changed, 182 insertions(+), 21 deletions(-)
 create mode 100644 CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/gui/ZipLoaderController.java
 create mode 100644 CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/gui/ZipLoaderGUI.java
 create mode 100644 CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/gui/ZipLoaderToolbar.java
 create mode 100644 CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/resources/de/hft/stuttgart/citydoctor2/ziploader/gui/zip.png
 rename CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/resources/de/hft/stuttgart/citydoctor2/ziploader/gui/{ZipLoaderGUI.fxml => zipLoaderGUI.fxml} (100%)
 create mode 100644 CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/resources/de/hft/stuttgart/citydoctor2/ziploader/gui/zipLoaderToolbar.fxml

diff --git a/CityDoctorParent/Extensions/CityDoctorZipLoader/pom.xml b/CityDoctorParent/Extensions/CityDoctorZipLoader/pom.xml
index 3346570..84fc7de 100644
--- a/CityDoctorParent/Extensions/CityDoctorZipLoader/pom.xml
+++ b/CityDoctorParent/Extensions/CityDoctorZipLoader/pom.xml
@@ -45,6 +45,10 @@
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-slf4j18-impl</artifactId>
         </dependency>
+        <dependency>
+            <groupId>de.hft.stuttgart</groupId>
+            <artifactId>CityDoctorGUI</artifactId>
+        </dependency>
     </dependencies>
     <profiles>
         <profile>
diff --git a/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/gui/ZipLoaderController.java b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/gui/ZipLoaderController.java
new file mode 100644
index 0000000..9264205
--- /dev/null
+++ b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/gui/ZipLoaderController.java
@@ -0,0 +1,24 @@
+package de.hft.stuttgart.citydoctor2.ziploader.gui;
+
+import de.hft.stuttgart.citydoctor2.parser.ParserConfiguration;
+import de.hft.stuttgart.citydoctor2.ziploader.CityGmlArchive;
+import javafx.stage.FileChooser;
+
+import java.io.File;
+
+public class ZipLoaderController {
+
+    private ZipLoaderView zipLoaderView;
+    private ParserConfiguration config;
+    private CityGmlArchive archive;
+
+    public ZipLoaderController(ZipLoaderView zipLoaderView) {
+        this.zipLoaderView = zipLoaderView;
+
+    }
+
+    public void openZipArchive(File file){
+        archive = CityGmlArchive.fromZipFile(file.getPath(), config);
+
+    }
+}
diff --git a/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/gui/ZipLoaderGUI.java b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/gui/ZipLoaderGUI.java
new file mode 100644
index 0000000..03ea9af
--- /dev/null
+++ b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/gui/ZipLoaderGUI.java
@@ -0,0 +1,12 @@
+package de.hft.stuttgart.citydoctor2.ziploader.gui;
+
+import de.hft.stuttgart.citydoctor2.gui.MainWindow;
+import de.hft.stuttgart.citydoctor2.gui.ViewRegistration;
+
+public class ZipLoaderGUI {
+
+    public static void main(String[] args) {
+        ViewRegistration.registerView(new ZipLoaderView());
+        MainWindow.main(args);
+    }
+}
diff --git a/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/gui/ZipLoaderToolbar.java b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/gui/ZipLoaderToolbar.java
new file mode 100644
index 0000000..a1b00c3
--- /dev/null
+++ b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/gui/ZipLoaderToolbar.java
@@ -0,0 +1,9 @@
+package de.hft.stuttgart.citydoctor2.ziploader.gui;
+
+import de.hft.stuttgart.citydoctor2.gui.MainWindow;
+
+public class ZipLoaderToolbar {
+    public ZipLoaderToolbar(ZipLoaderController controller, MainWindow mainWindow) {
+
+    }
+}
diff --git a/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/gui/ZipLoaderView.java b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/gui/ZipLoaderView.java
index 09633f2..32860e1 100644
--- a/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/gui/ZipLoaderView.java
+++ b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/gui/ZipLoaderView.java
@@ -1,4 +1,86 @@
 package de.hft.stuttgart.citydoctor2.ziploader.gui;
 
-public class ZipLoaderView {
+import de.hft.stuttgart.citydoctor2.check.Checker;
+import de.hft.stuttgart.citydoctor2.datastructure.CityDoctorModel;
+import de.hft.stuttgart.citydoctor2.gui.MainWindow;
+import de.hft.stuttgart.citydoctor2.gui.View;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Node;
+import javafx.scene.image.Image;
+import javafx.scene.layout.HBox;
+import javafx.stage.FileChooser;
+import javafx.stage.Window;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Optional;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+public class ZipLoaderView extends View{
+
+    private static final Logger logger = LogManager.getLogger(ZipLoaderView.class);
+
+    Image image;
+    private Window parent;
+    private Node zipLoaderWindow;
+    private ZipLoaderController controller;
+    private ZipLoaderToolbar toolbar;
+
+
+
+    public ZipLoaderView() {
+        image = new Image(getClass().getResourceAsStream("zip.png"));
+    }
+
+    @Override
+    public Optional<HBox> getToolbar() {
+        return Optional.empty();
+    }
+
+    @Override
+    public Node getMainScreen() {
+        return null;
+    }
+
+    @Override
+    public Image getViewLogo() {
+        return image;
+    }
+
+    @Override
+    public void initializeView(MainWindow mainWindow) {
+        this.parent = mainWindow.getMainStage();
+        FXMLLoader loader = new FXMLLoader(getClass().getResource("ZipLoaderGUI.fxml"));
+        loader.setController(this);
+        try {
+            zipLoaderWindow = loader.load();
+            controller = new ZipLoaderController(this);
+            toolbar = new ZipLoaderToolbar(controller, mainWindow);
+        } catch (IOException e) {
+            logger.catching(e);
+        }
+
+    }
+
+    @Override
+    public void onHide() {
+
+    }
+
+    @Override
+    public void onShow(CityDoctorModel model, Checker checker) {
+
+    }
+
+    private void openZipArchive(){
+        FileChooser fileChooser = new FileChooser();
+        fileChooser.setTitle("Open ZIP-file");
+        fileChooser.getExtensionFilters().add(
+                new FileChooser.ExtensionFilter("Zip File", "*.zip"));
+        File selectedFile = fileChooser.showOpenDialog(parent);
+        if(selectedFile != null){
+            controller.openZipArchive(selectedFile);
+        }
+    }
 }
diff --git a/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/resources/de/hft/stuttgart/citydoctor2/ziploader/gui/zip.png b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/resources/de/hft/stuttgart/citydoctor2/ziploader/gui/zip.png
new file mode 100644
index 0000000000000000000000000000000000000000..acdf663537eb5b282f5b563ac4d75e9951598c7e
GIT binary patch
literal 852
zcmV-a1FQUrP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80009UNkl<ZSVzT|
z-)qxQ6vyvP(**k~O=M#Z6sAmvAmW~;Oqg>o!d{g5<5fiGAK;THIuIZH3sig-M19l;
z!QaYInD~ncqWCh9p*BgYwJapp?_Ha%bV<|Rwl*)fN$$Dd&pG#;b5lyXe9<oJla>II
z$z)$V9v=#G!t=a^d_MoBo|8fVTv$=$o0QUhQ4wT}d~{v!U>Hc#09;&E<!6M@!HW1i
zM1BN=u#JG+jQ96U)0zyL(-c4|mFiWL*o!K0;=1gxZQFN(7SCidhAd0J@GhUrSz1c~
z5buFF_k4&k_6CbB!n*_Y0JxxGWEmd;5a?_}5m+lOjZ^B~0L&C2>_{$W-ww-#mI2CP
zq%X^!lMfj8nx<(Rh6d3N190(JOnO2o*}=t;&11;sTsgEI1~3egVN8QK-Bl|NeO1@9
zuK>1_F?ZB73y4tgCA<Z?u3d%rbp1MKpRoVKm{V#y0LTkiG!?S&A0*!c$MH@U3I$$f
zp_gz3q70)tp#MH<ozOCjGVCfqB9YjjD9W}*AS8)A=JPy{@N>hoEbCphUDFXjWM<F_
z&m%z_YGP|4*=r>39z1vXI}v~)?ACE(fXrfvr7DpD{Qd^Cttj2ktIyd8cvb%%?R!7Y
zk4K^a%e|dnrP5M=u~_`>-=lOdp-G<OC5-X3|6J3wEs{j%0JeM}Ri7Us5m*7J2>f*%
zcUYE54<XVFgvSAJ9pfo<OMYI&a1b3w<9ZH&(Y6D?n<>X}W>q!*7Gm=__s0Nm4FJ<<
z<%6=EU-Z1Jj%0if@l0C*kONnE$l)nJrbn>vPpbj&{0w7s5}xyqm;S08Sowx%X$t~!
z;4*;D`VpvX!HL>RXekG<mzJMQQB^=GL$9EH0RR)If`_72a1n+VY8P$%p3R{T?8baY
z2!I>?uTGeURvIl-NBguI_i%M)I-Oo0kH>x@Ic+3oHfW7HNvPe${vE<Tf5o^U0)Sq*
z2_0|%YurL|9%~9fM=ImP6QA33LQK4D1@Ze3KZ>8fn*#7B8%Aoo=gGYy5FPt#CIS;?
eBY32?58)qayW23$l>cu40000<MNUMnLSTYy41%Tr

literal 0
HcmV?d00001

diff --git a/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/resources/de/hft/stuttgart/citydoctor2/ziploader/gui/ZipLoaderGUI.fxml b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/resources/de/hft/stuttgart/citydoctor2/ziploader/gui/zipLoaderGUI.fxml
similarity index 100%
rename from CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/resources/de/hft/stuttgart/citydoctor2/ziploader/gui/ZipLoaderGUI.fxml
rename to CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/resources/de/hft/stuttgart/citydoctor2/ziploader/gui/zipLoaderGUI.fxml
diff --git a/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/resources/de/hft/stuttgart/citydoctor2/ziploader/gui/zipLoaderToolbar.fxml b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/resources/de/hft/stuttgart/citydoctor2/ziploader/gui/zipLoaderToolbar.fxml
new file mode 100644
index 0000000..e70be18
--- /dev/null
+++ b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/resources/de/hft/stuttgart/citydoctor2/ziploader/gui/zipLoaderToolbar.fxml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.Separator?>
+<?import javafx.scene.control.ToggleButton?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.HBox?>
+
+<HBox maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" spacing="5.0" xmlns="http://javafx.com/javafx/22" xmlns:fx="http://javafx.com/fxml/1">
+   <children>
+      <ToggleButton fx:id="openZipBtn" mnemonicParsing="false" selected="true">
+         <graphic>
+            <ImageView fx:id="openZipImage" fitHeight="32.0" fitWidth="32.0" pickOnBounds="true" preserveRatio="true" />
+         </graphic>
+      </ToggleButton>
+      <ToggleButton fx:id="loadEntryBtn" mnemonicParsing="false">
+         <graphic>
+            <ImageView fx:id="loadEntryImage" fitHeight="32.0" fitWidth="32.0" pickOnBounds="true" preserveRatio="true" />
+         </graphic>
+      </ToggleButton>
+      <Separator orientation="VERTICAL" />
+      <HBox fx:id="spacer" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minWidth="0.0" />
+      <Button fx:id="exportZipBtn" mnemonicParsing="false">
+         <graphic>
+            <ImageView fx:id="exportZipImage" fitHeight="32.0" fitWidth="32.0" pickOnBounds="true" preserveRatio="true" />
+         </graphic>
+      </Button>
+   </children>
+   <padding>
+      <Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
+   </padding>
+</HBox>
diff --git a/CityDoctorParent/pom.xml b/CityDoctorParent/pom.xml
index 916e1aa..6c5ac5a 100644
--- a/CityDoctorParent/pom.xml
+++ b/CityDoctorParent/pom.xml
@@ -51,28 +51,15 @@
                 <configuration>
                     <showWarnings>true</showWarnings>
                     <showDeprecation>true</showDeprecation>
+                    <annotationProcessorPaths>
+                        <path>
+                            <groupId>info.picocli</groupId>
+                            <artifactId>picocli-codegen</artifactId>
+                            <version>4.7.6</version>
+                        </path>
+                    </annotationProcessorPaths>
                 </configuration>
             </plugin>
-            <plugin>
-                <groupId>org.codehaus.plexus</groupId>
-                <artifactId>plexus-compiler-api</artifactId>
-                <version>2.15.0</version>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.plexus</groupId>
-                <artifactId>plexus-compiler-manager</artifactId>
-                <version>2.15.0</version>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.plexus</groupId>
-                <artifactId>plexus-compiler-eclipse</artifactId>
-                <version>2.15.0</version>
-            </plugin>
-            <plugin>
-                <groupId>org.openjfx</groupId>
-                <artifactId>javafx-maven-plugin</artifactId>
-                <version>0.0.8</version>
-            </plugin>
         </plugins>
     </build>
     <dependencyManagement>
@@ -233,6 +220,11 @@
                 <artifactId>jakarta.xml.bind-api</artifactId>
                 <version>2.3.3</version>
             </dependency>
+            <dependency>
+                <groupId>info.picocli</groupId>
+                <artifactId>picocli</artifactId>
+                <version>4.7.6</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
     <dependencies>
@@ -257,6 +249,11 @@
             <artifactId>javafx-swing</artifactId>
             <version>${jfx-version}</version>
         </dependency>
+        <dependency>
+            <groupId>info.picocli</groupId>
+            <artifactId>picocli</artifactId>
+            <version>4.7.6</version>
+        </dependency>
     </dependencies>
     <modules>
         <!--CityDoctor2 Core Modules-->
-- 
GitLab