//**************************************************************** // TRABAJO ISBC : INTEGRACION JAVA-JESS. CASO DEL ELEVADOR //**************************************************************** // // Fichero: VentanaAscensores.java // Autor: // Modificado por: Daniel Urieta Lopez // Proposito: Contiene la clase VentanaAscensores que es la // ventana de aplicacion que informa del estado del // ascensor mediante paneles. // Modificaciones: dporto 08/12/2001 // actualizado con el PositionLayout para que // los ascensores simulen movimiento // //**************************************************************** import java.awt.*; import java.util.*; import salir.CloseWindowAndExit; import CanvasPasajero; import Edificio; import javax.swing.*; import PositionLayoutManager.*; import javax.swing.border.LineBorder; public class VentanaAscensores extends JFrame { private Edificio edificio; private Vector pasajeros_en_espera; private JPanel panel_ascensores; private CanvasPasajero canvas_pasajeros_espera; private Vector vectorPanelAscensor; static private int PIXELS_X = 400; static private int PIXELS_Y = 400; private GridBagLayout gbLayout; private GridBagConstraints gbConstraints; PositionLayout posLayout, posLayout_espera; private JPanel panel_pasajeros_espera; private Vector vector_pasajeros_espera; public VentanaAscensores (Edificio E,String titulo) { super(titulo); edificio=E; pasajeros_en_espera=new Vector(10); panel_ascensores=new JPanel(); posLayout = new PositionLayout(); panel_ascensores.setLayout(posLayout); panel_ascensores.setBackground(Color.white); panel_ascensores.setSize(PIXELS_X+170, PIXELS_Y+40); canvas_pasajeros_espera = new CanvasPasajero(pasajeros_en_espera, 100,PIXELS_Y+40); //dporto panel_pasajeros_espera = new JPanel(); panel_pasajeros_espera.setSize(70, PIXELS_Y+40); //???? posLayout_espera = new PositionLayout(); panel_pasajeros_espera.setLayout(posLayout_espera); panel_pasajeros_espera.setBackground(Color.white); vector_pasajeros_espera = new Vector(); // le pongo momentaneamente un 148 xq es la altura del ascensor int heightAscensor = 108; int sizeY = (PIXELS_Y - heightAscensor) / Edificio.MAX_NUM_PISOS; for (int i = 1; i <= Edificio.MAX_NUM_PISOS; i++) { CanvasPiso canvas_pasajeros_espera = new CanvasPiso(i); canvas_pasajeros_espera.setSize(70, sizeY); vector_pasajeros_espera.addElement(canvas_pasajeros_espera); PositionConstraints pCons; pCons = new PositionConstraints(); pCons.x = 0; pCons.y = (sizeY * (Edificio.MAX_NUM_PISOS - i -1)) + heightAscensor-27; posLayout_espera.setConstraints(canvas_pasajeros_espera, pCons); panel_pasajeros_espera.add(canvas_pasajeros_espera); } this.getContentPane().setLayout(new BorderLayout()); addWindowListener(new CloseWindowAndExit()); this.getContentPane().add(panel_ascensores,BorderLayout.CENTER); this.getContentPane().add(panel_pasajeros_espera,BorderLayout.EAST); //dporto vectorPanelAscensor = new Vector(); //dporto vectorPanelAscensor.setSize(Edificio.MAX_NUM_ASCENS + 1); setSize(PIXELS_X+170, PIXELS_Y+40); } public void A¤adirPasajeroEnEspera(Pasajero P) { pasajeros_en_espera.addElement(P); canvas_pasajeros_espera.repaint(); CanvasPiso canvas = (CanvasPiso) vector_pasajeros_espera.elementAt(P.GetPisoInicial().GetIdPiso()-1); canvas.addPasajero(); canvas.repaint(); } public void BorrarPasajeroEnEspera(Pasajero P) { pasajeros_en_espera.removeElement(P); canvas_pasajeros_espera.repaint(); CanvasPiso canvas = (CanvasPiso) vector_pasajeros_espera.elementAt(P.GetPisoInicial().GetIdPiso()-1); canvas.removePasajero(); canvas.repaint(); } public void setAscensor(JPanel PA, int numAscens) { vectorPanelAscensor.setElementAt(PA, numAscens); } public void SetPisoAscensor(int numAscens, int numPiso) { JPanel panelAscensor = (JPanel) vectorPanelAscensor.elementAt(numAscens); panel_ascensores.remove((JPanel) vectorPanelAscensor.elementAt(numAscens)); int sizeX = PIXELS_X / Edificio.MAX_NUM_ASCENS; // le pongo momentaneamente un 148 xq es la altura del ascensor int heightAscensor = 108; int sizeY = (PIXELS_Y - heightAscensor) / Edificio.MAX_NUM_PISOS; panelAscensor.setSize(sizeX, sizeY); vectorPanelAscensor.setElementAt(panelAscensor, numAscens); PositionConstraints pCons; pCons = new PositionConstraints(); pCons.x = sizeX * (numAscens - 1); pCons.y = (sizeY * (Edificio.MAX_NUM_PISOS - numPiso)); posLayout.setConstraints(panelAscensor, pCons); panel_ascensores.add(panelAscensor); this.validate(); } }