Use default fileChooser for now
[jalview.git] / src / jalview / io / JalviewFileChooser.java
1 /*\r
2  * Jalview - A Sequence Alignment Editor and Viewer\r
3  * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
4  *\r
5  * This program is free software; you can redistribute it and/or\r
6  * modify it under the terms of the GNU General Public License\r
7  * as published by the Free Software Foundation; either version 2\r
8  * of the License, or (at your option) any later version.\r
9  *\r
10  * This program is distributed in the hope that it will be useful,\r
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13  * GNU General Public License for more details.\r
14  *\r
15  * You should have received a copy of the GNU General Public License\r
16  * along with this program; if not, write to the Free Software\r
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
18  */\r
19 \r
20 //////////////////////////////////////////////////////////////////\r
21 package jalview.io;\r
22 \r
23 import java.io.*;\r
24 import java.awt.*;\r
25 import java.awt.event.*;\r
26 import java.util.*;\r
27 import java.util.List;\r
28 \r
29 import javax.swing.*;\r
30 import javax.swing.event.TableModelEvent;\r
31 import javax.swing.event.TableModelListener;\r
32 import javax.swing.table.*;\r
33 import java.util.*;\r
34 \r
35 import java.awt.*;\r
36 import java.awt.event.*;\r
37 import javax.swing.*;\r
38 import javax.swing.plaf.*;\r
39 import javax.swing.plaf.basic.*;\r
40 import javax.swing.plaf.metal.*;\r
41 import javax.swing.table.*;\r
42 import javax.swing.event.*;\r
43 import java.text.*;\r
44 \r
45 public class JalviewFileChooser\r
46     extends JFileChooser\r
47 {\r
48 \r
49   public JalviewFileChooser(String dir)\r
50   {\r
51     super(dir);\r
52   }\r
53 \r
54   public JalviewFileChooser(String dir, String[] suffix, String[] desc,\r
55                             String selected)\r
56   {\r
57     super(dir);\r
58 \r
59     JalviewFileFilter chosen = null;\r
60 \r
61     for (int i = 0; i < suffix.length; i++)\r
62     {\r
63       JalviewFileFilter jvf = new JalviewFileFilter(suffix[i], desc[i]);\r
64       addChoosableFileFilter(jvf);\r
65 \r
66       if ( (selected != null) && selected.equalsIgnoreCase(desc[i]))\r
67       {\r
68         chosen = jvf;\r
69       }\r
70     }\r
71 \r
72     if (chosen != null)\r
73     {\r
74       setFileFilter(chosen);\r
75     }\r
76   }\r
77 \r
78   public void setFileFilter(javax.swing.filechooser.FileFilter filter)\r
79   {\r
80     super.setFileFilter(filter);\r
81 \r
82     if (! (getUI() instanceof BasicFileChooserUI))\r
83     {\r
84       return;\r
85     }\r
86 \r
87     final BasicFileChooserUI ui = (BasicFileChooserUI) getUI();\r
88     final String name = ui.getFileName().trim();\r
89 \r
90     if ( (name == null) || (name.length() == 0))\r
91     {\r
92       return;\r
93     }\r
94 \r
95     EventQueue.invokeLater(new Thread()\r
96     {\r
97       public void run()\r
98       {\r
99         String currentName = ui.getFileName();\r
100         if ( (currentName == null) || (currentName.length() == 0))\r
101         {\r
102           ui.setFileName(name);\r
103         }\r
104       }\r
105     });\r
106   }\r
107 \r
108 \r
109   public String getSelectedFormat()\r
110   {\r
111     String format = getFileFilter().getDescription();\r
112 \r
113     if (format.toUpperCase().startsWith("JALVIEW"))\r
114     {\r
115       format = "Jalview";\r
116     }\r
117     else if (format.toUpperCase().startsWith("FASTA"))\r
118     {\r
119       format = "FASTA";\r
120     }\r
121     else if (format.toUpperCase().startsWith("MSF"))\r
122     {\r
123       format = "MSF";\r
124     }\r
125     else if (format.toUpperCase().startsWith("CLUSTAL"))\r
126     {\r
127       format = "CLUSTAL";\r
128     }\r
129     else if (format.toUpperCase().startsWith("BLC"))\r
130     {\r
131       format = "BLC";\r
132     }\r
133     else if (format.toUpperCase().startsWith("PIR"))\r
134     {\r
135       format = "PIR";\r
136     }\r
137     else if (format.toUpperCase().startsWith("PFAM"))\r
138     {\r
139       format = "PFAM";\r
140     }\r
141 \r
142     return format;\r
143   }\r
144 \r
145   public int showSaveDialog(Component parent)\r
146       throws HeadlessException\r
147   {\r
148     setDialogType(SAVE_DIALOG);\r
149 \r
150     int ret = showDialog(parent, null);\r
151 \r
152     if (getFileFilter() instanceof JalviewFileFilter)\r
153     {\r
154       JalviewFileFilter jvf = (JalviewFileFilter) getFileFilter();\r
155 \r
156       if (!jvf.accept(getSelectedFile()))\r
157       {\r
158         String withExtension = getSelectedFile() + "." +\r
159             jvf.getAcceptableExtension();\r
160         setSelectedFile(new File(withExtension));\r
161       }\r
162     }\r
163 \r
164     if ( (ret == JalviewFileChooser.APPROVE_OPTION) &&\r
165         getSelectedFile().exists())\r
166     {\r
167       int confirm = JOptionPane.showConfirmDialog(parent,\r
168                                                   "Overwrite existing file?",\r
169                                                   "File exists",\r
170                                                   JOptionPane.YES_NO_OPTION);\r
171 \r
172       if (confirm != JOptionPane.YES_OPTION)\r
173       {\r
174         ret = this.CANCEL_OPTION;\r
175       }\r
176     }\r
177 \r
178     return ret;\r
179   }\r
180 }\r
181 \r
182 \r
183 \r