/************************************************************************************ * 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.selector; import java.awt.Dimension; import java.util.Vector; import javax.swing.*; import vnsim.vehicular.scenarios.Scenario; import vnsim.vehicular.scenarios.ScenarioMap; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FileInputStream; import java.io.ObjectInputStream; public class ScenarioSelection extends JFrame { /** * */ private static final long serialVersionUID = -90020853135669495L; JFrame fileSelectionFrame; Scenario outScenario=null; JPanel mapsPanel,buttonPanel; Vector alButtons; JButton loadFile, cancel; JScrollPane scrollMaps; Integer mutex; int indexSelection = -1; File selectedFile; public class LocalActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { if (e.getSource() == loadFile) { setVisible(false); fileSelectionFrame = new JFrame(); JFileChooser fc = new JFileChooser(); fc.setCurrentDirectory(new File(".")); // fileSelectionFrame.add(fc); fileSelectionFrame.setVisible(true); int returnVal = fc.showOpenDialog(fileSelectionFrame); if (returnVal == JFileChooser.APPROVE_OPTION) { selectedFile = fc.getSelectedFile(); System.out.println("File selected :" + selectedFile); try { ObjectInputStream ois = new ObjectInputStream( new FileInputStream(selectedFile)); outScenario = (Scenario) ois.readObject(); } catch (Exception ee) { ee.printStackTrace(); } synchronized (mutex) { mutex.notify(); } fileSelectionFrame.setVisible(false); } else { fileSelectionFrame.setVisible(false); setVisible(true); } } if (e.getSource() == cancel) { System.exit(0); } for (int i = 0; i < alButtons.size(); i++) { if (e.getSource() == alButtons.elementAt(i)) { indexSelection = i; setVisible(false); synchronized (mutex) { mutex.notify(); } break; } } } } public ScenarioSelection(Vector v, Integer m) { super("MapSelection"); this.mutex = m; SpringLayout l1, l2, l3; l1 = new SpringLayout(); l2 = new SpringLayout(); l3 = new SpringLayout(); this.setLayout(l1); LocalActionListener lal = new LocalActionListener(); mapsPanel=new JPanel(); mapsPanel.setLayout(l2); alButtons = new Vector(); JButton b; JLabel l; ImageIcon icon; SpringLayout.Constraints constraint; for (int i = 0; i < v.size(); i++) { icon = new ImageIcon(".//images//"+v.elementAt(i).imageFileName); //System.out.println("imagName="+v.elementAt(i).imageFileName+ "icon="+icon.getImageLoadStatus()); l = new JLabel(icon); b = new JButton(v.elementAt(i).name); b.addActionListener(lal); alButtons.add(b); constraint = l2.getConstraints(l); constraint.setX(Spring.constant(1)); constraint.setY(Spring.constant(200 * i + 1)); constraint.setWidth(Spring.constant(300)); constraint.setHeight(Spring.constant(198)); constraint = l2.getConstraints(b); constraint.setX(Spring.constant(310)); constraint.setY(Spring.constant(200 * i + 101)); constraint.setWidth(Spring.constant(100)); constraint.setHeight(Spring.constant(50)); mapsPanel.add(l); mapsPanel.add(b); } mapsPanel.setPreferredSize(new Dimension(450, (200 * v.size() + 100))); scrollMaps = new JScrollPane(); scrollMaps.setPreferredSize(new Dimension(450, 600)); scrollMaps.setViewportView(mapsPanel); constraint = l1.getConstraints(scrollMaps); constraint.setX(Spring.constant(1)); constraint.setY(Spring.constant(1)); constraint.setWidth(Spring.constant(450)); constraint.setHeight(Spring.constant(600)); buttonPanel=new JPanel(); buttonPanel.setLayout(l3); loadFile = new JButton("LoadOldConfig"); cancel = new JButton("Cancel"); loadFile.addActionListener(lal); cancel.addActionListener(lal); constraint = l3.getConstraints(loadFile); constraint.setX(Spring.constant(50)); constraint.setY(Spring.constant(1)); constraint.setWidth(Spring.constant(150)); constraint.setHeight(Spring.constant(50)); constraint = l3.getConstraints(cancel); constraint.setX(Spring.constant(250)); constraint.setY(Spring.constant(1)); constraint.setWidth(Spring.constant(150)); constraint.setHeight(Spring.constant(50)); buttonPanel.add(loadFile); buttonPanel.add(cancel); constraint = l1.getConstraints(buttonPanel); constraint.setX(Spring.constant(1)); constraint.setY(Spring.constant(601)); constraint.setWidth(Spring.constant(450)); constraint.setHeight(Spring.constant(60)); this.add(scrollMaps); this.add(buttonPanel); this.setSize(480, 690); this.setLocation(10, 10); this.setResizable(false); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } public Scenario getLoadedScenario() { return this.outScenario; } public int getSelection() { return this.indexSelection; } public File getSelectedFile() { return this.selectedFile; } }