View Javadoc

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 }