package trafficjams.model.visualization;
import trafficjams.model.registers.TrafficRegister;
import trafficjams.model.util.Serializator;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* Created by IntelliJ IDEA.
* User: Администратор
* Date: 17.11.11
* Time: 19:24
* To change this template use File | Settings | File Templates.
*/
public class FileChoozer extends JDialog implements ActionListener {
class Filter extends FileFilter{
@Override
public boolean accept(File f) {
return f.isDirectory() || f.getAbsolutePath().toUpperCase().endsWith(MAP_EXT);
}
@Override
public String getDescription() {
return "Map file";
}
}
private static final String MAP_EXT = ".MP8";
private final JFileChooser jFileChooser;
private boolean save = false;
public FileChoozer(java.awt.Frame parent, boolean modal){
super(parent, modal);
this.setSize(500,400);
jFileChooser = new JFileChooser();
this.add(jFileChooser);
this.jFileChooser.setFileFilter(new Filter());
this.jFileChooser.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals(JFileChooser.CANCEL_SELECTION)){
this.dispose();
}
if (e.getActionCommand().equals(JFileChooser.APPROVE_SELECTION)){
if(jFileChooser.getFileFilter().accept((jFileChooser.getSelectedFile()))){
if (this.save){
this.saveFile(jFileChooser.getSelectedFile());
}else {
this.openFile(jFileChooser.getSelectedFile());
}
this.dispose();
}
}
}
private void openFile(File selectedFile) {
TrafficRegister r = TrafficRegister.getInstance();
try {
TrafficRegister trafficRegister = Serializator.deSerialize(selectedFile);
r.setRoadMap(trafficRegister.getRoadMap());
r.setVehicleRegister(trafficRegister.getVehicleRegister());
r.setInit(trafficRegister.isInit());
RoadMapCanvas.getInstance().setRepaintAllowed(true);
} catch (Exception ex){
ex.printStackTrace();
r.setInit(false);
r.setRoadMap(null);
r.setVehicleRegister(null);
}
}
private void saveFile(File selectedFile) {
FileOutputStream out = null;
try {
out = new FileOutputStream(selectedFile);
out.close();
Serializator.serialize(selectedFile, TrafficRegister.getInstance());
} catch (FileNotFoundException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
} finally {
}
}
public void setSave(boolean b) {
this.save = b;
if (b){
this.jFileChooser.setApproveButtonText("Save");
}else {
this.jFileChooser.setApproveButtonText("Open");
}
}
}