private void mouseHandler() {
		addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent event) {
				// If it's not our round, exit.
				if (!game.canPlay())
					return;

				// Get piece below the cursor.
				if (event.getX() <= marginX || event.getX() >= marginX + gridSize)
					return;
				if (event.getY() <= marginY || event.getY() >= marginY + gridSize)
					return;
				int x = (int) ((float) (event.getX() - marginX) / (float) gridSize * RANGE);
				int y = (int) ((float) (event.getY() - marginY) / (float) gridSize * RANGE);

				System.out.println("[" + (x + 1) + "," + (y + 1) + "]");
				int piece = game.getMatrix().getIndex(x, y);

				// If case is already player, exit.
				if (game.getMatrix().get(piece) != MatrixPiece.EMPTY)
					return;

				// Check if the case is valid.
				// We need to put a virtual piece in order to have a functional
				// neighbor research.
				game.getMatrix().set(piece, game.round() ? MatrixPiece.WHITE : MatrixPiece.BLACK);
				if (!game.getMatrix().hasNeighbor(piece, true)) {
					game.getMatrix().set(piece, MatrixPiece.EMPTY);
					game.message("You can't play here !", Message.ERROR, false, true);
					return;
				}

				// Play the piece.
				put(piece, game.round()); // MUST BE PLACED BEFORE GAME.PLAY()
				game.play(piece);
			}
		});
	}