// Last edited on 2000-09-03 06:55:19 by stolfi // Descricao abstrata de uma interface grafica para a planta inteligente import java.applet.Applet; import Retangulo; import Elemento; import Nodo; public abstract class InterfaceGrafica extends Applet { ////////////////////////////////////////////////////////////////////// // MÉTODOS GERAIS // // Estes métodos podem ser usados por sub-janelas e/ou pela central: public abstract Retangulo pegaFoco(); // Obtém o "foco" (retângulo de interesse) corrente public abstract void mensagem(String msg); // Mostra uma mensagem na linha de modo: public abstract void termina(); // Termina o applet ////////////////////////////////////////////////////////////////////// // MÉTODOS PARA RESPONDER A COMANDOS DO USUÁRIO // // Os métodos abaixo com nomes "comando..." devem ser chamados por // sub-janelas da interface (botões, mapas clicáveis, etc.) quando // o usuario requisita uma ação que afeta a interface e/ou o // estado da aplicação de maneira global, como por exemplo // mudar a área de interesse, selecionar um trecho, ou // calcular um caminho ótimo. // // Os métodos desta seção que repassam comandos para ao // engenho geográfico confiam que a central vai chamar de volta // os métodos de notificação ("aviso...") conforme necessário. public abstract void comandoMudarModo(int md); // O usuário requisita mudança de modo de funcionamento public abstract void comandoMudarFoco(Retangulo r); // O usuário pede para alterar o "foco" (retângulo de interesse) public abstract void comandoZoom(double fatorDeZoom); // O usuário pede para aumentar ou diminuir o tamanho do foco. // (Aqui fatorDeZoom > 1 significa ampliar o desenho, // ou seja diminuir o tamanho do foco). public abstract void comandoSelecionarElemento(Elemento ob); // O usuário cutucou ou digitou um elemento da planta. public abstract void comandoMudarTipoDesejado(String tipo); public abstract void comandoMudarCustoMaximo(double cMax); public abstract void comandoMudarNumeroDesejado(int nDes); // O usuário pediu para mudar os parâmetros da // busca de serviços por distância. public abstract void comandoImprimir(); // Imprime a planta (restrita ao foco corrente), com // selecoes e caminhos correntes: ////////////////////////////////////////////////////////////////////// // MÉTODOS PARA CALL-BACK DO ENGENHO // // Os métodos desta seção devem ser usados pelo engenho para // notificar mudanças no seu estado que podem afetar o estado da // interface e/ou podem exigir feedback para o usuário: public abstract void avisoMudouModo(int md); // Mudança de modo de funcionamento public abstract void avisoMudaramSelecoes(Elemento[] sel); // Mudança na lista de trechos selecionados public abstract void avisoMudaramCaminhos(Nodo[] cam); // Mudança nos caminhos calculados }