void (@NotNull AnActionEvent e) { final VirtualFile[] files = FileChooser.chooseFiles(new FileChooserDescriptor(true, false, false, false, false, true) { @Override public boolean isFileSelectable(@Nullable VirtualFile file) { return file != null && getCoverageRunner(file) != null; } }, myProject, null); if (files.length > 0) { //ensure timestamp in vfs is updated VfsUtil.markDirtyAndRefresh(false, false, false, files); for (VirtualFile file : files) { final CoverageRunner coverageRunner = getCoverageRunner(file); if (coverageRunner == null) { Messages.showErrorDialog(myProject, CoverageBundle.message("no.coverage.runner.available.for", file.getName()), CommonBundle.getErrorTitle()); continue; } CoverageSuite coverageSuite = myCoverageManager.addExternalCoverageSuite(file.getName(), file.getTimeStamp(), coverageRunner, new DefaultCoverageFileProvider(file.getPath())); List<CoverageSuite> currentlySelected = collectSelectedSuites(); currentlySelected.add(coverageSuite); initTree(); selectSuites(currentlySelected); ((DefaultTreeModel)mySuitesTree.getModel()).reload(); TreeUtil.expandAll(mySuitesTree); } } }