X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FJalviewFileChooser.java;h=423f874e2b84e8941f43e2176bcd7c33f2ed7d92;hb=91416b3038a6f3fc655791512770da07cb6cb251;hp=33d18a384627c47d57234a2c74ded112b842ac14;hpb=93020ed6ef8dd285c987f79d258508bd53187433;p=jalview.git diff --git a/src/jalview/io/JalviewFileChooser.java b/src/jalview/io/JalviewFileChooser.java index 33d18a3..423f874 100755 --- a/src/jalview/io/JalviewFileChooser.java +++ b/src/jalview/io/JalviewFileChooser.java @@ -23,6 +23,8 @@ package jalview.io; import java.io.*; import java.awt.*; import javax.swing.*; +import java.awt.event.*; +import java.util.*; public class JalviewFileChooser extends JFileChooser @@ -31,6 +33,7 @@ public class JalviewFileChooser public JalviewFileChooser(String dir) { super(dir); + setAccessory(new RecentlyOpened()); } public JalviewFileChooser(String dir, String[] suffix, String[] desc, @@ -55,8 +58,10 @@ public class JalviewFileChooser { setFileFilter(chosen); } + setAccessory(new RecentlyOpened()); } + public void setFileFilter(javax.swing.filechooser.FileFilter filter) { super.setFileFilter(filter); @@ -91,7 +96,6 @@ public class JalviewFileChooser } } - public String getSelectedFormat() { if(getFileFilter()==null) @@ -136,6 +140,8 @@ public class JalviewFileChooser public int showSaveDialog(Component parent) throws HeadlessException { + this.setAccessory(null); + setDialogType(SAVE_DIALOG); int ret = showDialog(parent, null); @@ -162,13 +168,81 @@ public class JalviewFileChooser if (confirm != JOptionPane.YES_OPTION) { - ret = this.CANCEL_OPTION; + ret = JalviewFileChooser.CANCEL_OPTION; } } return ret; } + + void recentListSelectionChanged(String selection) + { + setSelectedFile(null); + + File file = new File(selection); + if (getFileFilter() instanceof JalviewFileFilter) + { + JalviewFileFilter jvf = (JalviewFileFilter)this.getFileFilter(); + + if (!jvf.accept(file)) + { + setFileFilter(getChoosableFileFilters()[0]); + } + } + + setSelectedFile( file ); + } + + class RecentlyOpened extends JPanel + { + JList list; + public RecentlyOpened() + { + String historyItems = jalview.bin.Cache.getProperty("RECENT_FILE"); + StringTokenizer st; + Vector recent = new Vector(); + + if (historyItems != null) + { + st = new StringTokenizer(historyItems, "\t"); + + while (st.hasMoreTokens()) + { + recent.addElement(st.nextElement()); + } + } + + list = new JList(recent); + list.addMouseListener(new MouseAdapter() + { + public void mousePressed(MouseEvent evt) + { + recentListSelectionChanged(list.getSelectedValue().toString()); + } + }); + + this.setBorder(new javax.swing.border.TitledBorder("Recently Opened")); + + final JScrollPane scroller = new JScrollPane(list); + scroller.setPreferredSize(new Dimension(120, 200)); + this.add(scroller); + + javax.swing.SwingUtilities.invokeLater(new Runnable() + { + public void run() + { + scroller.getHorizontalScrollBar().setValue( + scroller.getHorizontalScrollBar().getMaximum()); + } + }); + + + } + + } } + +