/************************************************************************************ * Copyright (C) 2008 by Politehnica University of Bucharest and Rutgers University * All rights reserved. * Refer to LICENSE for terms and conditions of use. ***********************************************************************************/ package vnsim.gui; /* * Created on Jul 16, 2005 * */ import java.util.Enumeration; import java.util.Vector; import javax.comm.CommPortIdentifier; import javax.swing.*; import vnsim.core.*; import vnsim.map.object.*; import java.awt.*; import java.awt.event.*; /** * @author Victor-Radu * */ public class Main extends JFrame { /** * */ private static final long serialVersionUID = 1L; static final String maps[]={"NJ","Poli"}; JComboBox mapsCB = new JComboBox(maps); JTextField delayTF1 = new JTextField("5000"); JTextField periodTF1 = new JTextField("1000"); JTextField delayTF2 = new JTextField("10000"); JTextField periodTF2 = new JTextField("1000"); JTextField idTF = new JTextField("1000"); JRadioButton tracesRB, serialRB; JRadioButton net1RB, net2RB; JButton fileB=new JButton("File:"); JTextField fileTF = new JTextField(); JLabel deviceL=new JLabel("Device:"); Vector devs = new Vector(); JComboBox devsCB = null; JButton StartButton = new JButton("Start"); JButton ExitButton = new JButton("Exit"); public Main(){ super("TrafficView"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(600,400); setResizable(false); Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize(); setLocation(screenSize.width/2-200,screenSize.height/2-250); Container cp=getContentPane(); cp.setLayout(null); //select map JLabel map=new JLabel("Map:"); map.setBounds(20,20,30,20); cp.add(map); mapsCB.setBounds(100,20,100,20); cp.add(mapsCB); //set GPS input JLabel gpsL=new JLabel("GPS"); gpsL.setBounds(280,60,30,20); cp.add(gpsL); JLabel delayL1=new JLabel("delay"); delayL1.setBounds(20,125,50,20); cp.add(delayL1); delayTF1.setBounds(70,125,50,20); cp.add(delayTF1); JLabel periodL1=new JLabel("period"); periodL1.setBounds(140,125,50,20); cp.add(periodL1); periodTF1.setBounds(190,125,50,20); cp.add(periodTF1); Enumeration en = CommPortIdentifier.getPortIdentifiers(); while (en.hasMoreElements()){ CommPortIdentifier cpi = (CommPortIdentifier)en.nextElement(); devs.add(cpi.getName()); } deviceL.setBounds(410,100,50,20); cp.add(deviceL); devsCB = new JComboBox(devs); devsCB.setBounds(470,100,70,20); cp.add(devsCB); fileB.setBounds(410,140,60,25); cp.add(fileB); fileTF.setBounds(470,140,110,25); cp.add(fileTF); fileB.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ JFileChooser selectTraceFile = new JFileChooser(); int returnVal = selectTraceFile.showOpenDialog((JFrame)((JButton)e.getSource()).getRootPane().getParent()); if(returnVal == JFileChooser.APPROVE_OPTION) { fileTF.setText(selectTraceFile.getSelectedFile().getName()); } } }); fileB.setEnabled(true); fileTF.setEnabled(true); deviceL.setEnabled(false); devsCB.setEnabled(false); ButtonGroup group=new ButtonGroup(); tracesRB=new JRadioButton("Use GPS traces"); tracesRB.setSelected(true); serialRB=new JRadioButton("Use GPS device"); serialRB.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ fileB.setEnabled(false); fileTF.setEnabled(false); deviceL.setEnabled(true); devsCB.setEnabled(true); } }); tracesRB.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ fileB.setEnabled(true); fileTF.setEnabled(true); deviceL.setEnabled(false); devsCB.setEnabled(false); } }); group.add(tracesRB); group.add(serialRB); serialRB.setBounds(270,100,130,20); tracesRB.setBounds(270,140,130,20); cp.add(tracesRB); cp.add(serialRB); //set networking model JLabel netL=new JLabel("Networking model"); netL.setBounds(250,180,150,20); cp.add(netL); ButtonGroup group2 = new ButtonGroup(); net1RB = new JRadioButton("Simple text messages"); net2RB=new JRadioButton("Neighbor discovery"); net2RB.setSelected(true); group2.add(net1RB); group2.add(net2RB); net1RB.setBounds(20,220,180,20); net2RB.setBounds(20,260,180,20); cp.add(net1RB); cp.add(net2RB); JLabel delayL2=new JLabel("delay"); delayL2.setBounds(300,240,50,20); cp.add(delayL2); delayTF2.setBounds(350,240,50,20); cp.add(delayTF2); JLabel periodL2=new JLabel("period"); periodL2.setBounds(420,240,50,20); cp.add(periodL2); periodTF2.setBounds(470,240,50,20); cp.add(periodTF2); JLabel idL=new JLabel("Vehicle ID:"); idL.setBounds(420,240,80,20); cp.add(idL); idTF.setBounds(500,240,50,20); cp.add(idTF); StartButton.setBounds(400,330,80,30); StartButton.addActionListener(new StartListener()); ExitButton.setBounds(500,330,80,30); ExitButton.addActionListener(new ExitListener()); cp.add(StartButton); cp.add(ExitButton); setVisible(true); } class StartListener implements ActionListener{ public void actionPerformed(ActionEvent e){ setVisible(false); fileTF.setEnabled(false); // new displayMain2( (JFrame)((JButton)e.getSource()).getRootPane().getParent()); } } class ExitListener implements ActionListener{ public void actionPerformed(ActionEvent e){ System.exit(0); } } public static void startGui() throws Exception { Globals.map.setLaneNoExtra(); Globals.engine=new Engine(true, true); Globals.engine.init(); Globals.demo = new Display(); Globals.demo.setVisible(true); System.out.println("Gata main"); } public void someTests(Map map){ Road r = (Road)map.roads.get(69); for (int i=0; i