package simulator.view; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.GridLayout; import javax.swing.BorderFactory; import javax.swing.BoxLayout; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.border.TitledBorder; import simulator.control.Controller; public class MainWindow extends JFrame { /** * Serial ID: */ private static final long serialVersionUID = 1L; //Atributos: private Controller _ctrl; //Constructor: public MainWindow(Controller ctrl) { super("Traffic Simulator"); _ctrl = ctrl; initGUI(); } //Métodos: private void initGUI() { JPanel mainPanel = new JPanel(new BorderLayout()); this.setContentPane(mainPanel); mainPanel.add(new ControlPanel(_ctrl), BorderLayout.PAGE_START); mainPanel.add(new StatusBar(_ctrl), BorderLayout.PAGE_END); JPanel viewsPanel = new JPanel(new GridLayout(1, 2)); mainPanel.add(viewsPanel, BorderLayout.CENTER); JPanel tablesPanel = new JPanel(); tablesPanel.setLayout(new BoxLayout(tablesPanel, BoxLayout.Y_AXIS)); viewsPanel.add(tablesPanel); JPanel mapsPanel = new JPanel(); mapsPanel.setLayout(new BoxLayout(mapsPanel, BoxLayout.Y_AXIS)); viewsPanel.add(mapsPanel); // tables JPanel eventsView = createViewPanel(new JTable(new EventsTableModel(_ctrl)), "Events"); eventsView.setPreferredSize(new Dimension(500, 200)); eventsView.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.black, 2), "Events", TitledBorder.LEFT, TitledBorder.TOP)); tablesPanel.add(eventsView); JPanel vehiclesView = createViewPanel(new JTable(new VehiclesTableModel(_ctrl)), "Vehicles"); vehiclesView.setPreferredSize(new Dimension(500, 200)); vehiclesView.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.black, 2), "Vehicles", TitledBorder.LEFT, TitledBorder.TOP)); tablesPanel.add(vehiclesView); JPanel roadsView = createViewPanel(new JTable(new RoadsTableModel(_ctrl)), "Roads"); roadsView.setPreferredSize(new Dimension(500, 200)); roadsView.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.black, 2), "Roads", TitledBorder.LEFT, TitledBorder.TOP)); tablesPanel.add(roadsView); JPanel junctionsView = createViewPanel(new JTable(new JunctionsTableModel(_ctrl)), "Junctions"); junctionsView.setPreferredSize(new Dimension(500, 200)); junctionsView.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.black, 2), "Junctions", TitledBorder.LEFT, TitledBorder.TOP)); tablesPanel.add(junctionsView); // maps JPanel mapView = createViewPanel(new MapComponent(_ctrl), "Map"); mapView.setPreferredSize(new Dimension(500, 400)); mapView.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.black, 2), "Map", TitledBorder.LEFT, TitledBorder.TOP)); mapsPanel.add(mapView); JPanel roadMapView = createViewPanel(new MapByRoadComponent(_ctrl), "Map by Road"); roadMapView.setPreferredSize(new Dimension(500, 400)); roadMapView.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.black, 2), "Map by Road", TitledBorder.LEFT, TitledBorder.TOP)); mapsPanel.add(roadMapView); // this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); /*Para desactivar el cierre de la aplicación desde la barra de herramientas*/ //this.setDefaultCloseOperation(HIDE_ON_CLOSE); /*Para activar el cierre de la aplicación desde la barra de herramientas*/ this.pack(); this.setVisible(true); } private JPanel createViewPanel(JComponent c, String title) { JPanel p = new JPanel( new BorderLayout() ); // TODO add a framed border to p with title p.add(new JScrollPane(c)); return p; } }