Skip to content
Snippets Groups Projects
Commit ff43402b authored by MANSOUR Chadi's avatar MANSOUR Chadi
Browse files

Tp real end with everything functionning

parent 448195e0
Branches master
No related tags found
No related merge requests found
...@@ -20,7 +20,7 @@ dependencies { ...@@ -20,7 +20,7 @@ dependencies {
testImplementation 'org.hamcrest:hamcrest-library:1.3' testImplementation 'org.hamcrest:hamcrest-library:1.3'
} }
mainClassName = "shape.App" mainClassName = "state.App"
test { test {
......
package shape; package shape;
import javafx.application.Application; import javafx.application.Application;
import javafx.geometry.Point2D;
import javafx.scene.Group; import javafx.scene.Group;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
import javafx.stage.Stage; import javafx.stage.Stage;
public class App extends Application { public class App extends Application {
@Override @Override
...@@ -20,7 +15,7 @@ public class App extends Application { ...@@ -20,7 +15,7 @@ public class App extends Application {
Group root = new Group(); Group root = new Group();
root.getChildren().add(drawer.getCanvas()); root.getChildren().add(drawer.getCanvas());
Scene scene = new Scene(root, 400, 400); Scene scene = new Scene(root, 600, 400);
primaryStage.setTitle("JavaFX Drawer"); primaryStage.setTitle("JavaFX Drawer");
primaryStage.setScene(scene); primaryStage.setScene(scene);
......
package shape; package shape;
import javafx.scene.canvas.Canvas; import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext; import javafx.scene.canvas.GraphicsContext;
import javafx.scene.input.KeyCode; import javafx.scene.input.KeyCode;
import javafx.scene.input.MouseButton; import javafx.scene.input.MouseButton;
import state.DrawerContext;
import state.StateMoveShape;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -19,6 +21,7 @@ public class Drawer { ...@@ -19,6 +21,7 @@ public class Drawer {
private String currentShapeType = "rectangle"; private String currentShapeType = "rectangle";
private Shape tempShape = null; private Shape tempShape = null;
private boolean isFinished = false; private boolean isFinished = false;
public DrawerContext context;
public Drawer(double width, double height) { public Drawer(double width, double height) {
...@@ -50,6 +53,7 @@ public class Drawer { ...@@ -50,6 +53,7 @@ public class Drawer {
double x = event.getX(); double x = event.getX();
double y = event.getY(); double y = event.getY();
// tempShape = new Rectangle(x, y, 0, 0); // tempShape = new Rectangle(x, y, 0, 0);
System.out.println(currentShapeType);
if (currentShapeType.equals("rectangle")) { if (currentShapeType.equals("rectangle")) {
tempShape = new Rectangle(x, y, 0, 0); tempShape = new Rectangle(x, y, 0, 0);
}else if (currentShapeType.equals("circle")) { }else if (currentShapeType.equals("circle")) {
...@@ -95,7 +99,7 @@ public class Drawer { ...@@ -95,7 +99,7 @@ public class Drawer {
currentShapeType = "circle"; currentShapeType = "circle";
System.out.println("Current shape type is: " + currentShapeType); System.out.println("Current shape type is: " + currentShapeType);
} else if (event.getCode() == KeyCode.M) { } else if (event.getCode() == KeyCode.M) {
currentShapeType = state.StateMoveShape(); currentShapeType = null ;
} }
}); });
} }
......
...@@ -4,6 +4,7 @@ import javafx.application.Application; ...@@ -4,6 +4,7 @@ import javafx.application.Application;
import javafx.scene.Group; import javafx.scene.Group;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.stage.Stage; import javafx.stage.Stage;
import shape.Circle;
public class App extends Application { public class App extends Application {
...@@ -15,6 +16,7 @@ public class App extends Application { ...@@ -15,6 +16,7 @@ public class App extends Application {
public void start(Stage primaryStage) { public void start(Stage primaryStage) {
Group root = new Group(); Group root = new Group();
Drawer container = new Drawer(800, 600); Drawer container = new Drawer(800, 600);
root.getChildren().add(container); root.getChildren().add(container);
primaryStage.setScene(new Scene(root)); primaryStage.setScene(new Scene(root));
primaryStage.show(); primaryStage.show();
......
...@@ -29,6 +29,7 @@ public class Drawer extends Canvas { ...@@ -29,6 +29,7 @@ public class Drawer extends Canvas {
} }
public void addShape(Shape shape){ public void addShape(Shape shape){
shapes.add(shape); shapes.add(shape);
repaint();
} }
public Shape shapeContains(double x, double y){ public Shape shapeContains(double x, double y){
for(Shape shape : shapes){ for(Shape shape : shapes){
......
...@@ -35,12 +35,14 @@ public class DrawerContext { ...@@ -35,12 +35,14 @@ public class DrawerContext {
switch (event.getText()) { switch (event.getText()) {
case "c": case "c":
setState(new StateCircle0()); setState(new StateCircle0());
System.out.println("circle state");
break; break;
case "r": case "r":
setState(new StateRectangle0()); setState(new StateRectangle0());
break; break;
case "m": case "m":
setState(new StateMoveShape()); setState(new StateMoveShape());
System.out.println("state: " + currentState);
break; break;
default: default:
setState(new NullDrawerState()); setState(new NullDrawerState());
......
package state; package state;
import shape.Circle;
public class StateCircle0 implements DrawerState { public class StateCircle0 implements DrawerState {
@Override @Override
public void mousePressed(DrawerContext context, double x, double y) { 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));
} }
......
...@@ -9,6 +9,7 @@ public class StateMoveShape implements DrawerState{ ...@@ -9,6 +9,7 @@ public class StateMoveShape implements DrawerState{
@Override @Override
public void mousePressed(DrawerContext context, double x, double y) { public void mousePressed(DrawerContext context, double x, double y) {
selectedShape = context.getDrawer().shapeContains(x,y); selectedShape = context.getDrawer().shapeContains(x,y);
System.out.println("selectedShape : " + selectedShape);
if(selectedShape != null) { if(selectedShape != null) {
previousX = x; previousX = x;
previousY = y; previousY = y;
...@@ -18,6 +19,11 @@ public class StateMoveShape implements DrawerState{ ...@@ -18,6 +19,11 @@ public class StateMoveShape implements DrawerState{
@Override @Override
public void mouseReleased(DrawerContext context, double x, double y) { public void mouseReleased(DrawerContext context, double x, double y) {
selectedShape = null;
}
@Override
public void mouseMoved(DrawerContext context, double x, double y) {
if(selectedShape != null) { if(selectedShape != null) {
double deltaX = x - previousX; double deltaX = x - previousX;
double deltaY = y - previousY; double deltaY = y - previousY;
...@@ -28,11 +34,6 @@ public class StateMoveShape implements DrawerState{ ...@@ -28,11 +34,6 @@ public class StateMoveShape implements DrawerState{
} }
} }
@Override
public void mouseMoved(DrawerContext context, double x, double y) {
selectedShape = null;
}
@Override @Override
public void paint(DrawerContext context) { public void paint(DrawerContext context) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment