public synchronized void setCountdown(String umessage, int seconds) {
        try {
            thaw();
            this.secondsRemaining = seconds;
            long time = seconds * 1000;
            final String message = umessage;
            freezeMessage = true;
            
            countdownTimer = new java.util.Timer();
            
            TimerTask task = new TimerTask() {
                public void run() {
                    if (secondsRemaining <= 0) {
                        freezeMessage = false;
                        countdownTimer.cancel();
                    }
                    
                    upperMessage = message;
                    if (secondsRemaining != 1)
                        lowerMessage = secondsRemaining + " seconds";
                    else
                        lowerMessage = secondsRemaining + " second";
                    
                    Runnable doUpdate = new Runnable() {
                        public void run() {
                            if (!isVisible() && !itest)
                                setVisible(true);
                        }
                    };
                    SwingUtilities.invokeLater(doUpdate);
                    secondsRemaining--;
                }
            };
            
            countdownTimer.schedule(task, 0, 1000);
            
            while (freezeMessage)
                wait(1000);
            
        }catch(Exception e) {
            e.printStackTrace();
        }
    }