File: /Users/shatabdi/Education/GitHub/se450_project/src/controller/JPaintController.java
1
2 package controller;
3
4 import model.commands.ShapeCopyCommand;
5 import model.commands.ShapeRemoveCommand;
6 import model.commands.ShapeGroupCommand;
7 import model.commands.ShapePasteCommand;
8 import model.commands.ShapeRedoCommand;
9 import model.commands.ShapeUndoCommand;
10 import model.commands.ShapeUngroupCommand;
11 import model.interfaces.IApplicationState;
12 import model.others.CommandHandler;
13 import model.shape.GroupShape;
14 import view.Enum.EventName;
15 import view.interfaces.IUiModule;
16 import view.interfaces.PaintCanvasBase;
17
18 public class JPaintController implements IJPaintController {
19 private final IApplicationState applicationState;
20 private PaintCanvasBase canvasBase;
21
22 CommandHandler commandHandler;
23 private final IUiModule uiModule;
24
25 public JPaintController(IUiModule uiModule, IApplicationState applicationState, PaintCanvasBase canvasBase,
26 CommandHandler commandHandler) {
27 this.uiModule = uiModule;
28 this.canvasBase = canvasBase;
29 this.applicationState = applicationState;
30 this.commandHandler = commandHandler;
31 }
32
33 public void copy() {
34
35 ShapeCopyCommand shapeCopyCommand = new ShapeCopyCommand(canvasBase);
36 shapeCopyCommand.run();
37 }
38
39 public void delete() {
40
41 ShapeRemoveCommand shapeRemoveCommand = new ShapeRemoveCommand(canvasBase);
42 shapeRemoveCommand.run();
43 }
44
45 private void group() {
46 ShapeGroupCommand shapeGroupCommand = new ShapeGroupCommand(new GroupShape(canvasBase));
47 shapeGroupCommand.run();
48 }
49
50 public void paste() {
51
52 ShapePasteCommand shapePasteCommand = new ShapePasteCommand(canvasBase);
53 shapePasteCommand.run();
54 }
55
56 public void redo() {
57
58 ShapeRedoCommand shapeRedoCommand = new ShapeRedoCommand(commandHandler);
59 shapeRedoCommand.run();
60 }
61
62 @Override
63 public void setup() {
64 setupEvents();
65 }
66
67 private void setupEvents() {
68 uiModule.addEvent(EventName.UNDO, () -> undo());
69 uiModule.addEvent(EventName.REDO, () -> redo());
70 uiModule.addEvent(EventName.COPY, () -> copy());
71 uiModule.addEvent(EventName.PASTE, () -> paste());
72 uiModule.addEvent(EventName.DELETE, () -> delete());
73 uiModule.addEvent(EventName.GROUP, () -> group());
74 uiModule.addEvent(EventName.UNGROUP, () -> ungroup());
75 uiModule.addEvent(EventName.CHOOSE_SHAPE, () -> applicationState.setActiveShape());
76 uiModule.addEvent(EventName.CHOOSE_PRIMARY_COLOR, () -> applicationState.setActivePrimaryColor());
77 uiModule.addEvent(EventName.CHOOSE_SECONDARY_COLOR, () -> applicationState.setActiveSecondaryColor());
78 uiModule.addEvent(EventName.CHOOSE_SHADING_TYPE, () -> applicationState.setActiveShadingType());
79 uiModule.addEvent(EventName.CHOOSE_MOUSE_MODE, () -> applicationState.setActiveMouseMode());
80 }
81
82 public void undo() {
83
84 ShapeUndoCommand shapeUndoCommand = new ShapeUndoCommand(commandHandler);
85 shapeUndoCommand.run();
86 }
87
88 private void ungroup() {
89 ShapeUngroupCommand shapeUngroupCommand = new ShapeUngroupCommand(canvasBase);
90 shapeUngroupCommand.run();
91 }
92 }
93