1 package tempcontroller.base; 2 3 /** 4 * Abstração de um Timer simples, com contagem de tempo decrescente 5 * e geração de eventos de 'tick' periódicos. 6 */ 7 public interface ITimer { 8 9 /** 10 * Estados do timer. 11 */ 12 public enum Estado { 13 /** 14 * Estado em que o timer não foi iniciado. 15 */ 16 NAO_INICIADO, 17 /** 18 * Contando o tempo. 19 */ 20 CRONOMETRANDO, 21 /** 22 * Pausado. 23 */ 24 PAUSADO, 25 /** 26 * Tempo total encerrado. Fim da contagem do tempo. 27 */ 28 TERMINADO 29 } 30 31 /** 32 * Define o tempo total do timer. Este é o tempo que o timer 33 * irá contar até gerar uma única vez o evento de 'tempoTotalTerminado'. 34 * @param tempTotal Tempo total de contagem do tempo. 35 */ 36 void setTempoTotal(long tempTotal); 37 38 /** 39 * Define o tempo de eventos periódicos de 'tick'. O timer gerará eventos 40 * de tick com período 'tempo'. O primeiro evento será a critério 41 * do próprio timer, podem ser a qualquer momento a partir do 42 * 'start' até uma espera máxima do próprio tamanho do tick. 43 * @param tempo Quantidade de tempo do período do tick. 44 */ 45 void setTick(long tempo); 46 47 /** 48 * Obtém o período do tick. 49 * @return Período do tick. 50 */ 51 long getTick(); 52 53 /** 54 * Adiciona ouvintes do timer. Este ouvinte 55 * ouvirá o evento de 'tempoTotalTerminado' e também 56 * de ticks do relógio. 57 * @param ouvinte Ouvinte do timer. 58 */ 59 void addOuvinteTimer(IOuvinteTimer ouvinte); 60 61 /** 62 * Remove um ouvinte ao conjunto de ouvintes do timer. 63 * @param ouvinte Ouvinte que não quer mais receber eventos deste 64 * timer. 65 */ 66 void removeOuvinteTimer(IOuvinteTimer ouvinte); 67 68 /** 69 * Inicia a contagem de tempo. 70 */ 71 void start(); 72 73 /** 74 * Termina a contagem de tempo, independente dela ter ou não 75 * alcançado o seu tempo total. 76 */ 77 void stop(); 78 79 /** 80 * Pausa a contagem de tempo. 81 */ 82 void pause(); 83 84 /** 85 * Retorna a contagem de tempo que foi pausada. 86 */ 87 void continua(); 88 89 /** 90 * Obtém o tempo decorrido. 91 * @return Tempo decorrido de acordo com a contagem deste timer. 92 */ 93 long getTempoDecorrido(); 94 95 /** 96 * Obtém o tempo total que a seu término encerra a contagem do tempo 97 * e também provoca o evento 'tempoTotalTerminado'. 98 * @return O tempo total deste timer. 99 */ 100 long getTempoTotal(); 101 102 /** 103 * Obtém o estado deste timer. 104 * @return O estado deste timer. 105 */ 106 Estado getEstado(); 107 }