@@ -2382,16 +2382,47 @@ public void handleAddLibrary(Editor editor) {
2382
2382
2383
2383
Dimension preferredSize = fileChooser .getPreferredSize ();
2384
2384
fileChooser .setPreferredSize (new Dimension (preferredSize .width + 200 , preferredSize .height + 200 ));
2385
-
2385
+
2386
2386
int returnVal = fileChooser .showOpenDialog (editor );
2387
2387
2388
2388
if (returnVal != JFileChooser .APPROVE_OPTION ) {
2389
2389
return ;
2390
2390
}
2391
2391
2392
2392
File sourceFile = fileChooser .getSelectedFile ();
2393
+ File tmpFolder = null ;
2394
+
2395
+ try {
2396
+ // unpack ZIP
2397
+ if (!sourceFile .isDirectory ()) {
2398
+ try {
2399
+ tmpFolder = FileUtils .createTempFolder ();
2400
+ ZipDeflater zipDeflater = new ZipDeflater (sourceFile , tmpFolder );
2401
+ zipDeflater .deflate ();
2402
+ File [] foldersInTmpFolder = tmpFolder .listFiles (new OnlyDirs ());
2403
+ if (foldersInTmpFolder .length != 1 ) {
2404
+ throw new IOException ("Zip doesn't contain one library" );
2405
+ }
2406
+ sourceFile = foldersInTmpFolder [0 ];
2407
+ } catch (IOException e ) {
2408
+ editor .statusError (e );
2409
+ return ;
2410
+ }
2411
+ }
2412
+
2413
+ // is there a library?
2414
+ File libFolder = scanFatLibrary (sourceFile );
2415
+ if (libFolder == null ) {
2416
+ editor .statusError ("Not a valid library" );
2417
+ return ;
2418
+ }
2419
+ String [] headerFiles = headerListFromIncludePath (libFolder );
2420
+ if (headerFiles == null || headerFiles .length == 0 ) {
2421
+ editor .statusError ("Not a valid library" );
2422
+ return ;
2423
+ }
2393
2424
2394
- if ( sourceFile . isDirectory ()) {
2425
+ // copy folder
2395
2426
File destinationFolder = new File (getSketchbookLibrariesFolder (), sourceFile .getName ());
2396
2427
if (!destinationFolder .mkdir ()) {
2397
2428
editor .statusError ("Can't create folder: " + sourceFile .getName () + " into libraries folder" );
@@ -2403,15 +2434,10 @@ public void handleAddLibrary(Editor editor) {
2403
2434
editor .statusError (e );
2404
2435
return ;
2405
2436
}
2406
- } else {
2407
- try {
2408
- ZipDeflater zipDeflater = new ZipDeflater (sourceFile , getSketchbookLibrariesFolder ());
2409
- zipDeflater .deflate ();
2410
- } catch (IOException e ) {
2411
- editor .statusError (e );
2412
- return ;
2413
- }
2437
+ editor .statusNotice (_ ("Library added to your libraries. Check \" Import library\" menu" ));
2438
+ } finally {
2439
+ // delete zip created temp folder, if exists
2440
+ FileUtils .recursiveDelete (tmpFolder );
2414
2441
}
2415
- editor .statusNotice (_ ("Library added to your libraries. Check \" Import library\" menu" ));
2416
2442
}
2417
2443
}
0 commit comments