PathChooser.java
package edu.udel.cis.vsl.civl.gui.common;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.table.DefaultTableModel;
/**
* This class opens up a simple dialog window from which the user can add or
* remove paths from the SysIncludePath and UserIncludePath options.
*
* @author StevenNoyes
*
*/
public class PathChooser extends JFrame {
/**
* required and generated by eclipse
*/
private static final long serialVersionUID = -6403081585519846204L;
private JPanel p_container;
private JScrollPane sp_fileTable;
private JButton bt_browseFile;
private JButton bt_cancel;
private JButton bt_apply;
private JTable tbl_fileTable;
private ArrayList<String> filePaths;
private String pathString;
public String optName;
public GUI_revamp parent;
public PathChooser(String path, String optName, GUI_revamp parent) {
super();
this.optName = optName;
this.parent = parent;
filePaths = new ArrayList<String>();
setPathString(path);
this.setSize(500, 500);
this.setLocationRelativeTo(this.getParent());
initContainer();
initActions();
this.setVisible(true);
}
/**
* Creates the container for the path include GUI
*/
public void initContainer() {
// Init components
p_container = new JPanel();
sp_fileTable = new JScrollPane();
bt_browseFile = new JButton("Browse");
bt_apply = new JButton("Apply");
bt_cancel = new JButton("Cancel");
tbl_fileTable = new CIVLTable(new int[] { 2 }, "file", null);
sp_fileTable.setViewportView(tbl_fileTable);
tbl_fileTable.setModel(new DefaultTableModel(null, new String[] {
"File Name", "File Path", "Delete" }));
tbl_fileTable.setCellSelectionEnabled(true);
tbl_fileTable.setRowHeight(30);
final DefaultTableModel currFileModel = (DefaultTableModel) tbl_fileTable
.getModel();
ArrayList<String> arr = splitPathString();
for (int i = 0; i < arr.size(); i++) {
currFileModel.addRow(new Object[] { arr.get(i), arr.get(i),
"Delete" });
}
// Add main JPanel to this JFrame
this.add(p_container);
// Add components to p_container
p_container.add(sp_fileTable);
p_container.add(bt_browseFile);
p_container.add(bt_apply);
p_container.add(bt_cancel);
}
private ArrayList<String> splitPathString() {
StringBuffer sb = new StringBuffer();
ArrayList<String> arrayOut = new ArrayList<String>();
for (int i = 0; i < pathString.length(); i++) {
char c = pathString.charAt(i);
if (c == ':') {
arrayOut.add(sb.toString());
sb.delete(0, sb.length());
}
else {
sb.append(c);
}
}
return arrayOut;
}
public void initActions() {
ActionListener browseFile = new ActionListener() {
public void actionPerformed(ActionEvent e) {
String examplesPath = "/Users/noyes/Documents/workspace/CIVL/examples";
@SuppressWarnings("unused")
File start = new File(examplesPath);
final JFileChooser chooser = new JFileChooser();
// chooser.setCurrentDirectory(start);
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"CIVL Files (.cvl)", "cvl");
chooser.setFileFilter(filter);
final DefaultTableModel currFileModel = (DefaultTableModel) tbl_fileTable
.getModel();
chooser.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
File selectedFile = chooser.getSelectedFile();
// currConfig.setSelectedFile(selectedFile);
currFileModel.addRow(new Object[] {
selectedFile.getName(), selectedFile.getPath(),
"Delete" });
filePaths.add(selectedFile.getPath());
// String[] filePaths = new String[files.length];
}
});
chooser.showOpenDialog(null);
}
};
bt_browseFile.addActionListener(browseFile);
ActionListener apply = new ActionListener() {
public void actionPerformed(ActionEvent e) {
pathString = format();
parent.save(pathString, optName);
// rcdn.pathString_sys
// System.out.println();
// save();
}
};
bt_apply.addActionListener(apply);
/*
* //Have the JFrame save the value this.addWindowListener( new
* java.awt.event.WindowAdapter() {
*
* @Override public void windowClosing(java.awt.event.WindowEvent
* windowEvent) { System.exit(0); } } );
*/
}
/**
* Saves the values from the table in the form of an include path string
*
* @return The string that represents the include path string
*
*/
public String format() {
String out = "";
int size = filePaths.size();
for (int i = 0; i < size; i++) {
if (i != size - 1)
out += filePaths.get(i) + ":";
else
out += filePaths.get(i);
}
return out;
}
public String getPathString() {
return pathString;
}
private void setPathString(String pathString) {
this.pathString = pathString;
}
}