37 |
import java.beans.PropertyChangeListener; |
import java.beans.PropertyChangeListener; |
38 |
|
|
39 |
import java.io.File; |
import java.io.File; |
|
import java.io.FilenameFilter; |
|
40 |
import java.net.URI; |
import java.net.URI; |
41 |
|
|
42 |
import java.text.NumberFormat; |
import java.text.NumberFormat; |
58 |
import org.jsampler.JSPrefs; |
import org.jsampler.JSPrefs; |
59 |
|
|
60 |
import org.jsampler.view.JSFileFilter; |
import org.jsampler.view.JSFileFilter; |
|
import org.jsampler.view.LscpFileFilter; |
|
61 |
import static org.jsampler.view.std.StdI18n.i18n; |
import static org.jsampler.view.std.StdI18n.i18n; |
62 |
import static org.jsampler.view.std.StdPrefs.*; |
import static org.jsampler.view.std.StdPrefs.*; |
63 |
|
|
227 |
private static File |
private static File |
228 |
showLscpFileChooser(boolean openDialog, Window owner) { |
showLscpFileChooser(boolean openDialog, Window owner) { |
229 |
return showFileChooser ( |
return showFileChooser ( |
230 |
openDialog, owner, false, new LscpFileFilter(), "lastScriptLocation" |
openDialog, owner, false, new JSFileFilter.Lscp(), "lastScriptLocation" |
231 |
|
); |
232 |
|
} |
233 |
|
|
234 |
|
public static File |
235 |
|
showSaveMidiMapsChooser() { |
236 |
|
JSFileFilter filter = new JSFileFilter.MidiMaps(); |
237 |
|
|
238 |
|
JSFileFilter[] filters = { |
239 |
|
new JSFileFilter.Lscp(), new JSFileFilter.Text(), new JSFileFilter.Html() |
240 |
|
}; |
241 |
|
|
242 |
|
return showFileChooser ( |
243 |
|
false, CC.getMainFrame(), false, filter, filters, "lastScriptLocation" |
244 |
); |
); |
245 |
} |
} |
246 |
|
|
262 |
JSFileFilter filter, |
JSFileFilter filter, |
263 |
String locationProperty |
String locationProperty |
264 |
) { |
) { |
265 |
|
JSFileFilter[] filters = (filter == null) ? new JSFileFilter[0] : new JSFileFilter[1]; |
266 |
|
if(filter != null) filters[0] = filter; |
267 |
|
|
268 |
|
return showFileChooser(openDialog, owner, dirChooser, filter, filters, locationProperty); |
269 |
|
} |
270 |
|
|
271 |
|
private static File |
272 |
|
showFileChooser ( |
273 |
|
boolean openDialog, |
274 |
|
Window owner, |
275 |
|
boolean dirChooser, |
276 |
|
JSFileFilter filter, |
277 |
|
JSFileFilter[] choosableFilters, |
278 |
|
String locationProperty |
279 |
|
) { |
280 |
boolean nativeFileChooser = preferences().getBoolProperty("nativeFileChoosers"); |
boolean nativeFileChooser = preferences().getBoolProperty("nativeFileChoosers"); |
281 |
String oldPath = null; |
String oldPath = null; |
282 |
if(locationProperty != null) { |
if(locationProperty != null) { |
303 |
} |
} |
304 |
} else { |
} else { |
305 |
JFileChooser fc = new JFileChooser(oldPath); |
JFileChooser fc = new JFileChooser(oldPath); |
306 |
if(filter != null) fc.setFileFilter(filter); |
for(JSFileFilter ff : choosableFilters) { |
307 |
|
fc.addChoosableFileFilter(ff); |
308 |
|
} |
309 |
|
if(choosableFilters.length > 0) fc.setFileFilter(choosableFilters[0]); |
310 |
|
|
311 |
if(dirChooser) fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); |
if(dirChooser) fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); |
312 |
int result; |
int result; |
313 |
if(openDialog) result = fc.showOpenDialog(owner); |
if(openDialog) result = fc.showOpenDialog(owner); |
314 |
else result = fc.showSaveDialog(owner); |
else result = fc.showSaveDialog(owner); |
315 |
if(result == JFileChooser.APPROVE_OPTION) f = fc.getSelectedFile(); |
if(result == JFileChooser.APPROVE_OPTION) { |
316 |
|
f = fc.getSelectedFile(); |
317 |
|
} |
318 |
|
|
319 |
|
if(result == JFileChooser.APPROVE_OPTION && !openDialog) { |
320 |
|
Object o = fc.getFileFilter(); |
321 |
|
for(JSFileFilter ff : choosableFilters) { |
322 |
|
if(ff == o) { |
323 |
|
String fn = f.getName().toLowerCase(); |
324 |
|
String ext = ff.getExtension().toLowerCase(); |
325 |
|
if(fn.endsWith(ext)) break; |
326 |
|
|
327 |
|
fn = f.getAbsolutePath() + ff.getExtension(); |
328 |
|
f = new File(fn); |
329 |
|
break; |
330 |
|
} |
331 |
|
} |
332 |
|
} |
333 |
} |
} |
334 |
|
|
335 |
if(f == null) return null; |
if(f == null) return null; |