import java.io.*;\r
import java.awt.*;\r
import javax.swing.*;\r
+import java.awt.event.*;\r
+import java.util.*;\r
\r
public class JalviewFileChooser\r
extends JFileChooser\r
public JalviewFileChooser(String dir)\r
{\r
super(dir);\r
+ setAccessory(new RecentlyOpened());\r
}\r
\r
public JalviewFileChooser(String dir, String[] suffix, String[] desc,\r
{\r
setFileFilter(chosen);\r
}\r
+ setAccessory(new RecentlyOpened());\r
}\r
\r
+\r
public void setFileFilter(javax.swing.filechooser.FileFilter filter)\r
{\r
super.setFileFilter(filter);\r
}\r
}\r
\r
-\r
public String getSelectedFormat()\r
{\r
if(getFileFilter()==null)\r
public int showSaveDialog(Component parent)\r
throws HeadlessException\r
{\r
+ this.setAccessory(null);\r
+\r
setDialogType(SAVE_DIALOG);\r
\r
int ret = showDialog(parent, null);\r
\r
return ret;\r
}\r
+\r
+ void recentListSelectionChanged(String selection)\r
+ {\r
+ setSelectedFile(null);\r
+\r
+ File file = new File(selection);\r
+ if (getFileFilter() instanceof JalviewFileFilter)\r
+ {\r
+ JalviewFileFilter jvf = (JalviewFileFilter)this.getFileFilter();\r
+\r
+ if (!jvf.accept(file))\r
+ {\r
+ setFileFilter(getChoosableFileFilters()[0]);\r
+ }\r
+ }\r
+\r
+ setSelectedFile( file );\r
+ }\r
+\r
+ class RecentlyOpened extends JPanel\r
+ {\r
+ JList list;\r
+ public RecentlyOpened()\r
+ {\r
+ String historyItems = jalview.bin.Cache.getProperty("RECENT_FILE");\r
+ StringTokenizer st;\r
+ Vector recent = new Vector();\r
+\r
+ if (historyItems != null)\r
+ {\r
+ st = new StringTokenizer(historyItems, "\t");\r
+\r
+ while (st.hasMoreTokens())\r
+ {\r
+ recent.addElement(st.nextElement());\r
+ }\r
+ }\r
+\r
+ list = new JList(recent);\r
+ list.addMouseListener(new MouseAdapter()\r
+ {\r
+ public void mousePressed(MouseEvent evt)\r
+ {\r
+ recentListSelectionChanged(list.getSelectedValue().toString());\r
+ }\r
+ });\r
+\r
+ this.setBorder(new javax.swing.border.TitledBorder("Recently Opened"));\r
+\r
+ JScrollPane scroller = new JScrollPane(list);\r
+ scroller.setPreferredSize(new Dimension(250, 200));\r
+ this.add(scroller);\r
+ scroller.getHorizontalScrollBar()\r
+ .setValue(scroller.getHorizontalScrollBar().getMaximum()\r
+ );\r
+\r
+ }\r
+\r
+ }\r
}\r
\r
\r
\r
+\r
+\r