From ff43402bd56330adb9792d68fca297a231147998 Mon Sep 17 00:00:00 2001
From: m19023837 <chadi.mansour@etu.univ-amu.fr>
Date: Fri, 11 Oct 2024 11:04:01 +0200
Subject: [PATCH] Tp real end with everything functionning

---
 build.gradle                            |  2 +-
 src/main/java/shape/App.java            |  7 +------
 src/main/java/shape/Drawer.java         |  8 ++++++--
 src/main/java/state/App.java            |  2 ++
 src/main/java/state/Drawer.java         |  1 +
 src/main/java/state/DrawerContext.java  |  2 ++
 src/main/java/state/StateCircle0.java   |  6 ++++++
 src/main/java/state/StateMoveShape.java | 11 ++++++-----
 8 files changed, 25 insertions(+), 14 deletions(-)

diff --git a/build.gradle b/build.gradle
index 20534b2..de962db 100644
--- a/build.gradle
+++ b/build.gradle
@@ -20,7 +20,7 @@ dependencies {
     testImplementation 'org.hamcrest:hamcrest-library:1.3'
 }
 
-mainClassName = "shape.App"
+mainClassName = "state.App"
 
 
 test {
diff --git a/src/main/java/shape/App.java b/src/main/java/shape/App.java
index f83bfd0..c5ec45d 100644
--- a/src/main/java/shape/App.java
+++ b/src/main/java/shape/App.java
@@ -1,16 +1,11 @@
 package shape;
 
 import javafx.application.Application;
-import javafx.geometry.Point2D;
 import javafx.scene.Group;
 import javafx.scene.Scene;
-import javafx.scene.canvas.Canvas;
-import javafx.scene.canvas.GraphicsContext;
-import javafx.scene.paint.Color;
 import javafx.stage.Stage;
 
 
-
 public class App extends Application {
 
     @Override
@@ -20,7 +15,7 @@ public class App extends Application {
         Group root = new Group();
         root.getChildren().add(drawer.getCanvas());
 
-        Scene scene = new Scene(root, 400, 400);
+        Scene scene = new Scene(root, 600, 400);
 
         primaryStage.setTitle("JavaFX Drawer");
         primaryStage.setScene(scene);
diff --git a/src/main/java/shape/Drawer.java b/src/main/java/shape/Drawer.java
index c9d157c..6ace9a3 100644
--- a/src/main/java/shape/Drawer.java
+++ b/src/main/java/shape/Drawer.java
@@ -1,10 +1,12 @@
 package shape;
 
+
 import javafx.scene.canvas.Canvas;
 import javafx.scene.canvas.GraphicsContext;
 import javafx.scene.input.KeyCode;
 import javafx.scene.input.MouseButton;
-
+import state.DrawerContext;
+import state.StateMoveShape;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -19,6 +21,7 @@ public class Drawer {
     private  String currentShapeType = "rectangle";
     private Shape tempShape = null;
     private boolean isFinished = false;
+    public DrawerContext context;
 
 
     public Drawer(double width, double height) {
@@ -50,6 +53,7 @@ public class Drawer {
                 double x = event.getX();
                 double y = event.getY();
              //   tempShape = new Rectangle(x, y, 0, 0);
+                System.out.println(currentShapeType);
                 if (currentShapeType.equals("rectangle")) {
                     tempShape = new Rectangle(x, y, 0, 0);
                 }else if (currentShapeType.equals("circle")) {
@@ -95,7 +99,7 @@ public class Drawer {
                 currentShapeType = "circle";
                 System.out.println("Current shape type is: " + currentShapeType);
             } else if (event.getCode() == KeyCode.M) {
-                currentShapeType = state.StateMoveShape();
+                currentShapeType = null ;
             }
         });
     }
diff --git a/src/main/java/state/App.java b/src/main/java/state/App.java
index 09f71cf..7a694f2 100644
--- a/src/main/java/state/App.java
+++ b/src/main/java/state/App.java
@@ -4,6 +4,7 @@ import javafx.application.Application;
 import javafx.scene.Group;
 import javafx.scene.Scene;
 import javafx.stage.Stage;
+import shape.Circle;
 
 public class App extends Application {
 
@@ -15,6 +16,7 @@ public class App extends Application {
     public void start(Stage primaryStage) {
         Group root = new Group();
         Drawer container = new Drawer(800, 600);
+
         root.getChildren().add(container);
         primaryStage.setScene(new Scene(root));
         primaryStage.show();
diff --git a/src/main/java/state/Drawer.java b/src/main/java/state/Drawer.java
index 5e2b152..0533cbd 100644
--- a/src/main/java/state/Drawer.java
+++ b/src/main/java/state/Drawer.java
@@ -29,6 +29,7 @@ public class Drawer extends Canvas {
     }
     public void addShape(Shape shape){
         shapes.add(shape);
+        repaint();
     }
     public Shape shapeContains(double x, double y){
         for(Shape shape : shapes){
diff --git a/src/main/java/state/DrawerContext.java b/src/main/java/state/DrawerContext.java
index 8a36641..082b59f 100644
--- a/src/main/java/state/DrawerContext.java
+++ b/src/main/java/state/DrawerContext.java
@@ -35,12 +35,14 @@ public class DrawerContext {
         switch (event.getText()) {
             case "c":
                 setState(new StateCircle0());
+                System.out.println("circle state");
                 break;
             case "r":
                 setState(new StateRectangle0());
                 break;
             case "m":
                 setState(new StateMoveShape());
+                System.out.println("state: " + currentState);
                 break;
             default:
                 setState(new NullDrawerState());
diff --git a/src/main/java/state/StateCircle0.java b/src/main/java/state/StateCircle0.java
index c3608de..2a91ba0 100644
--- a/src/main/java/state/StateCircle0.java
+++ b/src/main/java/state/StateCircle0.java
@@ -1,8 +1,14 @@
 package state;
 
+import shape.Circle;
+
 public class StateCircle0 implements DrawerState {
     @Override
     public void mousePressed(DrawerContext context, double x, double y) {
+        Circle circle = new Circle(x, y,0);
+        circle.setFinished(false);
+        context.getDrawer().addShape(circle);
+        context.setState(new StateCircle1(circle));
 
     }
 
diff --git a/src/main/java/state/StateMoveShape.java b/src/main/java/state/StateMoveShape.java
index b6e8275..dfcbb29 100644
--- a/src/main/java/state/StateMoveShape.java
+++ b/src/main/java/state/StateMoveShape.java
@@ -9,6 +9,7 @@ public class StateMoveShape implements DrawerState{
     @Override
     public void mousePressed(DrawerContext context, double x, double y) {
         selectedShape = context.getDrawer().shapeContains(x,y);
+        System.out.println("selectedShape : " + selectedShape);
         if(selectedShape != null) {
             previousX = x;
             previousY = y;
@@ -18,6 +19,11 @@ public class StateMoveShape implements DrawerState{
 
     @Override
     public void mouseReleased(DrawerContext context, double x, double y) {
+        selectedShape = null;
+    }
+
+    @Override
+    public void mouseMoved(DrawerContext context, double x, double y) {
         if(selectedShape != null) {
             double deltaX = x - previousX;
             double deltaY = y - previousY;
@@ -28,11 +34,6 @@ public class StateMoveShape implements DrawerState{
         }
     }
 
-    @Override
-    public void mouseMoved(DrawerContext context, double x, double y) {
-        selectedShape = null;
-    }
-
     @Override
     public void paint(DrawerContext context) {
 
-- 
GitLab