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
No related branches found
No related tags found
No related merge requests found
......@@ -20,7 +20,7 @@ dependencies {
testImplementation 'org.hamcrest:hamcrest-library:1.3'
}
mainClassName = "shape.App"
mainClassName = "state.App"
test {
......
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);
......
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 ;
}
});
}
......
......@@ -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();
......
......@@ -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){
......
......@@ -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());
......
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));
}
......
......@@ -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) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment