2
2
3
3
import javafx .fxml .FXML ;
4
4
import javafx .fxml .FXMLLoader ;
5
- import javafx .scene .Parent ;
6
5
import javafx .scene .Scene ;
7
6
import javafx .scene .control .*;
8
7
import javafx .scene .control .cell .MapValueFactory ;
@@ -31,10 +30,11 @@ public class CsvViewerController extends AbstractController {
31
30
@ FXML
32
31
public void openCsvMenuClick () {
33
32
FileChooser fileChooser = createFileChooser ();
34
- File csvFile = fileChooser .showOpenDialog (window );
33
+ List < File > csvFiles = fileChooser .showOpenMultipleDialog (window );
35
34
36
- if (csvFile != null ) {
37
- openCsvTab (csvFile );
35
+ if (csvFiles != null ) {
36
+ csvFiles .stream ()
37
+ .forEach (this ::openCsvTab );
38
38
}
39
39
}
40
40
@@ -118,7 +118,7 @@ private Tab createCsvTab(File csvFile) {
118
118
119
119
return tab ;
120
120
} catch (IOException e ) {
121
- reportError ( e );
121
+ reportIOException ( e , csvFile );
122
122
return null ;
123
123
}
124
124
}
@@ -144,11 +144,13 @@ private void setupCellColumn(TableColumn column) {
144
144
column .setMinWidth (100.0 );
145
145
}
146
146
147
- private void reportError ( Exception e ) {
147
+ private void reportIOException ( IOException e , File f ) {
148
148
Alert alert = new Alert (AlertType .ERROR );
149
149
alert .setTitle ("CSV Viewer Error!" );
150
- alert .setHeaderText (e .getClass ().getSimpleName ());
151
- alert .setContentText ("Failed to open file!\n CSV format might be broken." );
150
+ alert .setHeaderText ("Failed to Open File!" );
151
+ alert .setContentText (String .format ("Failed to open file: %s\n File might be corrupted or not a valid CSV." , f .getName ()));
152
+
153
+ e .printStackTrace (System .err );
152
154
alert .showAndWait ();
153
155
}
154
156
}
0 commit comments