// Autor: Fábio Dalla Vecchia - RA:981091 package pckInterface; // Arquivo: // Interface.java // // Objetivo: // Implementar a interface principal do projeto usando o layout // de interface definido pela classe InterfaceLayout.class, que // dispõe de um método para posicionar os componentes em coordenadas // espefícas na tela // // Compilador: javac 1.3 // Autor: Fábio Dalla Vecchia - RA:981091 // Última Atualização: 15-Jun-2001 // import java.awt.*; import java.applet.Applet; // Para passar parametros ao Engenho import pckEngenho.*; // importa a classe de Layout personalizado // import InterfaceLayout; // importa as classes de canvas usadas para cada componente /* import CanvasMapaReduzido; import CanvasBotaoZoomIn; import CanvasBotaoZoomOut; import CanvasBotaoImprimir; import CanvasBotaoMelhorCaminho; import CanvasBotaoArquivoVeiculo; import CanvasBotaoArquivoEncomenda; import CanvasMapaCalculado; */ // Classe: Interface // Autor: Fábio Dalla Vecchia - RA:981091 public class Interface extends Applet { // Graficos do Mapa Calculado e Reduzido (para interacao com outros pacotes) Graphics GfxMapaCalc; Graphics GfxMapaReduz; // Definicao das String String TituloApplet = "Easy Router - Protótipo Interface - (Fábio Vecchia)"; // Declaração dos rótulos do Applet Label LabelTitulo; // título Label LabelSelecVeiculo; // seleção do veículo desejado Label LabelSelecEncomenda; // seleção da encomenda desejada // Declaração das Caixas de Seleção de Veículos/Encomendas Choice BoxVeiculos; Choice BoxEncomendas; // Declaração das Imagens Image ImagemMapaReduzido; Image ImagemMapaCalculado; Image ImagemBotaoZoomIn[]; Image ImagemBotaoZoomOut[]; Image ImagemBotaoImprimir[]; Image ImagemBotaoMelhorCaminho[]; Image ImagemBotaoArquivoVeiculo[]; Image ImagemBotaoArquivoEncomenda[]; TextField TxtVeiculos; TextField TxtEncomendas; String ArquivoVeiculo; // Arquivo de Veículos String ArquivoEncomenda; // Arquivo de Encomendas String ArquivoTrecho; // Arquivo de Trechos Engenho EngenhoInit; // Inicializa parametros do Engenho Font FonteTitulo; // Fonte usada em alguns textos do applet // Declaração dos controles do Applet (cada um em seu próprio // canvas, com controles personalizados) CanvasBotaoZoomIn BotaoZoomIn; CanvasBotaoZoomOut BotaoZoomOut; CanvasBotaoImprimir BotaoImprimir; CanvasBotaoMelhorCaminho BotaoMelhorCaminho; CanvasBotaoArquivoVeiculo BotaoArquivoVeiculo; CanvasBotaoArquivoEncomenda BotaoArquivoEncomenda; CanvasMapaReduzido MapaReduzido; CanvasMapaCalculado MapaCalculado; // Inicialização das estruturas do Applet // Autor: Fábio Dalla Vecchia - RA:981091 public void init() { InicializaVeiculo(); InicializaEncomenda(); AlocaBufferImagens(); CarregaImagens(); InicializaRotulos(); // Setamos o Layout personalizado a ser usado no applet setLayout( new InterfaceLayout() ); InicializaRotulos(); InicializaCanvas(); AdicionaComponentes(); PosicionaComponentes(); // OBS: Abrir "FileDialog" em Browsers é proibido (por motivos // de seguranca do Java). Portanto, para este Applet rodar // num Browser comum, essas 2 rotinas abaixo devem ser // alteradas... EscolherArquivoVeiculo(); EscolherArquivoEncomenda(); EscolherArquivoTrecho(); // Cria buffer de imagem do MapaCalculado e MapaReduzido MapaCalculado.CriaMapaCalculado(375,299); MapaReduzido.CriaMapaReduzido(169,211); // Inicializa o Engenho InicializaEngenho(); } // método start() do Applet // Autor: Fábio Dalla Vecchia - RA:981091 public void start() { repaint(); } // método stop() do Applet // Autor: Fábio Dalla Vecchia - RA:981091 public void stop(){ } // Autor: Fábio Dalla Vecchia - RA:981091 public void update(Graphics g) { // Teste do Canvas Mapa Calculado GfxMapaCalc = MapaCalculado.getGraphicsMapaCalculado(); GfxMapaCalc.setColor( Color.yellow ); GfxMapaCalc.fillRect( 0,0,MapaCalculado.getLarguraGraphicsMapaCalculado()-2,MapaCalculado.getAlturaGraphicsMapaCalculado()-2 ); GfxMapaCalc.setColor( Color.red ); GfxMapaCalc.drawString( "Aqui vai o Mapa Calculado",MapaCalculado.MousePosX, MapaCalculado.MousePosY ); // Teste do Canvas Mapa Reduzido GfxMapaReduz = MapaReduzido.getGraphicsMapaReduzido(); GfxMapaReduz.setColor( Color.green ); GfxMapaReduz.fillRect( 0,0,MapaReduzido.getLarguraGraphicsMapaReduzido()-2,MapaReduzido.getAlturaGraphicsMapaReduzido()-2 ); GfxMapaReduz.setColor( Color.red ); GfxMapaReduz.drawString( "Aqui vai o Mapa Reduzido",MapaReduzido.MousePosX, MapaReduzido.MousePosY ); // Exibe mensagens de controle na linha de status do AppletViewer/Browser if (MapaReduzido.msgStatus) showStatus(MapaReduzido.msg); if (BotaoZoomIn.msgStatus || BotaoZoomIn.BotaoPressionado) showStatus(BotaoZoomIn.msg); if (BotaoZoomOut.msgStatus || BotaoZoomOut.BotaoPressionado) showStatus(BotaoZoomOut.msg); if (MapaCalculado.msgStatus) showStatus(MapaCalculado.msg); if (BotaoImprimir.msgStatus) showStatus(BotaoImprimir.msg); if (BotaoMelhorCaminho.msgStatus || BotaoMelhorCaminho.BotaoPressionado) showStatus(BotaoMelhorCaminho.msg); if (BotaoArquivoVeiculo.msgStatus|| BotaoArquivoVeiculo.BotaoPressionado) showStatus(BotaoArquivoVeiculo.msg); if (BotaoArquivoEncomenda.msgStatus || BotaoArquivoEncomenda.BotaoPressionado) showStatus(BotaoArquivoEncomenda.msg); // Opcao de impressao do Mapa Calculado if (BotaoImprimir.BotaoPressionado) { showStatus("Imprimindo..."); print(g); } paint (g); } // Autor: Fábio Dalla Vecchia - RA:981091 public void paint (Graphics g) { repaint(); } /////////////////////////////// // Métodos de inicializacao /////////////////////////////// // Método para alocar buffer para as imagens de /maps e /icons // Autor: Fábio Dalla Vecchia - RA:981091 public void AlocaBufferImagens() { // Inicializacao das Imagens mensagem("Alocando Buffer para Imagens..."); ImagemBotaoZoomIn = new Image[2]; ImagemBotaoZoomOut = new Image[2]; ImagemBotaoImprimir = new Image[2]; ImagemBotaoMelhorCaminho = new Image[2]; ImagemBotaoArquivoVeiculo = new Image[2]; ImagemBotaoArquivoEncomenda = new Image[2]; } // Método para carregar as imagens usadas na Interface // Autor: Fábio Dalla Vecchia - RA:981091 public void CarregaImagens() { // Carregamento das imagens dos componentes do Applet mensagem("Carregando Imagens..."); ImagemBotaoZoomIn[0] = getImage( getCodeBase(),"./icons/zoomIn01.gif" ); ImagemBotaoZoomIn[1] = getImage( getCodeBase(),"./icons/zoomIn02.gif" ); ImagemBotaoZoomOut[0] = getImage( getCodeBase(),"./icons/zoomOut01.gif" ); ImagemBotaoZoomOut[1] = getImage( getCodeBase(),"./icons/zoomOut02.gif" ); ImagemBotaoImprimir[0] = getImage( getCodeBase(),"./icons/printr01.gif" ); ImagemBotaoImprimir[1] = getImage( getCodeBase(),"./icons/printr02.gif" ); ImagemBotaoMelhorCaminho[0] = getImage( getCodeBase(),"./icons/melhcamin01.gif" ); ImagemBotaoMelhorCaminho[1] = getImage( getCodeBase(),"./icons/melhcamin02.gif" ); ImagemBotaoArquivoVeiculo[0] = getImage( getCodeBase(),"./icons/veiculo01.gif" ); ImagemBotaoArquivoVeiculo[1] = getImage( getCodeBase(),"./icons/veiculo02.gif" ); ImagemBotaoArquivoEncomenda[0] = getImage( getCodeBase(),"./icons/encomenda01.gif" ); ImagemBotaoArquivoEncomenda[1] = getImage( getCodeBase(),"./icons/encomenda02.gif" ); ImagemMapaReduzido = getImage( getDocumentBase(),"./icons/bigthumb.jpg" ); ImagemMapaCalculado= getImage( getDocumentBase(),"./icons/modelomapa.jpg" ); } // Método para inicializar a caixa de seleção dos Veículos // e seu campo de comentários // Autor: Fábio Dalla Vecchia - RA:981091 public void InicializaVeiculo() { mensagem("Inicializando Veículos..."); BoxVeiculos = new Choice(); // Adição de Itens (ilustrativo para protótipo da aplicacao) BoxVeiculos.addItem("Veiculo 1"); BoxVeiculos.addItem("Veiculo 2"); BoxVeiculos.addItem("Veiculo 3"); BoxVeiculos.addItem("Veiculo n"); TxtVeiculos = new TextField("Comentarios adicionais sobre Veículos",16); } // Método para inicializar a caixa de seleção das Encomendas // e seu campo de comentários // Autor: Fábio Dalla Vecchia - RA:981091 public void InicializaEncomenda() { mensagem("Inicializando Encomendas..."); BoxEncomendas = new Choice(); // Adição de Itens (ilustrativo para protótipo da aplicacao) BoxEncomendas.addItem("Encomenda 1"); BoxEncomendas.addItem("Encomenda 2"); BoxEncomendas.addItem("Encomenda 3"); BoxEncomendas.addItem("Encomenda n"); TxtEncomendas = new TextField("Comentarios adicionais sobre Encomendas",16); } // Inicializa as Labels (Rótulos de texto) // Autor: Fábio Dalla Vecchia - RA:981091 public void InicializaRotulos() { mensagem("Inicializando Rótulos..."); // Define Texto do Titulo do Applet FonteTitulo = new Font("TimesRoman",Font.BOLD,14); LabelTitulo = new Label( TituloApplet ); LabelTitulo.setFont(FonteTitulo); // Define Texto/Título da Caixa de Seleção de Veículos FonteTitulo = new Font("Courier",Font.ITALIC,12); LabelSelecVeiculo = new Label( "Selecione o veículo:" ); LabelSelecVeiculo.setFont(FonteTitulo); // Define Texto/Título da Caixa de Seleção das Encomendas FonteTitulo = new Font("Courier",Font.ITALIC,12); LabelSelecEncomenda = new Label( "Selecione a encomenda:" ); LabelSelecEncomenda.setFont(FonteTitulo); } // Inicializa as Estruturas de Canvas (Botões e Mapas) // Autor: Fábio Dalla Vecchia - RA:981091 public void InicializaCanvas() { mensagem("Inicializando Canvas..."); BotaoZoomIn = new CanvasBotaoZoomIn( 32,32, ImagemBotaoZoomIn); BotaoZoomOut = new CanvasBotaoZoomOut( 32,32, ImagemBotaoZoomOut); BotaoImprimir = new CanvasBotaoImprimir( 32,32, ImagemBotaoImprimir); BotaoMelhorCaminho = new CanvasBotaoMelhorCaminho( 32,32, ImagemBotaoMelhorCaminho); BotaoArquivoVeiculo = new CanvasBotaoArquivoVeiculo( 32,32, ImagemBotaoArquivoVeiculo); BotaoArquivoEncomenda = new CanvasBotaoArquivoEncomenda( 32,32, ImagemBotaoArquivoEncomenda); MapaCalculado = new CanvasMapaCalculado(375,299); // MapaReduzido = new CanvasMapaReduzido( 169,211,ImagemMapaReduzido ); MapaReduzido = new CanvasMapaReduzido( 169,211 ); } // Método para adicionar os componentes ao Layout personalizado // Autor: Fábio Dalla Vecchia - RA:981091 public void AdicionaComponentes() { mensagem("Adicionando Componentes ao Canvas..."); add( LabelTitulo ); add( LabelSelecVeiculo ); add( LabelSelecEncomenda ); add( MapaReduzido); add( BoxVeiculos ); add( BoxEncomendas ); add( BotaoZoomIn); add( BotaoZoomOut); add( BotaoImprimir); add( BotaoMelhorCaminho); add( BotaoArquivoVeiculo); add( BotaoArquivoEncomenda); add( MapaCalculado); add( TxtVeiculos); add( TxtEncomendas); } // Método para posicionar componentes na tela (posição absoluta) // Autor: Fábio Dalla Vecchia - RA:981091 public void PosicionaComponentes() { // Agora usamos o método "move" (que já implementamos no // layout personalizado) que nos permitirá colocar os // componentes nas posições desejadas mensagem("Posicionando componentes na tela..."); LabelTitulo.move( (size().width-TituloApplet.length()*6)/2,1 ); LabelSelecVeiculo.move( 32,332 ); LabelSelecEncomenda.move( 239,332 ); BotaoZoomIn.move(439,255); BotaoZoomOut.move(508,255); BotaoImprimir.move(576,255); BotaoMelhorCaminho.move(439,293); BotaoArquivoVeiculo.move(508,293); BotaoArquivoEncomenda.move(576,293); MapaReduzido.move (439,32); MapaCalculado.move (32,32); BoxVeiculos.move(32,356); BoxEncomendas.move(239,356); TxtVeiculos.move(32,426); TxtEncomendas.move(239,426); } // Método para exibir mensagens de status // Autor: Fábio Dalla Vecchia - RA:981091 public void mensagem(String msg){ System.out.println(msg); showStatus(msg); } // Autor: Fábio Dalla Vecchia - RA:981091 public void EscolherArquivoVeiculo() { // Abrir Novo arquivo de veiculos mensagem("Escolha o Arquivo de Veículos a ser usado"); FileDialog CaixaDialogoVeiculo = new FileDialog(new Frame(), "Escolha o arquivo de Veiculos", FileDialog.LOAD); CaixaDialogoVeiculo.setDirectory("."); // seta diretorio corrente CaixaDialogoVeiculo.show(); if (CaixaDialogoVeiculo.getFile() != null) { BotaoArquivoVeiculo.ArquivoVeiculo = CaixaDialogoVeiculo.getFile(); ArquivoVeiculo = BotaoArquivoVeiculo.ArquivoVeiculo; // global para ser usado no "Engenho" BotaoArquivoVeiculo.msg = "Abrir arquivo de Veiculos (Arquivo atual: "+BotaoArquivoVeiculo.ArquivoVeiculo+")" ; mensagem( BotaoArquivoVeiculo.msg ); } } // Autor: Fábio Dalla Vecchia - RA:981091 public void EscolherArquivoEncomenda() { // Abrir Novo arquivo de encomendas mensagem("Escolha o Arquivo de Encomendas a ser usado"); FileDialog CaixaDialogoEncomenda = new FileDialog(new Frame(), "Escolha o arquivo de Encomendas", FileDialog.LOAD); CaixaDialogoEncomenda.setDirectory("."); // seta diretorio corrente CaixaDialogoEncomenda.show(); if (CaixaDialogoEncomenda.getFile() != null) { BotaoArquivoEncomenda.ArquivoEncomenda = CaixaDialogoEncomenda.getFile(); ArquivoEncomenda = BotaoArquivoEncomenda.ArquivoEncomenda; // global para ser usado no "Engenho" BotaoArquivoEncomenda.msg = "Abrir arquivo de Encomendas (Arquivo atual: "+BotaoArquivoEncomenda.ArquivoEncomenda+")" ; mensagem( BotaoArquivoEncomenda.msg ); } } // Autor: Fábio Dalla Vecchia - RA:981091 public void EscolherArquivoTrecho() { // Abrir Novo arquivo de trechos mensagem("Escolha o Arquivo de Trechos a ser usado"); FileDialog CaixaDialogoTrecho = new FileDialog(new Frame(), "Escolha o arquivo de Trechos", FileDialog.LOAD); CaixaDialogoTrecho.setDirectory("."); // seta diretorio corrente CaixaDialogoTrecho.show(); if (CaixaDialogoTrecho.getFile() != null) { ArquivoTrecho = CaixaDialogoTrecho.getFile(); } } // Inicializa Parametros do Engenho // Autor: Fábio Dalla Vecchia - RA:981091 public void InicializaEngenho() { EngenhoInit = new EngenhoImpl(ArquivoVeiculo, ArquivoEncomenda, ArquivoTrecho, MapaCalculado.getGraphicsMapaCalculado(), MapaReduzido.getGraphicsMapaReduzido(), 0, 375, 0, 299, 0, 169, 0, 211 ); } } // Final da classe Interface.java