private void mouseDown(MouseEvent e) { if (game == null) return; if (game.getGameState() != GameState.IN_PROGRESS) return; if (e.button == 1) { // check for drag event if (beginDrag(e)) { redraw(); return; } // update arrow on left mouse click int x = e.x; int y = e.y; boolean del = true; for (Iterator i = squareLocations.iterator(); i.hasNext(); ) { Square s = (Square) i.next(); Rectangle r = s.r; if (r.contains(x, y)) { int n = s.x; int m = s.y; del = false; if (arrow == null || n != arrow.x || m != arrow.y) { arrow = new Arrow(n, m, Orientation.HORIZONTAL); } else { arrow.flip(); } redraw(); } } if (del) { getLocalTileRack().shuffle(); } resetInput(del); redraw(); } else { // stop drag doDrop(e); // clear typed characters on right mouse click resetInput(true); redraw(); } }