//**************************************************************** // TRABAJO ISBC : INTEGRACION JAVA-JESS. CASO DEL ELEVADOR //**************************************************************** // // Fichero: CanvasDireccion.java // Autor: // Modificado por: Daniel Urieta Lopez // Proposito: Contiene la clase CanvasDireccion que contiene // la parte grafica de la direccion del Ascensor. // //**************************************************************** import java.awt.*; public class CanvasPisoAscensor extends Canvas { int pisoSelected; Polygon triangulo_arriba; Polygon triangulo_abajo; boolean arriba=false; boolean abajo=false; public CanvasPisoAscensor() { setBackground(Color.white); int aux = ((Edificio.MAX_NUM_PISOS-1) * 7); setSize(aux + 34, 20); int Xab[]={aux+17+7+3, aux+17+7+8, aux+17+7+13}; int Xar[]={3,8,13}; int Yab[]={5,12,5}; int Yar[]={12,5,12}; triangulo_abajo=new Polygon(Xab,Yab,3); triangulo_arriba=new Polygon(Xar,Yar,3); } public void SetDireccion(int dir_actual,int dir_programada) { arriba =( (dir_programada==Direccion.UP) || (dir_actual==Direccion.UP) ); abajo =( (dir_programada==Direccion.DOWN) || (dir_actual==Direccion.DOWN) ); repaint(); } public void SetPiso(int newPisoSelected) { pisoSelected = newPisoSelected; repaint(); } public void paint(Graphics g) { g.setColor(Color.blue); if (arriba) g.fillPolygon(triangulo_arriba); else g.drawPolygon(triangulo_arriba); g.setColor(Color.black); g.setFont(new Font("Dialog", Font.PLAIN, 12)); //dibujo todos los numeros de pisos en negro // los 10 pixels son del margen del triangulo de direccion for (int i = 1; i <= Edificio.MAX_NUM_PISOS; i++) { g.drawString(i+"", (7*i)+10, 12); } g.setColor(Color.red); // dibujo el piso en el que esta el ascensor en otro color g.drawString(pisoSelected + "", (7*pisoSelected)+10, 12); g.setColor(Color.blue); if (abajo) g.fillPolygon(triangulo_abajo); else g.drawPolygon(triangulo_abajo); } }