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 }