@@ -2337,21 +2337,27 @@ static public int calcFolderSize(File folder) {
23372337 }
23382338
23392339 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 );
23472353
2348- int returnVal = fileChooser .showOpenDialog (activeEditor );
2354+ String directory = fd .getDirectory ();
2355+ String filename = fd .getFile ();
23492356
2350- if (returnVal != JFileChooser .APPROVE_OPTION ) {
2351- return ;
2352- }
2357+ // User canceled selection
2358+ if (filename == null ) return ;
23532359
2354- File sourceFile = fileChooser . getSelectedFile ( );
2360+ File sourceFile = new File ( directory , filename );
23552361 File tmpFolder = null ;
23562362
23572363 try {
0 commit comments