Java/TrafficSimulator/src/simulator/view/MainWindow.java

107 lines
3.9 KiB
Java

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;
}
}