@@ -72,7 +72,7 @@ public void actionPerformed(ActionEvent e) {
72
72
List <SnapshotCategory > categories = RegisteredSnapshotCategories .sharedInstance ().getOpenSnapshotCategories ();
73
73
if (categories .isEmpty ()) return ; // TODO: should display a notification dialog
74
74
75
- List <FileFilter > fileFilters = new ArrayList ();
75
+ final List <FileFilter > fileFilters = new ArrayList ();
76
76
for (SnapshotCategory category : categories ) fileFilters .add (category .getFileFilter ());
77
77
78
78
JFileChooser chooser = new JFileChooser () {
@@ -86,19 +86,33 @@ public void setSelectedFile(File file) {
86
86
87
87
// grab the ui and set the filename
88
88
BasicFileChooserUI ui = (BasicFileChooserUI ) getUI ();
89
- ui .setFileName (file == null ? "" : file .getName ());
89
+ ui .setFileName (file == null ? "" : file .getName ()); // NOI18N
90
90
}
91
91
};
92
92
chooser .setDialogTitle (NbBundle .getMessage (LoadSnapshotAction .class , "LBL_Load" )); // NOI18N
93
93
chooser .setAcceptAllFileFilterUsed (false );
94
- int filterIndex = 0 ;
94
+ FileFilter allFilesFilter = new FileFilter () {
95
+ @ Override
96
+ public boolean accept (File f ) {
97
+ for (FileFilter ff : fileFilters )
98
+ if (ff .accept (f )) return true ;
99
+ return false ;
100
+ }
101
+ @ Override
102
+ public String getDescription () {
103
+ return NbBundle .getMessage (LoadSnapshotAction .class , "LBL_All_Snapshots" ); // NOI18N
104
+ }
105
+
106
+ };
107
+ chooser .addChoosableFileFilter (allFilesFilter );
108
+ int filterIndex = -1 ;
95
109
for (int i = 0 ; i < fileFilters .size (); i ++) {
96
110
FileFilter fileFilter = fileFilters .get (i );
97
111
chooser .addChoosableFileFilter (fileFilter );
98
112
if (fileFilter .getDescription ().equals (lastFilter )) filterIndex = i ;
99
113
}
100
114
if (lastFile != null ) chooser .setSelectedFile (new File (lastFile ));
101
- chooser .setFileFilter (fileFilters .get (filterIndex ));
115
+ chooser .setFileFilter (filterIndex == - 1 ? allFilesFilter : fileFilters .get (filterIndex ));
102
116
if (chooser .showOpenDialog (WindowManager .getDefault ().getMainWindow ()) == JFileChooser .APPROVE_OPTION ) {
103
117
File selectedFile = chooser .getSelectedFile ();
104
118
if (selectedFile == null || !selectedFile .exists ()) {
@@ -108,16 +122,24 @@ public void setSelectedFile(File file) {
108
122
NotifyDescriptor .ERROR_MESSAGE ));
109
123
} else {
110
124
FileFilter fileFilter = chooser .getFileFilter ();
111
- if (fileFilter .accept (selectedFile )) {
125
+ if (fileFilter == allFilesFilter ) {
126
+ for (FileFilter ff : fileFilters )
127
+ if (ff .accept (selectedFile )) {
128
+ lastFile = selectedFile .getAbsolutePath ();
129
+ lastFilter = null ;
130
+ categories .get (fileFilters .indexOf (ff )).openSnapshot (selectedFile );
131
+ return ;
132
+ }
133
+ } else if (fileFilter .accept (selectedFile )) {
112
134
lastFile = selectedFile .getAbsolutePath ();
113
135
lastFilter = fileFilter .getDescription ();
114
136
categories .get (fileFilters .indexOf (fileFilter )).openSnapshot (selectedFile );
115
- } else {
116
- DialogDisplayer .getDefault ().notifyLater (new NotifyDescriptor .Message (
117
- NbBundle .getMessage (LoadSnapshotAction .class ,
118
- "MSG_Selected_file_does_not_match_snapshot_type" ), // NOI18N
119
- NotifyDescriptor .ERROR_MESSAGE ));
137
+ return ;
120
138
}
139
+ DialogDisplayer .getDefault ().notifyLater (new NotifyDescriptor .Message (
140
+ NbBundle .getMessage (LoadSnapshotAction .class ,
141
+ "MSG_Selected_file_does_not_match_snapshot_type" ), // NOI18N
142
+ NotifyDescriptor .ERROR_MESSAGE ));
121
143
}
122
144
}
123
145
}
0 commit comments