private void handleMouseEvent(ViewEvent e) {
		MouseMoveEvent moveEvent = ((MouseMoveEvent) e);
		MouseEvent mouseEvent = moveEvent.getMouseEvent();
		if (moveEvent.getType().equals(MouseMoveEvent.Type.MOUSE_ENTERED)) {
			if (isFirstClick) {
				mouseEvent.getComponent().setForeground(Color.ORANGE);
			} else if (mouseEvent.getSource() != firstEventSource) {
				((JButton) mouseEvent.getComponent()).setBorder(BorderFactory
						.createLineBorder(Color.ORANGE, 2, true));
			}
		} else if (moveEvent.getType().equals(MouseMoveEvent.Type.MOUSE_EXITED)) {
			if (mouseEvent.getSource() != firstEventSource) {
				mouseEvent.getComponent().setForeground(null);
				((JButton) mouseEvent.getComponent()).setBorder(BorderFactory
						.createEtchedBorder());
			}
		} else {
			ChessPosition position = ((MouseMoveEvent) e).getPosition();
			if (isFirstClick) {
				firstPosition = position;
				firstMouseEvent = mouseEvent;
				firstEventSource = mouseEvent.getSource();
				if (model.getPieceOnBoard(firstPosition) != null) {
					mouseEvent.getComponent().setForeground(Color.GREEN);
					isFirstClick = false;
					model.getHighlightPositions(model.getPieceOnBoard(position));
				}
			} else {
				model.resetHighlightedPositions();
				((GameSquareWidget) mouseEvent.getSource())
						.setBorder(BorderFactory.createEtchedBorder());
				firstMouseEvent.getComponent().setForeground(null);
				if (firstEventSource != mouseEvent.getSource()) {
					// if the user clicked a square that was not the first
					// square
					// attempt to move the piece, else reset the board
					ChessPosition first = firstPosition;
					ChessPosition second = position;
					setTextField("Type a command");
					handleAttemptedMove(new ChessMove(
							model.getPieceOnBoard(first), first, second));
				}
				firstMouseEvent = null;
				firstEventSource = null;
				isFirstClick = true;
			}
		}
	}