From 0e769f3cfcac386d48122b7661622689f38f9ade Mon Sep 17 00:00:00 2001 From: c19014407 <rami.chahine@etu.univ-amu.fr> Date: Fri, 22 Nov 2024 10:55:40 +0100 Subject: [PATCH] . --- src/main/TP5/serializer/App.java | 31 ---------- src/main/TP5/serializer/DrawerWithSave.java | 52 ----------------- src/main/TP5/serializer/ShapeReader.java | 20 ------- src/main/TP5/serializer/ShapeWriter.java | 15 ----- src/main/TP5/shape/Abstractshape.java | 40 ------------- src/main/TP5/shape/App.java | 35 ------------ src/main/TP5/shape/BorderDecorator.java | 24 -------- src/main/TP5/shape/CenterDecorator.java | 27 --------- src/main/TP5/shape/Circle.java | 31 ---------- src/main/TP5/shape/Decorator.java | 28 ---------- src/main/TP5/shape/Polygon.java | 34 ----------- src/main/TP5/shape/Rectangle.java | 30 ---------- src/main/TP5/shape/Shape.java | 9 --- src/main/TP5/shape/ShapeContainer.java | 20 ------- src/main/TP5/state/App.java | 22 -------- src/main/TP5/state/CircleDrawerState0 | 17 ------ src/main/TP5/state/CircleDrawerState1 | 24 -------- src/main/TP5/state/Drawer.java | 36 ------------ src/main/TP5/state/DrawerContext.java | 59 -------------------- src/main/TP5/state/DrawerState.java | 8 --- src/main/TP5/state/MoveShapeState | 33 ----------- src/main/TP5/state/NullDrawerState | 13 ----- src/main/TP5/state/RectangleDrawerState0 | 41 -------------- src/main/TP5/state/RectangleDrawerState1 | 25 --------- src/main/TP5/state/StateCircle0.java | 13 ----- src/main/java/serializer/App.java | 31 ---------- src/main/java/serializer/DrawerWithSave.java | 52 ----------------- src/main/java/serializer/ShapeReader.java | 20 ------- src/main/java/serializer/ShapeWriter.java | 15 ----- src/main/java/shape/Abstractshape.java | 40 ------------- src/main/java/shape/App.java | 35 ------------ src/main/java/shape/BorderDecorator.java | 24 -------- src/main/java/shape/CenterDecorator.java | 27 --------- src/main/java/shape/Circle.java | 25 --------- src/main/java/shape/Decorator.java | 28 ---------- src/main/java/shape/Polygon.java | 34 ----------- src/main/java/shape/Rectangle.java | 32 ----------- src/main/java/shape/Shape.java | 10 ---- src/main/java/shape/ShapeContainer.java | 20 ------- src/main/java/state/App.java | 22 -------- src/main/java/state/Drawer.java | 28 ---------- src/main/java/state/DrawerContext.java | 33 ----------- src/main/java/state/DrawerState.java | 6 -- src/main/java/state/StateCircle0.java | 13 ----- 44 files changed, 1182 deletions(-) delete mode 100644 src/main/TP5/serializer/App.java delete mode 100644 src/main/TP5/serializer/DrawerWithSave.java delete mode 100644 src/main/TP5/serializer/ShapeReader.java delete mode 100644 src/main/TP5/serializer/ShapeWriter.java delete mode 100644 src/main/TP5/shape/Abstractshape.java delete mode 100644 src/main/TP5/shape/App.java delete mode 100644 src/main/TP5/shape/BorderDecorator.java delete mode 100644 src/main/TP5/shape/CenterDecorator.java delete mode 100644 src/main/TP5/shape/Circle.java delete mode 100644 src/main/TP5/shape/Decorator.java delete mode 100644 src/main/TP5/shape/Polygon.java delete mode 100644 src/main/TP5/shape/Rectangle.java delete mode 100644 src/main/TP5/shape/Shape.java delete mode 100644 src/main/TP5/shape/ShapeContainer.java delete mode 100644 src/main/TP5/state/App.java delete mode 100644 src/main/TP5/state/CircleDrawerState0 delete mode 100644 src/main/TP5/state/CircleDrawerState1 delete mode 100644 src/main/TP5/state/Drawer.java delete mode 100644 src/main/TP5/state/DrawerContext.java delete mode 100644 src/main/TP5/state/DrawerState.java delete mode 100644 src/main/TP5/state/MoveShapeState delete mode 100644 src/main/TP5/state/NullDrawerState delete mode 100644 src/main/TP5/state/RectangleDrawerState0 delete mode 100644 src/main/TP5/state/RectangleDrawerState1 delete mode 100644 src/main/TP5/state/StateCircle0.java delete mode 100644 src/main/java/serializer/App.java delete mode 100644 src/main/java/serializer/DrawerWithSave.java delete mode 100644 src/main/java/serializer/ShapeReader.java delete mode 100644 src/main/java/serializer/ShapeWriter.java delete mode 100644 src/main/java/shape/Abstractshape.java delete mode 100644 src/main/java/shape/App.java delete mode 100644 src/main/java/shape/BorderDecorator.java delete mode 100644 src/main/java/shape/CenterDecorator.java delete mode 100644 src/main/java/shape/Circle.java delete mode 100644 src/main/java/shape/Decorator.java delete mode 100644 src/main/java/shape/Polygon.java delete mode 100644 src/main/java/shape/Rectangle.java delete mode 100644 src/main/java/shape/Shape.java delete mode 100644 src/main/java/shape/ShapeContainer.java delete mode 100644 src/main/java/state/App.java delete mode 100644 src/main/java/state/Drawer.java delete mode 100644 src/main/java/state/DrawerContext.java delete mode 100644 src/main/java/state/DrawerState.java delete mode 100644 src/main/java/state/StateCircle0.java diff --git a/src/main/TP5/serializer/App.java b/src/main/TP5/serializer/App.java deleted file mode 100644 index 7fd1281..0000000 --- a/src/main/TP5/serializer/App.java +++ /dev/null @@ -1,31 +0,0 @@ -package serializer; - -import javafx.application.Application; -import javafx.scene.Group; -import javafx.scene.Scene; -import javafx.scene.control.Button; -import javafx.stage.Stage; - -public class App extends Application { - - public static void main(String[] args) { - launch(args); - } - - @Override - public void start(Stage primaryStage) { - Group root = new Group(); - DrawerWithSave container = new DrawerWithSave(800, 600); - root.getChildren().add(container); - primaryStage.setScene(new Scene(root)); - primaryStage.show(); - Button save = new Button("save"); - root.getChildren().add(save); - save.setLayoutX(0); - save.setLayoutY(0); - root.setOnKeyPressed(event->container.context.keyPressed(event)); - //save.setOnKeyPressed(event->container.context.keyPressed(event)); - save.setOnAction(event -> container.write()); - - } -} \ No newline at end of file diff --git a/src/main/TP5/serializer/DrawerWithSave.java b/src/main/TP5/serializer/DrawerWithSave.java deleted file mode 100644 index 2852edf..0000000 --- a/src/main/TP5/serializer/DrawerWithSave.java +++ /dev/null @@ -1,52 +0,0 @@ -package serializer; - -import javafx.scene.canvas.Canvas; -import javafx.scene.control.Alert; -import javafx.stage.FileChooser; -import shape.Shape; - -import java.io.File; -import java.io.IOException; -import java.util.List; -import java.util.stream.Collectors; - - -public class DrawerWithSave extends state.Drawer { - - public DrawerWithSave(int width, int height) { - super(width, height); - } - - void write(){ - FileChooser fileChooser = new FileChooser(); - fileChooser.setTitle("Save"); - File file = fileChooser.showSaveDialog(getScene().getWindow()); - if (file == null) return; - try { - ShapeWriter.write(file, super.shapes); - } - catch (IOException e) { - Alert alert = new Alert(Alert.AlertType.INFORMATION); - alert.setTitle("Error Dialog"); - alert.setHeaderText(null); - alert.setContentText("Ooops, there was an error!"); - alert.showAndWait(); - } - } - public void load() { - FileChooser fileChooser = new FileChooser(); - fileChooser.setTitle("Load"); - File file = fileChooser.showOpenDialog(getScene().getWindow()); - if (file == null) return; - try { - super.shapes = ShapeReader.read(file); - repaint(); - } catch (IOException e) { - Alert alert = new Alert(Alert.AlertType.INFORMATION); - alert.setTitle("Error Dialog"); - alert.setHeaderText(null); - alert.setContentText("Ooops, there was an error!"); - alert.showAndWait(); - } - } -} diff --git a/src/main/TP5/serializer/ShapeReader.java b/src/main/TP5/serializer/ShapeReader.java deleted file mode 100644 index 4905948..0000000 --- a/src/main/TP5/serializer/ShapeReader.java +++ /dev/null @@ -1,20 +0,0 @@ -package serializer; - -import shape.Shape; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.util.List; -import java.util.stream.Collector; - -public class ShapeReader { - public static List<Shape> read(File file) throws IOException { - BufferedReader bufferedReader = new BufferedReader(new FileReader(file)); - /*for(String line : bufferedReader.lines().toList()) { - System.out.println(line); - }*/ - return null; - } -} diff --git a/src/main/TP5/serializer/ShapeWriter.java b/src/main/TP5/serializer/ShapeWriter.java deleted file mode 100644 index 6a76ef8..0000000 --- a/src/main/TP5/serializer/ShapeWriter.java +++ /dev/null @@ -1,15 +0,0 @@ -package serializer; - -import shape.Shape; - -import java.io.File; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.List; - -public class ShapeWriter { - public static void write (File file, List<Shape> shapes) throws IOException { - PrintWriter printWriter = new PrintWriter(file); - printWriter.println("Coucou"); - } -} diff --git a/src/main/TP5/shape/Abstractshape.java b/src/main/TP5/shape/Abstractshape.java deleted file mode 100644 index b6a4e2f..0000000 --- a/src/main/TP5/shape/Abstractshape.java +++ /dev/null @@ -1,40 +0,0 @@ -package shape; -import javafx.geometry.Point2D; -import javafx.scene.canvas.GraphicsContext; -import java.util.List; - - -public abstract class Abstractshape implements Shape { - private List<Point2D> points; - - public Abstractshape(List<Point2D> points) { - this.points = points; - } - public void addPoints(Point2D... points){ - for (Point2D point: points) - this.points.add(point); - } - @Override - public int pointsCount() { - return points.size(); - } - - @Override - public Point2D point(int index) { - return index < points.size() ? points.get(index) : null; - } - - @Override - public void draw(GraphicsContext context) { - if (pointsCount()>0){ - context.beginPath(); - context.moveTo(point(0).getX(), point(0).getY()); - for (int i = 1; i<pointsCount(); i++){ - context.lineTo(point(i).getX(),point(i).getY()); - } - context.closePath(); - context.stroke(); - } - - } -} \ No newline at end of file diff --git a/src/main/TP5/shape/App.java b/src/main/TP5/shape/App.java deleted file mode 100644 index 1a519e1..0000000 --- a/src/main/TP5/shape/App.java +++ /dev/null @@ -1,35 +0,0 @@ -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.scene.paint.Paint; -import javafx.stage.Stage; - - - -public class App extends Application { - - public static void main(String[] args) { - launch(args); - } - - @Override - public void start(Stage primaryStage) { - Group root = new Group(); - Canvas canvas = new Canvas(130, 110); - GraphicsContext graphicsContext = canvas.getGraphicsContext2D(); - ShapeContainer shapeContainer = new ShapeContainer(); - graphicsContext.setFill(Color.AQUAMARINE); - graphicsContext.fillOval(10,10,10,10); - shapeContainer.addShape(new Rectangle(Color.BLUE,new Point2D(10,10), new Point2D(40,40))); - shapeContainer.draw(graphicsContext); - root.getChildren().add(canvas); - primaryStage.setScene(new Scene(root)); - primaryStage.show(); - } -} \ No newline at end of file diff --git a/src/main/TP5/shape/BorderDecorator.java b/src/main/TP5/shape/BorderDecorator.java deleted file mode 100644 index efdd00a..0000000 --- a/src/main/TP5/shape/BorderDecorator.java +++ /dev/null @@ -1,24 +0,0 @@ -package shape; - -import javafx.geometry.Point2D; -import javafx.scene.canvas.GraphicsContext; -import javafx.scene.paint.Color; - - -public class BorderDecorator extends Decorator { - - private double radius; - - public BorderDecorator(Shape decoratedShape ,double radius) { - super(decoratedShape); - this.radius = radius; - } - protected void drawDecoration(GraphicsContext context) { - context.setStroke(Color.BLACK); - context.setLineWidth(2); - for (int i=0; i<pointsCount(); i++){ - Point2D point = point(i); - context.strokeOval(point.getX() - radius, point.getY()- radius,radius*2,radius*2); - } - } -} diff --git a/src/main/TP5/shape/CenterDecorator.java b/src/main/TP5/shape/CenterDecorator.java deleted file mode 100644 index 93769c9..0000000 --- a/src/main/TP5/shape/CenterDecorator.java +++ /dev/null @@ -1,27 +0,0 @@ -package shape; - -import javafx.geometry.Point2D; -import javafx.scene.canvas.GraphicsContext; -import javafx.scene.paint.Color; - -public class CenterDecorator extends Decorator{ - private double radius; - public CenterDecorator(Shape decoratedShape, double radius) { - super(decoratedShape); - this.radius = radius; - } - protected void drawDecoration(GraphicsContext context) { - double centerX = 0; - double centerY = 0; - for (int i =0; i<pointsCount(); i++){ - Point2D point = point(i); - centerX += point.getX(); - centerY += point.getY(); - } - centerX /= pointsCount(); - centerY /= pointsCount(); - context.setStroke(Color.RED); - context.setLineWidth(2); - context.strokeOval(centerX-radius, centerY-radius, radius*2,radius*2); - } -} \ No newline at end of file diff --git a/src/main/TP5/shape/Circle.java b/src/main/TP5/shape/Circle.java deleted file mode 100644 index 530a521..0000000 --- a/src/main/TP5/shape/Circle.java +++ /dev/null @@ -1,31 +0,0 @@ -package shape; - -import javafx.scene.canvas.GraphicsContext; - -public class Circle implements Shape { - private double x, y, radius; - - public Circle(double x, double y, double radius) { - this.x = x; - this.y = y; - this.radius = radius; - } - - @Override - public void paint(GraphicsContext gc) { - gc.strokeOval(x - radius, y - radius, 2 * radius, 2 * radius); - } - - @Override - public boolean contains(double x, double y) { - double dx = x - this.x; - double dy = y - this.y; - return dx * dx + dy * dy <= radius * radius; - } - - @Override - public void translate(double dx, double dy) { - this.x += dx; - this.y += dy; - } -} diff --git a/src/main/TP5/shape/Decorator.java b/src/main/TP5/shape/Decorator.java deleted file mode 100644 index 5a11efd..0000000 --- a/src/main/TP5/shape/Decorator.java +++ /dev/null @@ -1,28 +0,0 @@ -package shape; -import javafx.geometry.Point2D; -import javafx.scene.canvas.GraphicsContext; - -public abstract class Decorator implements Shape { - protected Shape decoratedshape; - public Decorator(Shape decoratedShape) { - this.decoratedshape = decoratedShape; - } - @Override - public int pointsCount() { - return decoratedshape.pointsCount(); - } - - @Override - public Point2D point(int index) { - return decoratedshape.point(index); - } - - @Override - public void draw(GraphicsContext context) { - decoratedshape.draw(context); - drawDecoration(context); - } - protected void drawDecoration(GraphicsContext context) { - - } -} \ No newline at end of file diff --git a/src/main/TP5/shape/Polygon.java b/src/main/TP5/shape/Polygon.java deleted file mode 100644 index 775c7da..0000000 --- a/src/main/TP5/shape/Polygon.java +++ /dev/null @@ -1,34 +0,0 @@ -package shape; -import javafx.geometry.Point2D; -import javafx.scene.canvas.GraphicsContext; -import javafx.scene.paint.Color; - -import java.util.List; - -public class Polygon extends Abstractshape { - - private Color color; - - public Polygon(Color color, Point2D... points) { - super(List.of(points)); - this.color = color; - } - - @Override - public int pointsCount() { - return super.pointsCount(); - } - - @Override - public Point2D point(int index) { - return super.point(index); - } - - @Override - public void draw(GraphicsContext context) { - context.setFill(color); - super.draw(context); - context.fill(); - - } -} \ No newline at end of file diff --git a/src/main/TP5/shape/Rectangle.java b/src/main/TP5/shape/Rectangle.java deleted file mode 100644 index 3e9e4f1..0000000 --- a/src/main/TP5/shape/Rectangle.java +++ /dev/null @@ -1,30 +0,0 @@ -package shape; - -import javafx.scene.canvas.GraphicsContext; - -public class Rectangle implements Shape { - private double x, y, width, height; - - public Rectangle(double x, double y, double width, double height) { - this.x = x; - this.y = y; - this.width = width; - this.height = height; - } - - @Override - public void paint(GraphicsContext gc) { - gc.strokeRect(x, y, width, height); - } - - @Override - public boolean contains(double x, double y) { - return x >= this.x && x <= this.x + width && y >= this.y && y <= this.y + height; - } - - @Override - public void translate(double dx, double dy) { - this.x += dx; - this.y += dy; - } -} diff --git a/src/main/TP5/shape/Shape.java b/src/main/TP5/shape/Shape.java deleted file mode 100644 index 02cf904..0000000 --- a/src/main/TP5/shape/Shape.java +++ /dev/null @@ -1,9 +0,0 @@ -package shape; - -import javafx.scene.canvas.GraphicsContext; - -public interface Shape { - void paint(GraphicsContext gc); - boolean contains(double x, double y); - void translate(double dx, double dy); -} diff --git a/src/main/TP5/shape/ShapeContainer.java b/src/main/TP5/shape/ShapeContainer.java deleted file mode 100644 index 3ed1776..0000000 --- a/src/main/TP5/shape/ShapeContainer.java +++ /dev/null @@ -1,20 +0,0 @@ -package shape; - -import javafx.scene.canvas.GraphicsContext; - -import java.util.ArrayList; -import java.util.List; - -public class ShapeContainer{ - - private List<Shape> shapes = new ArrayList<>(); - - public void addShape(Shape shape){ - shapes.add(shape); - } - - public void draw(GraphicsContext context){ - for(Shape shape : shapes) - shape.draw(context); - } -} \ No newline at end of file diff --git a/src/main/TP5/state/App.java b/src/main/TP5/state/App.java deleted file mode 100644 index 09f71cf..0000000 --- a/src/main/TP5/state/App.java +++ /dev/null @@ -1,22 +0,0 @@ -package state; - -import javafx.application.Application; -import javafx.scene.Group; -import javafx.scene.Scene; -import javafx.stage.Stage; - -public class App extends Application { - - public static void main(String[] args) { - launch(args); - } - - @Override - 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(); - } -} \ No newline at end of file diff --git a/src/main/TP5/state/CircleDrawerState0 b/src/main/TP5/state/CircleDrawerState0 deleted file mode 100644 index c488204..0000000 --- a/src/main/TP5/state/CircleDrawerState0 +++ /dev/null @@ -1,17 +0,0 @@ - -public class CircleDrawerState0 implements DrawerState { - @Override - public void mousePressed(DrawerContext context, double x, double y) { - context.setState(new CircleDrawerState1(x, y)); - } - - @Override - public void mouseReleased(DrawerContext context, double x, double y) {} - - @Override - public void mouseMoved(DrawerContext context, double x, double y) {} - - @Override - public void paint(GraphicsContext gc) {} -} - diff --git a/src/main/TP5/state/CircleDrawerState1 b/src/main/TP5/state/CircleDrawerState1 deleted file mode 100644 index 42f8214..0000000 --- a/src/main/TP5/state/CircleDrawerState1 +++ /dev/null @@ -1,24 +0,0 @@ -public class CircleDrawerState1 implements DrawerState { - private double x, y; - - public CircleDrawerState1(double x, double y) { - this.x = x; - this.y = y; - } - - @Override - public void mousePressed(DrawerContext context, double x, double y) {} - - @Override - public void mouseReleased(DrawerContext context, double x, double y) { - double radius = Math.hypot(this.x - x, this.y - y); - context.getDrawer().add(new Circle(this.x, this.y, radius)); - context.setState(new CircleDrawerState0()); // Reset to initial state - } - - @Override - public void mouseMoved(DrawerContext context, double x, double y) {} - - @Override - public void paint(GraphicsContext gc) {} -} \ No newline at end of file diff --git a/src/main/TP5/state/Drawer.java b/src/main/TP5/state/Drawer.java deleted file mode 100644 index 5468857..0000000 --- a/src/main/TP5/state/Drawer.java +++ /dev/null @@ -1,36 +0,0 @@ -package state; - -import javafx.scene.canvas.GraphicsContext; -import java.util.ArrayList; -import java.util.List; - -public class Drawer { - private List<Shape> shapes; - private double width, height; - - public Drawer(double width, double height) { - this.width = width; - this.height = height; - this.shapes = new ArrayList<>(); - } - - public void add(Shape shape) { - shapes.add(shape); - } - - public void repaint(GraphicsContext gc) { - gc.clearRect(0, 0, width, height); // Clear canvas - for (Shape shape : shapes) { - shape.paint(gc); - } - } - - public Shape shapeContaining(double x, double y) { - for (Shape shape : shapes) { - if (shape.contains(x, y)) { - return shape; - } - } - return null; - } -} diff --git a/src/main/TP5/state/DrawerContext.java b/src/main/TP5/state/DrawerContext.java deleted file mode 100644 index 74b12cb..0000000 --- a/src/main/TP5/state/DrawerContext.java +++ /dev/null @@ -1,59 +0,0 @@ -package state; - - -import javafx.scene.canvas.GraphicsContext; -import javafx.scene.input.KeyEvent; -import javafx.scene.input.MouseEvent; - -public class DrawerContext { - private Drawer drawer; - private DrawerState currentState; - - public DrawerContext(Drawer drawer) { - this.drawer = drawer; - this.currentState = new NullDrawerState(); // Default state - } - - public void setState(DrawerState state) { - this.currentState = state; - } - - public void paint(GraphicsContext gc) { - currentState.paint(gc); - } - - public void mousePressed(MouseEvent event) { - currentState.mousePressed(this, event.getX(), event.getY()); - } - - public void mouseReleased(MouseEvent event) { - currentState.mouseReleased(this, event.getX(), event.getY()); - } - - public void mouseMoved(MouseEvent event) { - currentState.mouseMoved(this, event.getX(), event.getY()); - } - - public void keyPressed(KeyEvent event) { - switch (event.getText()) { - case "r": - setState(new RectangleDrawerState0()); - break; - case "c": - setState(new CircleDrawerState0()); - break; - case "m": - Shape shape = getDrawer().shapeContaining(lastMouseX, lastMouseY); - if (shape != null) { - setState(new MoveShapeState(shape, lastMouseX, lastMouseY)); - } - break; - } - } - - public Drawer getDrawer() { - return drawer; - } - -} - diff --git a/src/main/TP5/state/DrawerState.java b/src/main/TP5/state/DrawerState.java deleted file mode 100644 index c185dfe..0000000 --- a/src/main/TP5/state/DrawerState.java +++ /dev/null @@ -1,8 +0,0 @@ -package state; - -interface DrawerState { - void mousePressed(DrawerContext context, double x, double y); - void mouseReleased(DrawerContext context, double x, double y); - void mouseMoved(DrawerContext context, double x, double y); - void paint(GraphicsContext gc); -} \ No newline at end of file diff --git a/src/main/TP5/state/MoveShapeState b/src/main/TP5/state/MoveShapeState deleted file mode 100644 index 6069a6e..0000000 --- a/src/main/TP5/state/MoveShapeState +++ /dev/null @@ -1,33 +0,0 @@ -public class MoveShapeState implements DrawerState { - private Shape selectedShape; - private double lastX, lastY; - - public MoveShapeState(Shape selectedShape, double x, double y) { - this.selectedShape = selectedShape; - this.lastX = x; - this.lastY = y; - } - - @Override - public void mousePressed(DrawerContext context, double x, double y) {} - - @Override - public void mouseReleased(DrawerContext context, double x, double y) { - context.setState(new NullDrawerState()); // Return to the default state after moving - } - - @Override - public void mouseMoved(DrawerContext context, double x, double y) { - if (selectedShape != null) { - double dx = x - lastX; - double dy = y - lastY; - selectedShape.translate(dx, dy); - lastX = x; - lastY = y; - context.getDrawer().repaint(context.getDrawer().getGraphicsContext()); - } - } - - @Override - public void paint(GraphicsContext gc) {} -} diff --git a/src/main/TP5/state/NullDrawerState b/src/main/TP5/state/NullDrawerState deleted file mode 100644 index 8572e06..0000000 --- a/src/main/TP5/state/NullDrawerState +++ /dev/null @@ -1,13 +0,0 @@ -public class NullDrawerState implements DrawerState { - @Override - public void mousePressed(DrawerContext context, double x, double y) {} - - @Override - public void mouseReleased(DrawerContext context, double x, double y) {} - - @Override - public void mouseMoved(DrawerContext context, double x, double y) {} - - @Override - public void paint(GraphicsContext gc) {} -} diff --git a/src/main/TP5/state/RectangleDrawerState0 b/src/main/TP5/state/RectangleDrawerState0 deleted file mode 100644 index 3349108..0000000 --- a/src/main/TP5/state/RectangleDrawerState0 +++ /dev/null @@ -1,41 +0,0 @@ -public class RectangleDrawerState0 implements DrawerState { - @Override - public void mousePressed(DrawerContext context, double x, double y) { - context.setState(new RectangleDrawerState1(x, y)); - } - - @Override - public void mouseReleased(DrawerContext context, double x, double y) {} - - @Override - public void mouseMoved(DrawerContext context, double x, double y) {} - - @Override - public void paint(GraphicsContext gc) {} -} - -public class RectangleDrawerState1 implements DrawerState { - private double x, y; - - public RectangleDrawerState1(double x, double y) { - this.x = x; - this.y = y; - } - - @Override - public void mousePressed(DrawerContext context, double x, double y) {} - - @Override - public void mouseReleased(DrawerContext context, double x, double y) { - double width = Math.abs(this.x - x); - double height = Math.abs(this.y - y); - context.getDrawer().add(new Rectangle(Math.min(this.x, x), Math.min(this.y, y), width, height)); - context.setState(new RectangleDrawerState0()); // Reset to initial state - } - - @Override - public void mouseMoved(DrawerContext context, double x, double y) {} - - @Override - public void paint(GraphicsContext gc) {} -} diff --git a/src/main/TP5/state/RectangleDrawerState1 b/src/main/TP5/state/RectangleDrawerState1 deleted file mode 100644 index 17a7116..0000000 --- a/src/main/TP5/state/RectangleDrawerState1 +++ /dev/null @@ -1,25 +0,0 @@ -public class RectangleDrawerState1 implements DrawerState { - private double x, y; - - public RectangleDrawerState1(double x, double y) { - this.x = x; - this.y = y; - } - - @Override - public void mousePressed(DrawerContext context, double x, double y) {} - - @Override - public void mouseReleased(DrawerContext context, double x, double y) { - double width = Math.abs(this.x - x); - double height = Math.abs(this.y - y); - context.getDrawer().add(new Rectangle(Math.min(this.x, x), Math.min(this.y, y), width, height)); - context.setState(new RectangleDrawerState0()); // Reset to initial state - } - - @Override - public void mouseMoved(DrawerContext context, double x, double y) {} - - @Override - public void paint(GraphicsContext gc) {} -} \ No newline at end of file diff --git a/src/main/TP5/state/StateCircle0.java b/src/main/TP5/state/StateCircle0.java deleted file mode 100644 index 073c481..0000000 --- a/src/main/TP5/state/StateCircle0.java +++ /dev/null @@ -1,13 +0,0 @@ -package state; - -public class StateCircle0 implements DrawerState { - @Override - public void mousePressed(DrawerContext context, double x, double y) { - - } - - @Override - public void mouseReleased(DrawerContext context, double x, double y) { - - } -} diff --git a/src/main/java/serializer/App.java b/src/main/java/serializer/App.java deleted file mode 100644 index 7fd1281..0000000 --- a/src/main/java/serializer/App.java +++ /dev/null @@ -1,31 +0,0 @@ -package serializer; - -import javafx.application.Application; -import javafx.scene.Group; -import javafx.scene.Scene; -import javafx.scene.control.Button; -import javafx.stage.Stage; - -public class App extends Application { - - public static void main(String[] args) { - launch(args); - } - - @Override - public void start(Stage primaryStage) { - Group root = new Group(); - DrawerWithSave container = new DrawerWithSave(800, 600); - root.getChildren().add(container); - primaryStage.setScene(new Scene(root)); - primaryStage.show(); - Button save = new Button("save"); - root.getChildren().add(save); - save.setLayoutX(0); - save.setLayoutY(0); - root.setOnKeyPressed(event->container.context.keyPressed(event)); - //save.setOnKeyPressed(event->container.context.keyPressed(event)); - save.setOnAction(event -> container.write()); - - } -} \ No newline at end of file diff --git a/src/main/java/serializer/DrawerWithSave.java b/src/main/java/serializer/DrawerWithSave.java deleted file mode 100644 index 2852edf..0000000 --- a/src/main/java/serializer/DrawerWithSave.java +++ /dev/null @@ -1,52 +0,0 @@ -package serializer; - -import javafx.scene.canvas.Canvas; -import javafx.scene.control.Alert; -import javafx.stage.FileChooser; -import shape.Shape; - -import java.io.File; -import java.io.IOException; -import java.util.List; -import java.util.stream.Collectors; - - -public class DrawerWithSave extends state.Drawer { - - public DrawerWithSave(int width, int height) { - super(width, height); - } - - void write(){ - FileChooser fileChooser = new FileChooser(); - fileChooser.setTitle("Save"); - File file = fileChooser.showSaveDialog(getScene().getWindow()); - if (file == null) return; - try { - ShapeWriter.write(file, super.shapes); - } - catch (IOException e) { - Alert alert = new Alert(Alert.AlertType.INFORMATION); - alert.setTitle("Error Dialog"); - alert.setHeaderText(null); - alert.setContentText("Ooops, there was an error!"); - alert.showAndWait(); - } - } - public void load() { - FileChooser fileChooser = new FileChooser(); - fileChooser.setTitle("Load"); - File file = fileChooser.showOpenDialog(getScene().getWindow()); - if (file == null) return; - try { - super.shapes = ShapeReader.read(file); - repaint(); - } catch (IOException e) { - Alert alert = new Alert(Alert.AlertType.INFORMATION); - alert.setTitle("Error Dialog"); - alert.setHeaderText(null); - alert.setContentText("Ooops, there was an error!"); - alert.showAndWait(); - } - } -} diff --git a/src/main/java/serializer/ShapeReader.java b/src/main/java/serializer/ShapeReader.java deleted file mode 100644 index 4905948..0000000 --- a/src/main/java/serializer/ShapeReader.java +++ /dev/null @@ -1,20 +0,0 @@ -package serializer; - -import shape.Shape; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.util.List; -import java.util.stream.Collector; - -public class ShapeReader { - public static List<Shape> read(File file) throws IOException { - BufferedReader bufferedReader = new BufferedReader(new FileReader(file)); - /*for(String line : bufferedReader.lines().toList()) { - System.out.println(line); - }*/ - return null; - } -} diff --git a/src/main/java/serializer/ShapeWriter.java b/src/main/java/serializer/ShapeWriter.java deleted file mode 100644 index 6a76ef8..0000000 --- a/src/main/java/serializer/ShapeWriter.java +++ /dev/null @@ -1,15 +0,0 @@ -package serializer; - -import shape.Shape; - -import java.io.File; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.List; - -public class ShapeWriter { - public static void write (File file, List<Shape> shapes) throws IOException { - PrintWriter printWriter = new PrintWriter(file); - printWriter.println("Coucou"); - } -} diff --git a/src/main/java/shape/Abstractshape.java b/src/main/java/shape/Abstractshape.java deleted file mode 100644 index b6a4e2f..0000000 --- a/src/main/java/shape/Abstractshape.java +++ /dev/null @@ -1,40 +0,0 @@ -package shape; -import javafx.geometry.Point2D; -import javafx.scene.canvas.GraphicsContext; -import java.util.List; - - -public abstract class Abstractshape implements Shape { - private List<Point2D> points; - - public Abstractshape(List<Point2D> points) { - this.points = points; - } - public void addPoints(Point2D... points){ - for (Point2D point: points) - this.points.add(point); - } - @Override - public int pointsCount() { - return points.size(); - } - - @Override - public Point2D point(int index) { - return index < points.size() ? points.get(index) : null; - } - - @Override - public void draw(GraphicsContext context) { - if (pointsCount()>0){ - context.beginPath(); - context.moveTo(point(0).getX(), point(0).getY()); - for (int i = 1; i<pointsCount(); i++){ - context.lineTo(point(i).getX(),point(i).getY()); - } - context.closePath(); - context.stroke(); - } - - } -} \ No newline at end of file diff --git a/src/main/java/shape/App.java b/src/main/java/shape/App.java deleted file mode 100644 index 1a519e1..0000000 --- a/src/main/java/shape/App.java +++ /dev/null @@ -1,35 +0,0 @@ -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.scene.paint.Paint; -import javafx.stage.Stage; - - - -public class App extends Application { - - public static void main(String[] args) { - launch(args); - } - - @Override - public void start(Stage primaryStage) { - Group root = new Group(); - Canvas canvas = new Canvas(130, 110); - GraphicsContext graphicsContext = canvas.getGraphicsContext2D(); - ShapeContainer shapeContainer = new ShapeContainer(); - graphicsContext.setFill(Color.AQUAMARINE); - graphicsContext.fillOval(10,10,10,10); - shapeContainer.addShape(new Rectangle(Color.BLUE,new Point2D(10,10), new Point2D(40,40))); - shapeContainer.draw(graphicsContext); - root.getChildren().add(canvas); - primaryStage.setScene(new Scene(root)); - primaryStage.show(); - } -} \ No newline at end of file diff --git a/src/main/java/shape/BorderDecorator.java b/src/main/java/shape/BorderDecorator.java deleted file mode 100644 index efdd00a..0000000 --- a/src/main/java/shape/BorderDecorator.java +++ /dev/null @@ -1,24 +0,0 @@ -package shape; - -import javafx.geometry.Point2D; -import javafx.scene.canvas.GraphicsContext; -import javafx.scene.paint.Color; - - -public class BorderDecorator extends Decorator { - - private double radius; - - public BorderDecorator(Shape decoratedShape ,double radius) { - super(decoratedShape); - this.radius = radius; - } - protected void drawDecoration(GraphicsContext context) { - context.setStroke(Color.BLACK); - context.setLineWidth(2); - for (int i=0; i<pointsCount(); i++){ - Point2D point = point(i); - context.strokeOval(point.getX() - radius, point.getY()- radius,radius*2,radius*2); - } - } -} diff --git a/src/main/java/shape/CenterDecorator.java b/src/main/java/shape/CenterDecorator.java deleted file mode 100644 index 93769c9..0000000 --- a/src/main/java/shape/CenterDecorator.java +++ /dev/null @@ -1,27 +0,0 @@ -package shape; - -import javafx.geometry.Point2D; -import javafx.scene.canvas.GraphicsContext; -import javafx.scene.paint.Color; - -public class CenterDecorator extends Decorator{ - private double radius; - public CenterDecorator(Shape decoratedShape, double radius) { - super(decoratedShape); - this.radius = radius; - } - protected void drawDecoration(GraphicsContext context) { - double centerX = 0; - double centerY = 0; - for (int i =0; i<pointsCount(); i++){ - Point2D point = point(i); - centerX += point.getX(); - centerY += point.getY(); - } - centerX /= pointsCount(); - centerY /= pointsCount(); - context.setStroke(Color.RED); - context.setLineWidth(2); - context.strokeOval(centerX-radius, centerY-radius, radius*2,radius*2); - } -} \ No newline at end of file diff --git a/src/main/java/shape/Circle.java b/src/main/java/shape/Circle.java deleted file mode 100644 index 81d9175..0000000 --- a/src/main/java/shape/Circle.java +++ /dev/null @@ -1,25 +0,0 @@ -package shape; - -import javafx.geometry.Point2D; -import javafx.scene.canvas.GraphicsContext; - -public class Circle implements Shape { - - public Circle(double x, double y, double sqrt) { - } - - @Override - public int pointsCount() { - return 0; - } - - @Override - public Point2D point(int index) { - return null; - } - - @Override - public void draw(GraphicsContext context) { - - } -} diff --git a/src/main/java/shape/Decorator.java b/src/main/java/shape/Decorator.java deleted file mode 100644 index 5a11efd..0000000 --- a/src/main/java/shape/Decorator.java +++ /dev/null @@ -1,28 +0,0 @@ -package shape; -import javafx.geometry.Point2D; -import javafx.scene.canvas.GraphicsContext; - -public abstract class Decorator implements Shape { - protected Shape decoratedshape; - public Decorator(Shape decoratedShape) { - this.decoratedshape = decoratedShape; - } - @Override - public int pointsCount() { - return decoratedshape.pointsCount(); - } - - @Override - public Point2D point(int index) { - return decoratedshape.point(index); - } - - @Override - public void draw(GraphicsContext context) { - decoratedshape.draw(context); - drawDecoration(context); - } - protected void drawDecoration(GraphicsContext context) { - - } -} \ No newline at end of file diff --git a/src/main/java/shape/Polygon.java b/src/main/java/shape/Polygon.java deleted file mode 100644 index 775c7da..0000000 --- a/src/main/java/shape/Polygon.java +++ /dev/null @@ -1,34 +0,0 @@ -package shape; -import javafx.geometry.Point2D; -import javafx.scene.canvas.GraphicsContext; -import javafx.scene.paint.Color; - -import java.util.List; - -public class Polygon extends Abstractshape { - - private Color color; - - public Polygon(Color color, Point2D... points) { - super(List.of(points)); - this.color = color; - } - - @Override - public int pointsCount() { - return super.pointsCount(); - } - - @Override - public Point2D point(int index) { - return super.point(index); - } - - @Override - public void draw(GraphicsContext context) { - context.setFill(color); - super.draw(context); - context.fill(); - - } -} \ No newline at end of file diff --git a/src/main/java/shape/Rectangle.java b/src/main/java/shape/Rectangle.java deleted file mode 100644 index 09df336..0000000 --- a/src/main/java/shape/Rectangle.java +++ /dev/null @@ -1,32 +0,0 @@ -package shape; - -import javafx.geometry.Point2D; -import javafx.scene.canvas.GraphicsContext; -import javafx.scene.paint.Color; -import java.util.List; - -public class Rectangle extends Abstractshape{ - private Color color; - Rectangle(Color color, Point2D point0, Point2D point1){ - super(List.of(point0, new Point2D(point1.getX(),point0.getY()), - point1,new Point2D(point0.getX(),point1.getY()))); - this.color = color; - } - - @Override - public int pointsCount() { - return super.pointsCount(); - } - - @Override - public Point2D point(int index) { - return super.point(index); - } - - @Override - public void draw(GraphicsContext context) { - context.setFill(color); - super.draw(context); - context.fill(); - } -} \ No newline at end of file diff --git a/src/main/java/shape/Shape.java b/src/main/java/shape/Shape.java deleted file mode 100644 index 16766e4..0000000 --- a/src/main/java/shape/Shape.java +++ /dev/null @@ -1,10 +0,0 @@ -package shape; - -import javafx.geometry.Point2D; -import javafx.scene.canvas.GraphicsContext; - -public interface Shape { - int pointsCount(); - Point2D point(int index); - void draw(GraphicsContext context); -} diff --git a/src/main/java/shape/ShapeContainer.java b/src/main/java/shape/ShapeContainer.java deleted file mode 100644 index 3ed1776..0000000 --- a/src/main/java/shape/ShapeContainer.java +++ /dev/null @@ -1,20 +0,0 @@ -package shape; - -import javafx.scene.canvas.GraphicsContext; - -import java.util.ArrayList; -import java.util.List; - -public class ShapeContainer{ - - private List<Shape> shapes = new ArrayList<>(); - - public void addShape(Shape shape){ - shapes.add(shape); - } - - public void draw(GraphicsContext context){ - for(Shape shape : shapes) - shape.draw(context); - } -} \ No newline at end of file diff --git a/src/main/java/state/App.java b/src/main/java/state/App.java deleted file mode 100644 index 09f71cf..0000000 --- a/src/main/java/state/App.java +++ /dev/null @@ -1,22 +0,0 @@ -package state; - -import javafx.application.Application; -import javafx.scene.Group; -import javafx.scene.Scene; -import javafx.stage.Stage; - -public class App extends Application { - - public static void main(String[] args) { - launch(args); - } - - @Override - 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(); - } -} \ No newline at end of file diff --git a/src/main/java/state/Drawer.java b/src/main/java/state/Drawer.java deleted file mode 100644 index 67b9e1c..0000000 --- a/src/main/java/state/Drawer.java +++ /dev/null @@ -1,28 +0,0 @@ -package state; - -import javafx.scene.canvas.Canvas; -import shape.Circle; -import shape.Shape; - -import java.util.ArrayList; -import java.util.List; - - -public class Drawer extends Canvas { - protected List<Shape> shapes = new ArrayList<>(); - public DrawerContext context = new DrawerContext(this); - - public Drawer(int width, int height) { - super(width,height); - setFocusTraversable(true); - setOnMousePressed(event->context.mousePressed(event)); - setOnMouseReleased(event->context.mouseReleased(event)); - setOnMouseMoved(event->context.mouseMoved(event)); - setOnMouseDragged(event->context.mouseMoved(event)); - //setOnKeyPressed(event -> context.keyPressed(event)); - } - - public void repaint(){ - this.getGraphicsContext2D().clearRect(0,0,this.getWidth(),this.getHeight()); - } -} diff --git a/src/main/java/state/DrawerContext.java b/src/main/java/state/DrawerContext.java deleted file mode 100644 index f82de39..0000000 --- a/src/main/java/state/DrawerContext.java +++ /dev/null @@ -1,33 +0,0 @@ -package state; - - -import javafx.scene.input.KeyEvent; -import javafx.scene.input.MouseEvent; - -public class DrawerContext { - - Drawer drawer; - DrawerState currentState; - - public DrawerContext(Drawer drawer) { - this.drawer = drawer; - } - - void mousePressed(MouseEvent event){ - currentState.mousePressed(this,event.getX(),event.getY()); - - } - - void mouseReleased(MouseEvent event){ - currentState.mouseReleased(this,event.getX(),event.getY()); - } - - void mouseMoved(MouseEvent event){} - - public void keyPressed(KeyEvent event) { - switch (event.getText()) { - case "c": - currentState = new StateCircle0(); - } - } -} diff --git a/src/main/java/state/DrawerState.java b/src/main/java/state/DrawerState.java deleted file mode 100644 index 680324c..0000000 --- a/src/main/java/state/DrawerState.java +++ /dev/null @@ -1,6 +0,0 @@ -package state; - -public interface DrawerState { - void mousePressed(DrawerContext context, double x, double y); - void mouseReleased(DrawerContext context, double x, double y); -} diff --git a/src/main/java/state/StateCircle0.java b/src/main/java/state/StateCircle0.java deleted file mode 100644 index 073c481..0000000 --- a/src/main/java/state/StateCircle0.java +++ /dev/null @@ -1,13 +0,0 @@ -package state; - -public class StateCircle0 implements DrawerState { - @Override - public void mousePressed(DrawerContext context, double x, double y) { - - } - - @Override - public void mouseReleased(DrawerContext context, double x, double y) { - - } -} -- GitLab