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