@@ -2337,21 +2337,27 @@ static public int calcFolderSize(File folder) {
2337
2337
}
2338
2338
2339
2339
public void handleAddLibrary () {
2340
- JFileChooser fileChooser = new JFileChooser (System .getProperty ("user.home" ));
2341
- fileChooser .setDialogTitle (tr ("Select a zip file or a folder containing the library you'd like to add" ));
2342
- fileChooser .setFileSelectionMode (JFileChooser .FILES_AND_DIRECTORIES );
2343
- fileChooser .setFileFilter (new FileNameExtensionFilter (tr ("ZIP files or folders" ), "zip" ));
2344
-
2345
- Dimension preferredSize = fileChooser .getPreferredSize ();
2346
- fileChooser .setPreferredSize (new Dimension (preferredSize .width + 200 , preferredSize .height + 200 ));
2340
+ // get the frontmost window frame for placing file dialog
2341
+ FileDialog fd = new FileDialog (activeEditor , tr ("Select a zip file or a folder containing the library you'd like to add" ), FileDialog .LOAD );
2342
+ File home = new File (System .getProperty ("user.home" ));
2343
+ if (home .isDirectory ()) {
2344
+ fd .setDirectory (home .getAbsolutePath ());
2345
+ }
2346
+ if (OSUtils .isWindows ()) {
2347
+ // Workaround: AWT FileDialog doesn't not support native file filters on Windows...
2348
+ // https://stackoverflow.com/questions/12558413/how-to-filter-file-type-in-filedialog
2349
+ fd .setFile ("*.zip" );
2350
+ }
2351
+ fd .setFilenameFilter ((dir , name ) -> name .toLowerCase ().endsWith (".zip" ));
2352
+ fd .setVisible (true );
2347
2353
2348
- int returnVal = fileChooser .showOpenDialog (activeEditor );
2354
+ String directory = fd .getDirectory ();
2355
+ String filename = fd .getFile ();
2349
2356
2350
- if (returnVal != JFileChooser .APPROVE_OPTION ) {
2351
- return ;
2352
- }
2357
+ // User canceled selection
2358
+ if (filename == null ) return ;
2353
2359
2354
- File sourceFile = fileChooser . getSelectedFile ( );
2360
+ File sourceFile = new File ( directory , filename );
2355
2361
File tmpFolder = null ;
2356
2362
2357
2363
try {
0 commit comments