From cec8b85d7d39a7f300d097d12db4682c67e8eb81 Mon Sep 17 00:00:00 2001
From: Nicolas ECKMAN
 <nicolas.eckman.etu@bouleau08.iut-infobio.priv.univ-lille1.fr>
Date: Thu, 4 May 2023 18:04:40 +0200
Subject: [PATCH] pue

---
 IHM/.vscode/settings.json                     |   3 +
 IHM/demo/.vscode/settings.json                |   3 +
 IHM/demo/pom.xml                              |  51 ++++++++++++
 IHM/demo/src/main/java/com/example/App.java   |  38 +++++++++
 .../java/com/example/PrimaryController.java   |  12 +++
 .../java/com/example/SecondaryController.java |  12 +++
 IHM/demo/src/main/java/module-info.java       |   9 +++
 IHM/demo/src/main/java/tp01/SimpleScene.java  |  64 +++++++++++++++
 IHM/demo/src/main/java/tp02/HelloPaint.java   |  75 ++++++++++++++++++
 .../main/resources/com/example/primary.fxml   |  16 ++++
 .../main/resources/com/example/secondary.fxml |  16 ++++
 IHM/demo/target/classes/com/example/App.class | Bin 0 -> 1729 bytes
 .../com/example/PrimaryController.class       | Bin 0 -> 575 bytes
 .../com/example/SecondaryController.class     | Bin 0 -> 577 bytes
 .../target/classes/com/example/primary.fxml   |  16 ++++
 .../target/classes/com/example/secondary.fxml |  16 ++++
 IHM/demo/target/classes/module-info.class     | Bin 0 -> 263 bytes
 IHM/demo/target/classes/tp01/app_nico.class   | Bin 0 -> 1883 bytes
 IHM/demo/target/classes/tp02/HelloPaint.class | Bin 0 -> 4397 bytes
 19 files changed, 331 insertions(+)
 create mode 100644 IHM/.vscode/settings.json
 create mode 100644 IHM/demo/.vscode/settings.json
 create mode 100644 IHM/demo/pom.xml
 create mode 100644 IHM/demo/src/main/java/com/example/App.java
 create mode 100644 IHM/demo/src/main/java/com/example/PrimaryController.java
 create mode 100644 IHM/demo/src/main/java/com/example/SecondaryController.java
 create mode 100644 IHM/demo/src/main/java/module-info.java
 create mode 100644 IHM/demo/src/main/java/tp01/SimpleScene.java
 create mode 100644 IHM/demo/src/main/java/tp02/HelloPaint.java
 create mode 100644 IHM/demo/src/main/resources/com/example/primary.fxml
 create mode 100644 IHM/demo/src/main/resources/com/example/secondary.fxml
 create mode 100644 IHM/demo/target/classes/com/example/App.class
 create mode 100644 IHM/demo/target/classes/com/example/PrimaryController.class
 create mode 100644 IHM/demo/target/classes/com/example/SecondaryController.class
 create mode 100644 IHM/demo/target/classes/com/example/primary.fxml
 create mode 100644 IHM/demo/target/classes/com/example/secondary.fxml
 create mode 100644 IHM/demo/target/classes/module-info.class
 create mode 100644 IHM/demo/target/classes/tp01/app_nico.class
 create mode 100644 IHM/demo/target/classes/tp02/HelloPaint.class

diff --git a/IHM/.vscode/settings.json b/IHM/.vscode/settings.json
new file mode 100644
index 0000000..c995aa5
--- /dev/null
+++ b/IHM/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+    "java.debug.settings.onBuildFailureProceed": true
+}
\ No newline at end of file
diff --git a/IHM/demo/.vscode/settings.json b/IHM/demo/.vscode/settings.json
new file mode 100644
index 0000000..c995aa5
--- /dev/null
+++ b/IHM/demo/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+    "java.debug.settings.onBuildFailureProceed": true
+}
\ No newline at end of file
diff --git a/IHM/demo/pom.xml b/IHM/demo/pom.xml
new file mode 100644
index 0000000..563caa9
--- /dev/null
+++ b/IHM/demo/pom.xml
@@ -0,0 +1,51 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>com.example</groupId>
+    <artifactId>demo</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>11</maven.compiler.source>
+        <maven.compiler.target>11</maven.compiler.target>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.openjfx</groupId>
+            <artifactId>javafx-controls</artifactId>
+            <version>13</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openjfx</groupId>
+            <artifactId>javafx-fxml</artifactId>
+            <version>13</version>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.8.0</version>
+                <configuration>
+                    <release>11</release>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.openjfx</groupId>
+                <artifactId>javafx-maven-plugin</artifactId>
+                <version>0.0.6</version>
+                <executions>
+                    <execution>
+                        <!-- Default configuration for running -->
+                        <!-- Usage: mvn clean javafx:run -->
+                        <id>default-cli</id>
+                        <configuration>
+                            <mainClass>com.example.App</mainClass>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/IHM/demo/src/main/java/com/example/App.java b/IHM/demo/src/main/java/com/example/App.java
new file mode 100644
index 0000000..339c80c
--- /dev/null
+++ b/IHM/demo/src/main/java/com/example/App.java
@@ -0,0 +1,38 @@
+package com.example;
+
+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"), 640, 480);
+        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/IHM/demo/src/main/java/com/example/PrimaryController.java b/IHM/demo/src/main/java/com/example/PrimaryController.java
new file mode 100644
index 0000000..a23d23c
--- /dev/null
+++ b/IHM/demo/src/main/java/com/example/PrimaryController.java
@@ -0,0 +1,12 @@
+package com.example;
+
+import java.io.IOException;
+import javafx.fxml.FXML;
+
+public class PrimaryController {
+
+    @FXML
+    private void switchToSecondary() throws IOException {
+        App.setRoot("secondary");
+    }
+}
diff --git a/IHM/demo/src/main/java/com/example/SecondaryController.java b/IHM/demo/src/main/java/com/example/SecondaryController.java
new file mode 100644
index 0000000..4cbf23d
--- /dev/null
+++ b/IHM/demo/src/main/java/com/example/SecondaryController.java
@@ -0,0 +1,12 @@
+package com.example;
+
+import java.io.IOException;
+import javafx.fxml.FXML;
+
+public class SecondaryController {
+
+    @FXML
+    private void switchToPrimary() throws IOException {
+        App.setRoot("primary");
+    }
+}
\ No newline at end of file
diff --git a/IHM/demo/src/main/java/module-info.java b/IHM/demo/src/main/java/module-info.java
new file mode 100644
index 0000000..ec60d07
--- /dev/null
+++ b/IHM/demo/src/main/java/module-info.java
@@ -0,0 +1,9 @@
+module com.example {
+    requires javafx.controls;
+    requires javafx.fxml;
+
+    opens com.example to javafx.fxml;
+    exports com.example;
+    exports tp01;
+    exports tp02;
+}
diff --git a/IHM/demo/src/main/java/tp01/SimpleScene.java b/IHM/demo/src/main/java/tp01/SimpleScene.java
new file mode 100644
index 0000000..025b0b0
--- /dev/null
+++ b/IHM/demo/src/main/java/tp01/SimpleScene.java
@@ -0,0 +1,64 @@
+package tp01;
+import javafx.application.Application;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.Label;
+import javafx.scene.control.Menu;
+import javafx.scene.control.MenuBar;
+import javafx.scene.control.MenuItem;
+import javafx.scene.control.SeparatorMenuItem;
+import javafx.scene.control.ToolBar;
+import javafx.scene.layout.BorderPane;
+import javafx.scene.layout.FlowPane;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.VBox;
+import javafx.stage.Stage;
+
+public class app_nico extends Application {
+
+  public void start(Stage stage) {
+    BorderPane root = new BorderPane();
+
+    MenuBar bar = new MenuBar();
+    final Menu menu_fichier = new Menu("Fichier");
+    menu_fichier.getItems().add(new MenuItem("Nouveau"));
+    menu_fichier.getItems().add(new MenuItem("Ouvrir"));
+    menu_fichier.getItems().add(new MenuItem("Enregistrer"));
+    menu_fichier.getItems().add(new MenuItem("Enregistrer sous"));
+    menu_fichier.getItems().add(new SeparatorMenuItem());
+    menu_fichier.getItems().add(new MenuItem("Mise en page"));
+    menu_fichier.getItems().add(new MenuItem("Imprimer"));
+    menu_fichier.getItems().add(new SeparatorMenuItem());
+    menu_fichier.getItems().add(new MenuItem("Quitter"));
+    final Menu menu_edition = new Menu("Edition");
+
+    MenuBar menu = new MenuBar(menu_fichier, menu_edition);
+
+    TextArea zone_de_texte = new TextArea("Lorem Ipsum");
+
+    label rechercher = new Label("Rechercher: ");
+
+    TextField recherche = new Label();
+
+    Image previousImage = new Image("file:///home/infoetu/aymeri.tourneur.etu/T%C3%A9l%C3%A9chargements/previous_motif.gif");
+    Image nextImage = new Image("file:///home/infoetu/aymeri.tourneur.etu/T%C3%A9l%C3%A9chargements/next_motif.gif");
+    ImageView previous = new ImageView(previousImage);
+    ImageView next = new ImageView(nextImage);
+
+    Button surligner = new Button("Tout surligner");
+
+    HBox hbox = new HBox(rechercher, recherche, previous, next, surligner);
+
+    root.setBottom()
+
+
+
+
+
+
+}
+
+  public static void main(String[] args) {
+    Application.launch(args);
+  }
+}
\ No newline at end of file
diff --git a/IHM/demo/src/main/java/tp02/HelloPaint.java b/IHM/demo/src/main/java/tp02/HelloPaint.java
new file mode 100644
index 0000000..25ca090
--- /dev/null
+++ b/IHM/demo/src/main/java/tp02/HelloPaint.java
@@ -0,0 +1,75 @@
+package tp02;
+
+import java.util.ArrayList;
+
+import javafx.application.Application;
+import javafx.scene.Scene;
+import javafx.scene.canvas.Canvas;
+import javafx.scene.canvas.GraphicsContext;
+import javafx.scene.layout.VBox;
+import javafx.scene.paint.Color;
+import javafx.scene.shape.Rectangle;
+import javafx.stage.Stage;
+
+
+public class HelloPaint extends Application {
+
+    public void start(Stage stage) {
+            VBox root = new VBox();
+            Canvas canvas = new Canvas (1000, 1000);
+            ArrayList<Rectangle> memoire = new ArrayList<Rectangle>();
+            GraphicsContext gc = canvas.getGraphicsContext2D();
+            root.getChildren().add(canvas);
+
+            canvas.setOnMouseClicked( e -> {
+                double posx = e.getSceneX()-10;
+                double posy = e.getSceneY()-10;
+                Rectangle carre = new Rectangle(posx, posy, 20,20);
+                if (!e.isShiftDown()){
+                    gc.setFill(Color.ORANGE);
+                    gc.fillRect(posx, posy, 20, 20);
+                    gc.setStroke(Color.BLACK);
+                    gc.strokeRect(posx, posy, 20, 20);
+                    memoire.add(carre);
+                }
+                if (e.isShiftDown()){
+                    for (Rectangle elem : memoire){
+                        if (posx > elem.getX()-10 && posx < elem.getX()+10 && posy > elem.getY()-10 && posy < elem.getY()+10){
+                            memoire.remove(elem);
+                            gc.clearRect(0, 0, 1000, 1000);
+                            break;
+                        }
+                    }
+                    for (Rectangle elem : memoire){
+                        gc.setFill(Color.ORANGE);
+                        gc.fillRect(elem.getX(), elem.getY(), 20, 20);
+                        gc.setStroke(Color.BLACK);
+                        gc.strokeRect(elem.getX(), elem.getY(), 20, 20);
+                    }
+                }
+            });
+
+            canvas.setOnMouseMoved(e ->{
+                double posx = e.getSceneX()-10;
+                double posy = e.getSceneY()-10;
+                for (Rectangle elem : memoire){
+                    if (posx > elem.getX()-10 && posx < elem.getX()+10 && posy > elem.getY()-10 && posy < elem.getY()+10){
+                        gc.setFill(Color.RED);
+                        gc.fillRect(elem.getX(), elem.getY(), 20, 20);
+                    }else{
+                        gc.setFill(Color.ORANGE);
+                        gc.fillRect(elem.getX(), elem.getY(), 20, 20);
+                    }
+                }
+            });
+
+            Scene scene = new Scene(root);
+            stage.setTitle("Je suis la");
+            stage.setScene(scene);
+            stage.show();
+    }
+
+    public static void main(String[] args) {
+            Application.launch(args);
+    }
+}
\ No newline at end of file
diff --git a/IHM/demo/src/main/resources/com/example/primary.fxml b/IHM/demo/src/main/resources/com/example/primary.fxml
new file mode 100644
index 0000000..7467713
--- /dev/null
+++ b/IHM/demo/src/main/resources/com/example/primary.fxml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.Button?>
+<?import javafx.geometry.Insets?>
+
+<VBox alignment="CENTER" spacing="20.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.example.PrimaryController">
+   <children>
+      <Label text="Primary View" />
+      <Button fx:id="primaryButton" text="Switch to Secondary View" onAction="#switchToSecondary"/>
+   </children>
+   <padding>
+      <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+   </padding>
+</VBox>
diff --git a/IHM/demo/src/main/resources/com/example/secondary.fxml b/IHM/demo/src/main/resources/com/example/secondary.fxml
new file mode 100644
index 0000000..402e529
--- /dev/null
+++ b/IHM/demo/src/main/resources/com/example/secondary.fxml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.Button?>
+<?import javafx.geometry.Insets?>
+
+<VBox alignment="CENTER" spacing="20.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.example.SecondaryController">
+    <children>
+        <Label text="Secondary View" />
+        <Button fx:id="secondaryButton" text="Switch to Primary View" onAction="#switchToPrimary" />
+    </children>
+    <padding>
+        <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+    </padding>
+</VBox>
diff --git a/IHM/demo/target/classes/com/example/App.class b/IHM/demo/target/classes/com/example/App.class
new file mode 100644
index 0000000000000000000000000000000000000000..5ef718a964a9eb07edcf8bf6aabc4ade9cfc71c1
GIT binary patch
literal 1729
zcmX^0Z`VEs1_pD640Z-4Mh5=m{9OIiip1Q4oK$_sf&z917DfiSti-a!v<m&if`XjP
z<iwK9{5+5xjLpcvTAZAkm&(W>;saF)=IaN8M6DSa*laTMGE3|j8JIOR!x$M@obyvs
zxfqxkxOo`Z88{dj_<b_-QvFJElTwR95|eUL85x9p@{<#D!V-%zL42qnOG!p%F(ZSZ
z51JdTK@KQMEGl7S5Z8dapd>LpRX-R+T7xX*a;->CEdV*an4Lj{kwF;bQvJ+)eNTV5
z3_F7uBZCk~BCSFn$qO6|5{wM&1x1;;iA9xM42%p?JPgtdGK>ryIr)hxZV|pdj0~C(
zoAq-N^V0Q$ONuh{(ycY&jsXRPen4VTYF>#on?nl&7_d3ifoTRV22lnjP*^B4GDtzp
zfja=I$;Cx8jFW+pL6wJrm4S_mL7hR9ok0W1wIGi|yvxI&#h}f|z)_r90*(NbPyssx
zENrbA1~NvMhd~b%2Q0-I`Q?y+Oh<`Hgu&K~4D7|JB|-W5C5#NB5O<>bHw@$x6CMUb
z22(}`35W`GpMWBRC9NVi2NcVoutqV0oxzfkK@23ER-q44r4I^TpZvs>)FO5UYeoif
zkQ}lWr_#)vl++?F23rPub_P2}1_5*xJPZyDj*JZKWr;bZss3q<3~CUUK}_*a%1TWx
zfyNa?2pWA{3|0)zplC7TU~pw*VATV;2PEju!{EW-$;iN#SWu9fm%_-Pi)<iNHze|r
z4TQSX8f1hw4}%YbFCzm-Nj^k9BZG(rrWR{127iV?c7^~(27ZLMoO2S3i+LD=7=jrY
zxYJWhf>Mj~ON)|I85xvtJ0vf)L_ajh$C``5f*};-t1w0eL8x+=94JXxFhuY$L^4D%
zGO&PBH@dr^!NtxH1I<Hd@yp1-1qvoej4?7uz_I{H5GgLL85vk|6EpJ|8N@WA!D^60
z3Y<0>8IpJyk{J>h8Q5|XOY@R57#Ua+i_(i38HBOuU}WG51_y#$Ca3`6a4aa$1BDoa
zA_F4>GXnzyBLf#G>o71dure@$${hwq22KVB27Lxb21bym)^-N2jSLJ7Obk2>3=C{w
zK|Tgv1_lNmFq@TukAWX-kN|@q0~3P~0|NsK10#bl*qB5Hb_ON}1_s6545E=j;yV~5
zMHpm7805DzC~js@(cZ+MvW-DadmDoe!U`b<76t|e5e88PQ3e?XF$M(&aj<n_5QCuB
zF)%1H=rb5FFfwp37%~`PSZv9_1a=<xCI%I)9SoA&7>p5CaDk1IV&Gzs1{)3W2{(fo
zgE<2OSX2hXzyt<1ur7_=3>J|>jJp}EBDHof*lcHT5^~wb;I@syYa4^#c7_li?QIO<
z2N<F^z{3n;n;e4zgFM(ah(|P_wka@hFvK#%frCAsApuM?FqlDupM!ZXgY6E6M0B^S
YFt9KvgH40Dor58TAr%}8X<&QP0qG2X&j0`b

literal 0
HcmV?d00001

diff --git a/IHM/demo/target/classes/com/example/PrimaryController.class b/IHM/demo/target/classes/com/example/PrimaryController.class
new file mode 100644
index 0000000000000000000000000000000000000000..d81945d545c56a2a16b78ed7a4ee84f86dcdd5f6
GIT binary patch
literal 575
zcmX^0Z`VEs1_pBmId%pnMh4mB{9OIiip1Q4oK*dQqRiaHqDtrdypp2)oSf7mb_Nzk
z27#=^vPAuy#JqHU|D>$c<Pt^(Hk-`6%o00B24)S-Fh&Lz=lqmZE(T@>P96qU1~x_p
zexJ;|RKL>Pq|~C2#H5^5Mg}3D{N%)(u*9NF5FaYYQj(Eb%*Y_`gVzz(j0}Rs<(VbP
z86o+>smb|yDTzguj0{|^70IauC7Jno#q11%j10nHXJ+Q>d-}s=7#SpkO7luGb5p}I
zi!+mQQXTX1@=FrInm}#>X-TWlPpiny(RYjR^|9t)5M^ZGEQZ;_#URcg$<83b$iR>6
zM8|>x9tJ4}X+{S2;?$C${QMF|22l+kkZF)`3N9(i%uBZhg$-A5erZv1s#_)~6vQw>
zSP!I$L6L!xftdjWm>3vALCC<!z|O$HpwGa_z{tSBz^b*Kfny^B0|OHS7Xt$W8(5Hy
zft!JWfd|ZHW#D1p1<Ug>urV+*@G~$lurM$(2rvji)eAE)fQ>YP8p$RkvV%bkVI~&?
Z69WSS7XvE;H<Gz*P;(g>WWc7&0s!3ze)IqU

literal 0
HcmV?d00001

diff --git a/IHM/demo/target/classes/com/example/SecondaryController.class b/IHM/demo/target/classes/com/example/SecondaryController.class
new file mode 100644
index 0000000000000000000000000000000000000000..30c3cb08202be51cec8f05920b0e407e49cf0f4e
GIT binary patch
literal 577
zcmX^0Z`VEs1_pBmId%pnMh5xh{9OIiip1Q4oK*eb)a3lUl*FP+=lr~qqWqkk)FO5U
z7Dfhvti-ZJ{hY+SbbbG%tkmQZMg}&U%)HDJJ4Oa(4b3n{1{UZ1lvFMTW(H0k237_(
zMh1SL%)C^;(%hufqL9R-oK!{zA)ox@#GJ6iqD&AUD#%ijky*^hpy)%u8P<#p{Ke&&
zCCM2f`2j_lxrs%Uj0{|^70IauC7Jno#q11%j10nHXJ+Q>d-}s=7#SpkO7luGb5p}I
zi!+mQQXTX1@=FrInm}#>X-TWlPpiny(RYjR^|9t)5M^XwFM!y=#URcg$<83b$iR>6
zK*xdt9tJ4}X+{S2;?$C${QMF|22l+kkXevW3N9(i%uBZhg$!44erZv1s#_)~3?#6G
zupUSogCYYX12Y2%FflNKf{=lcft`VYL7#z<fsuiMfmLfe1II=N1_mYuE(Qh$Hn1QY
z12+Q$0}q(Z%D}_G3zp|&U}Ior;Adc9U}0cn5MU63suyNp02^rnHIhw8WCw#7!b~m(
ZCI$uuE(TTxZX|Qrpyo0%$be0k1ptCsf4Tqw

literal 0
HcmV?d00001

diff --git a/IHM/demo/target/classes/com/example/primary.fxml b/IHM/demo/target/classes/com/example/primary.fxml
new file mode 100644
index 0000000..7467713
--- /dev/null
+++ b/IHM/demo/target/classes/com/example/primary.fxml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.Button?>
+<?import javafx.geometry.Insets?>
+
+<VBox alignment="CENTER" spacing="20.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.example.PrimaryController">
+   <children>
+      <Label text="Primary View" />
+      <Button fx:id="primaryButton" text="Switch to Secondary View" onAction="#switchToSecondary"/>
+   </children>
+   <padding>
+      <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+   </padding>
+</VBox>
diff --git a/IHM/demo/target/classes/com/example/secondary.fxml b/IHM/demo/target/classes/com/example/secondary.fxml
new file mode 100644
index 0000000..402e529
--- /dev/null
+++ b/IHM/demo/target/classes/com/example/secondary.fxml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.layout.VBox?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.Button?>
+<?import javafx.geometry.Insets?>
+
+<VBox alignment="CENTER" spacing="20.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.example.SecondaryController">
+    <children>
+        <Label text="Secondary View" />
+        <Button fx:id="secondaryButton" text="Switch to Primary View" onAction="#switchToPrimary" />
+    </children>
+    <padding>
+        <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
+    </padding>
+</VBox>
diff --git a/IHM/demo/target/classes/module-info.class b/IHM/demo/target/classes/module-info.class
new file mode 100644
index 0000000000000000000000000000000000000000..d38c0200ee7d97c8f7a48524bb4120250320ca1b
GIT binary patch
literal 263
zcmX^0Z`VEs1_pBm5q1V9Mh5QO{FKt1RNc(Hw0uSeuHgLAqU2P!%$!t41_2}~y{yEt
zL`DWSU$AOn26jdU?&SPjz0``t+=84`VFpe{27Zv5v<kiC{JfH){G4K825v?MZm3{d
zMQ)BT11}>3CrCgqDX}<Jgn=Joiayj75e7j<29}Zn149u8VF=5pfq{XM0S1^Dm>C!t
um>5_XSQ!`?Y#7+U63h%7V44d|@-%=bW(GbG#UKDCg}@{uSd5VYtPTLKpfJS%

literal 0
HcmV?d00001

diff --git a/IHM/demo/target/classes/tp01/app_nico.class b/IHM/demo/target/classes/tp01/app_nico.class
new file mode 100644
index 0000000000000000000000000000000000000000..f808947047b84db623f11d507cf7ad663afb2046
GIT binary patch
literal 1883
zcmX^0Z`VEs1_pBmS#|~{Mh4!J0s}++#DaqOyv*c$b_Nzk2Dz-nvc$9skYG+`a$-ql
zexAN#K>>`-$iQZknU`5&$H>5}p&7==z~Y>rlFH7&$;iMD(y5=5n3t~aT2z!@#KFML
z$h09euPC)RKc_4;MIkvqw;(eIY@|X#QGQZRYHqQW0vBgUMyf(VX;MyRvO-B^L8=1G
zJqo#{#U%<!sR}8nX_<McDGHf+3YjIv3i;)E3Tc@+sa%{PsTC!TMX8Aj$%%P+`Czqh
z+e-2k62ayXtt=-oDK&=(quer6b5aPX^UO_5PaSM(!ZK6KiE+~ar~{>e+|-hc{1k=a
z)Doxsl9K#f4Zr-9R83H<mt>@Zqf)^szbGZOC?GK}RUxxj0TktlkhGbUld6!GU!(w1
znOKxwnwy$eQmmk%$;BC5nOBlnp^yqnk~#{RdBv$kB??N`N(v?U;1rpYT9T>|T#{Il
z3ev;H#lXS9%frCRz{kiSs^No3)4?T0nR)5fpfu0#lbM(5SDKrYS`?C)l#|NHAmo#u
zoR|}qSd<CkLj_q%GBS%98Tfrra+x(F18Z?fVo?brgE++ev<m&=lEm~>{a_Gjtr^C_
zAjZg4Moi8bP5-G}oJ8lf0Z7+iw-I6Qph^FX3@o{cnR$#1Vj9udQa=ZS6eEKo{<LYO
zz{SYG6`WsMl$`383CbS=!I`-QIjO<Psd=e-pghH($iT?J%m4z+42%q{3~UUH4D1XH
z3?>X9J_7^SZU&A>A+GHVJo_0K7?>FN85qE77#IW@1Q-|?co-NN7#O%11Q~=F7#J8C
vgc(GTOke`ZflUy_VuC6b6F3>f86==4XrZ`45{n78U=u*LFfvGk-6sP8M9V*b

literal 0
HcmV?d00001

diff --git a/IHM/demo/target/classes/tp02/HelloPaint.class b/IHM/demo/target/classes/tp02/HelloPaint.class
new file mode 100644
index 0000000000000000000000000000000000000000..d1eb0c2f8974538d5eed26fd576f28ad1f3ab1f3
GIT binary patch
literal 4397
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
K!)1o643Yp4fPEJL

literal 0
HcmV?d00001

-- 
GitLab