107 lines
3.9 KiB
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;
|
|
}
|
|
|
|
}
|