diff --git a/IHM/.vscode/settings.json b/IHM/.vscode/settings.json new file mode 100644 index 0000000000000000000000000000000000000000..c995aa5cefc39b8d1744799a04f27ee68d687c6b --- /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 0000000000000000000000000000000000000000..c995aa5cefc39b8d1744799a04f27ee68d687c6b --- /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 0000000000000000000000000000000000000000..563caa90a66470ec44626795eb99abf2c2a33508 --- /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 0000000000000000000000000000000000000000..339c80c8ab9565d0746aeac960b87ca9c8f0c0ce --- /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 0000000000000000000000000000000000000000..a23d23c7c21e281e19f3440606019933985989a0 --- /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 0000000000000000000000000000000000000000..4cbf23dc1ef8bb049c04f2a0b419564ba6ae6cae --- /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 0000000000000000000000000000000000000000..ec60d07cadeed3543381930af530c76d812d7320 --- /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 0000000000000000000000000000000000000000..025b0b06e760632eb12a5223e88e2ee5bca68bb1 --- /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 0000000000000000000000000000000000000000..25ca0909df7d5360f979e6c75aa22d89e53db3d1 --- /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 0000000000000000000000000000000000000000..74677138c741e93611c0cdb9b993acd0df37a43d --- /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 0000000000000000000000000000000000000000..402e529e93fe0a5e17261fb90cd37b0a57e4cd08 --- /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 Binary files /dev/null and b/IHM/demo/target/classes/com/example/App.class differ 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 Binary files /dev/null and b/IHM/demo/target/classes/com/example/PrimaryController.class differ 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 Binary files /dev/null and b/IHM/demo/target/classes/com/example/SecondaryController.class differ 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 0000000000000000000000000000000000000000..74677138c741e93611c0cdb9b993acd0df37a43d --- /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 0000000000000000000000000000000000000000..402e529e93fe0a5e17261fb90cd37b0a57e4cd08 --- /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 Binary files /dev/null and b/IHM/demo/target/classes/module-info.class differ 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 Binary files /dev/null and b/IHM/demo/target/classes/tp01/app_nico.class differ 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 Binary files /dev/null and b/IHM/demo/target/classes/tp02/HelloPaint.class differ