File: /Users/shatabdi/Education/GitHub/se450_project/src/model/factory/ShapeFactory.java

1     // Project starter code
2     // Static Factory pattern, write in report
3     package model.factory;
4     
5     import java.awt.BasicStroke;
6     import java.awt.Graphics2D;
7     import java.awt.Point;
8     import java.awt.Shape;
9     
10     import model.Ellipse;
11     import model.GeometricShape;
12     import model.Rectangle;
13     import model.Triangle;
14     import model.strategy.ShapeShadingStrategy;
15     import model.strategy.ShapeTypeStrategy;
16     import view.Enum.ShapeColor;
17     import view.Enum.ShapeShadingType;
18     import view.Enum.ShapeType;
19     
20     public class ShapeFactory {
21     
22     	public static ShapeShadingStrategy combine(ShapeShadingType shapeShadingType, ShapeColor primaryColor,
23     			ShapeColor secondaryColor, Shape shape, Graphics2D g2, BasicStroke str) {
24     		return new ShapeShadingStrategy(shapeShadingType, primaryColor, secondaryColor, shape, g2, str);
25     	}
26     
27     	public static Shape createShape(GeometricShape geometricShape) {
28     		ShapeType shapeType = geometricShape.getShapeType();
29     		int shapeXcoord = geometricShape.getShapeXcoord();
30     		int shapeYcoord = geometricShape.getShapeYcoord();
31     		int width = geometricShape.getWidth();
32     		int height = geometricShape.getHeight();
33     		Point startPoint = geometricShape.getStartPoint();
34     		Point endPoint = geometricShape.getEndPoint();
35     
36     		ShapeTypeStrategy shapeTypeStrategy = null;
37     
38     		if (shapeType.equals(ShapeType.RECTANGLE)) {
39     			shapeTypeStrategy = new Rectangle(shapeXcoord, shapeYcoord, width, height);
40     		} else if (shapeType.equals(ShapeType.ELLIPSE)) {
41     			shapeTypeStrategy = new Ellipse(shapeXcoord, shapeYcoord, width, height);
42     		} else if (shapeType.equals(ShapeType.TRIANGLE)) {
43     			shapeTypeStrategy = new Triangle(startPoint, endPoint);
44     		}
45     		return shapeTypeStrategy.createShapeType();
46     	}
47     }
48