@@ -2613,16 +2613,47 @@ public void handleAddLibrary(Editor editor) {
2613
2613
2614
2614
Dimension preferredSize = fileChooser .getPreferredSize ();
2615
2615
fileChooser .setPreferredSize (new Dimension (preferredSize .width + 200 , preferredSize .height + 200 ));
2616
-
2616
+
2617
2617
int returnVal = fileChooser .showOpenDialog (editor );
2618
2618
2619
2619
if (returnVal != JFileChooser .APPROVE_OPTION ) {
2620
2620
return ;
2621
2621
}
2622
2622
2623
2623
File sourceFile = fileChooser .getSelectedFile ();
2624
+ File tmpFolder = null ;
2625
+
2626
+ try {
2627
+ // unpack ZIP
2628
+ if (!sourceFile .isDirectory ()) {
2629
+ try {
2630
+ tmpFolder = FileUtils .createTempFolder ();
2631
+ ZipDeflater zipDeflater = new ZipDeflater (sourceFile , tmpFolder );
2632
+ zipDeflater .deflate ();
2633
+ File [] foldersInTmpFolder = tmpFolder .listFiles (new OnlyDirs ());
2634
+ if (foldersInTmpFolder .length != 1 ) {
2635
+ throw new IOException ("Zip doesn't contain one library" );
2636
+ }
2637
+ sourceFile = foldersInTmpFolder [0 ];
2638
+ } catch (IOException e ) {
2639
+ editor .statusError (e );
2640
+ return ;
2641
+ }
2642
+ }
2643
+
2644
+ // is there a library?
2645
+ File libFolder = scanFatLibrary (sourceFile );
2646
+ if (libFolder == null ) {
2647
+ editor .statusError ("Not a valid library" );
2648
+ return ;
2649
+ }
2650
+ String [] headerFiles = headerListFromIncludePath (libFolder );
2651
+ if (headerFiles == null || headerFiles .length == 0 ) {
2652
+ editor .statusError ("Not a valid library" );
2653
+ return ;
2654
+ }
2624
2655
2625
- if ( sourceFile . isDirectory ()) {
2656
+ // copy folder
2626
2657
File destinationFolder = new File (getSketchbookLibrariesFolder (), sourceFile .getName ());
2627
2658
if (!destinationFolder .mkdir ()) {
2628
2659
editor .statusError ("Can't create folder: " + sourceFile .getName () + " into libraries folder" );
@@ -2634,15 +2665,10 @@ public void handleAddLibrary(Editor editor) {
2634
2665
editor .statusError (e );
2635
2666
return ;
2636
2667
}
2637
- } else {
2638
- try {
2639
- ZipDeflater zipDeflater = new ZipDeflater (sourceFile , getSketchbookLibrariesFolder ());
2640
- zipDeflater .deflate ();
2641
- } catch (IOException e ) {
2642
- editor .statusError (e );
2643
- return ;
2644
- }
2668
+ editor .statusNotice (_ ("Library added to your libraries. Check \" Import library\" menu" ));
2669
+ } finally {
2670
+ // delete zip created temp folder, if exists
2671
+ FileUtils .recursiveDelete (tmpFolder );
2645
2672
}
2646
- editor .statusNotice (_ ("Library added to your libraries. Check \" Import library\" menu" ));
2647
2673
}
2648
2674
}
0 commit comments