@Override
    public void run() {
        while (true) {
            if (!done() && clock != null) {
                int secondsLeft = (int) (setAt + setMillis - System.currentTimeMillis()) / 1000;
                clock.setText(String.valueOf((int) (Math.floor(secondsLeft / 60)))
                        + ":" + String.format("%02d", secondsLeft % 60));
            } else {
                if (clock != null) {
                    clock.setText("");
                }
                if (!told) {
                    robot.keyPress(KeyEvent.VK_Q);
                    robot.keyRelease(KeyEvent.VK_Q);
                    told = true;
                }
            }
            try {
                Thread.sleep(20);
            } catch (InterruptedException ex) {
                Logger.getLogger(Timer.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }