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"))) { //$NON-NLS-1$
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