Skip to content

Commit 01dd9d0

Browse files
committed
GH-59 File | Load now provides All Supported Files filter, selected by default
1 parent e21126b commit 01dd9d0

File tree

2 files changed

+34
-10
lines changed

2 files changed

+34
-10
lines changed

visualvm/core/src/com/sun/tools/visualvm/core/ui/actions/Bundle.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ LBL_Open=&Open
4343

4444
DESCR_Open=Open
4545

46+
LBL_All_Snapshots=All Supported Files
47+
4648
LBL_Remove=&Remove
4749

4850
DESCR_Remove=Remove

visualvm/core/src/com/sun/tools/visualvm/core/ui/actions/LoadSnapshotAction.java

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public void actionPerformed(ActionEvent e) {
7272
List<SnapshotCategory> categories = RegisteredSnapshotCategories.sharedInstance().getOpenSnapshotCategories();
7373
if (categories.isEmpty()) return; // TODO: should display a notification dialog
7474

75-
List<FileFilter> fileFilters = new ArrayList();
75+
final List<FileFilter> fileFilters = new ArrayList();
7676
for (SnapshotCategory category : categories) fileFilters.add(category.getFileFilter());
7777

7878
JFileChooser chooser = new JFileChooser() {
@@ -86,19 +86,33 @@ public void setSelectedFile(File file) {
8686

8787
// grab the ui and set the filename
8888
BasicFileChooserUI ui = (BasicFileChooserUI) getUI();
89-
ui.setFileName(file == null ? "" : file.getName());
89+
ui.setFileName(file == null ? "" : file.getName()); // NOI18N
9090
}
9191
};
9292
chooser.setDialogTitle(NbBundle.getMessage(LoadSnapshotAction.class, "LBL_Load")); // NOI18N
9393
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;
95109
for (int i = 0; i < fileFilters.size(); i++) {
96110
FileFilter fileFilter = fileFilters.get(i);
97111
chooser.addChoosableFileFilter(fileFilter);
98112
if (fileFilter.getDescription().equals(lastFilter)) filterIndex = i;
99113
}
100114
if (lastFile != null) chooser.setSelectedFile(new File(lastFile));
101-
chooser.setFileFilter(fileFilters.get(filterIndex));
115+
chooser.setFileFilter(filterIndex == -1 ? allFilesFilter : fileFilters.get(filterIndex));
102116
if (chooser.showOpenDialog(WindowManager.getDefault().getMainWindow()) == JFileChooser.APPROVE_OPTION) {
103117
File selectedFile = chooser.getSelectedFile();
104118
if (selectedFile == null || !selectedFile.exists()) {
@@ -108,16 +122,24 @@ public void setSelectedFile(File file) {
108122
NotifyDescriptor.ERROR_MESSAGE));
109123
} else {
110124
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)) {
112134
lastFile = selectedFile.getAbsolutePath();
113135
lastFilter = fileFilter.getDescription();
114136
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;
120138
}
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));
121143
}
122144
}
123145
}

0 commit comments

Comments
 (0)