File: /Users/shatabdi/Education/GitHub/se450_project/src/view/adapter/MouseHandler.java
1 package view.adapter;
2
3 import java.awt.Point;
4 import java.awt.event.MouseEvent;
5
6 import model.interfaces.IApplicationState;
7 import view.interfaces.PaintCanvasBase;
8
9 public class MouseHandler extends java.awt.event.MouseAdapter {
10
11 private IApplicationState applicationState;
12 private PaintCanvasBase canvasBase;
13 private Point end;
14 private boolean mouseDragged = false;
15 private MoveMouseAdapter moveMouseAdapter = null;
16 private Point start;
17 private int dragX = 0;
18
19 private int dragY = 0;
20
21 public MouseHandler(PaintCanvasBase canvasBase, IApplicationState appState) {
22 this.canvasBase = canvasBase;
23 this.applicationState = appState;
24 }
25
26 @Override
27 public void mouseDragged(MouseEvent e) {
28
29 mouseDragged = true;
30 int currentX = e.getX();
31 int currentY = e.getY();
32
33 if (applicationState.getActiveMouseMode().name().equals(Messages.getString("MouseHandler.0"))) {
34 int translateXX = currentX - dragX;
35 int translateYY = currentY - dragY;
36 Point transformPos = new Point(translateXX, translateYY);
37
38 dragX = currentX;
39 dragY = currentY;
40
41 moveMouseAdapter = new MoveMouseAdapter(start, transformPos, canvasBase);
42 moveMouseAdapter.update();
43 }
44 }
45
46 @Override
47 public void mousePressed(MouseEvent e) {
48 start = e.getPoint();
49 end = e.getPoint();
50 dragX = e.getX();
51 dragY = e.getY();
52 mouseDragged = false;
53
54 }
55
56 @Override
57 public void mouseReleased(MouseEvent e) {
58 end = e.getPoint();
59 MouseMode mouseMode = null;
60
61 switch (applicationState.getActiveMouseMode()) {
62 case DRAW:
63 mouseMode = new DrawMouseAdapter(start, end, canvasBase, applicationState);
64 break;
65 case SELECT:
66 mouseMode = new SelectMouseAdapter(start, end, canvasBase);
67 break;
68 case MOVE:
69 if (mouseDragged && moveMouseAdapter != null) {
70 moveMouseAdapter.releasePosition(end);
71 }
72
73 break;
74 }
75
76 if (mouseMode != null) {
77 mouseMode.update();
78 }
79 }
80 }
81