package org.seqcode.viz.preferences; import java.io.*; import java.awt.*; import javax.swing.*; import org.seqcode.viz.utils.FileChooser; import java.awt.event.*; public class FileSelectPanel extends JPanel { public static void main(String[] args) { TestFrame tf = new TestFrame(null); } private File file; private JButton chooseButton; private JLabel label; public FileSelectPanel(File f) { super(); file = f; init(); } public void init() { Runnable r = new Runnable() { public void run() { label = new JLabel(file == null ? "None" : file.getName()); chooseButton = new JButton("Choose File"); setLayout(new GridLayout(1, 2)); add(label); add(chooseButton); chooseButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { chooseNewFile(); } }); } }; EventQueue.invokeLater(r); } public void chooseNewFile() { FileChooser chooser = new FileChooser(null); file = chooser.choose(); updateLabel(); } private void updateLabel() { Runnable r = new Runnable() { public void run() { label.setText(file == null ? "None" : file.getName()); repaint(); } }; EventQueue.invokeLater(r); } public File getFile() { return file; } } class TestFrame extends JFrame { private FileSelectPanel fsp; public TestFrame(File f) { super("File Test"); fsp = new FileSelectPanel(f); Runnable r = new Runnable() { public void run() { Container c = (Container)getContentPane(); c.setLayout(new BorderLayout()); c.add(fsp, BorderLayout.NORTH); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.out.println("File: " + fsp.getFile().getName()); } }); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); pack(); } }; EventQueue.invokeLater(r); } }