MAB 240 - Computação II

Laboratório 8 - 16/11/2016

No laboratório de hoje você fará novas extensões ao projeto do Editor Gráfico, continuando as do laboratório 7. As extensões pedidas abaixo são cumulativas. Lembre-se que as classes e interfaces que fazem parte do framework não devem ser modificadas.

1. Adicione um atributo cor ao modelo do editor, e use essa cor como cor das figuras que são adicionadas, ao invés de uma cor fixa como é feito atualmente.

2. Crie um novo componente para representar um slider. Visualmente, um slider é um retângulo com no mínimo 100 pixels de altura, com uma cor de frente e uma cor de fundo. A cor de frente é a cor da borda (com 5 pixels) e também de outro retângulo que fica dentro do slider que tem a mesma largura do slider e 30 pixels de altura. O slider tem um valor associado, um número entre 0 e 1 (inclusive). O valor do slider dá a posição do retângulo dentro dele. Se for 0, o retângulo está no topo do slider (logo abaixo da borda superior), se for 1, está no fundo (30 pixels acima da borda inferior), e qualquer outro valor deve ser interpolado entre essas duas posições (use uma regra de três!). O valor é passado ao construtor do slider. Inicialmente crie apenas o necessário para instanciar um slider, e desenhá-lo na tela. Instancie três sliders, um vermelho, um verde, e um azul, e os adicione ao editor, do lado direito da área de desenho.

3. Agora você irá fazer o slider responder ao mouse. O slider permite arrastar o retângulo interno para mudar o seu valor. Para isso, implemente o método arrasto do slider, fazendo o cálculo inverso do feito para posicionar o retângulo dado o valor. O retângulo interno não pode ser arrastado para fora dos limites do slider.

4. Conecte cada slider ao resto do sistema associando um observador a um slider. Um observador do slider é um objeto que implementa a interface abaixo, e deve ser passado no construtor do slider. Toda vez que o valor do slider muda, o observador é avisado.

interface ObservadorSlider {
	    void mudou(double valor);
	}

5. Finalmente, conecte os sliders ao modelo, associando um observador a cada um deles que muda avisa o modelo de que a cor mudou (esses observadores são parte do controlador do editor).

6. Agora que temos uma maneira de mudar a cor de desenho, precisamos de uma maneira mais fácil do usuário ver qual é a cor atual. Crie um componente CaixaCor para representar uma caixa de cor e adicione-o ao editor, abaixo dos sliders. Esse componente é apenas um retângulo sólido de determinada cor. A cor não é fixa, mas obtida através de uma interface CorCaixa com três métodos getR, getG e getB, de modo análogo à interface Texto usada pelo componente CaixaTexto.

7. Conecte a caixa de cor ao modelo, passando uma instância de CorCaixa ao construtor de CaixaCor que lê a cor atual do modelo.

Enviando

Use o esse link para enviar os Laboratórios 7 e 8. O prazo para envio é quarta-feira, dia 30/11/2016.


Última Atualização: 2016-12-09 11:49