Recently loaded files, urls, append sequences to Alignment
[jalview.git] / src / jalview / io / JalviewFileChooser.java
index 2bac0de..b04a705 100755 (executable)
@@ -23,6 +23,8 @@ package jalview.io;
 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
@@ -31,6 +33,7 @@ public class JalviewFileChooser
   public JalviewFileChooser(String dir)\r
   {\r
     super(dir);\r
+    setAccessory(new RecentlyOpened());\r
   }\r
 \r
   public JalviewFileChooser(String dir, String[] suffix, String[] desc,\r
@@ -55,8 +58,10 @@ public class JalviewFileChooser
     {\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
@@ -91,7 +96,6 @@ public class JalviewFileChooser
     }\r
   }\r
 \r
-\r
   public String getSelectedFormat()\r
   {\r
     if(getFileFilter()==null)\r
@@ -136,6 +140,8 @@ public class JalviewFileChooser
   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
@@ -168,7 +174,68 @@ public class JalviewFileChooser
 \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