in code_samples/project_view_pane/src/main/java/org/intellij/sdk/view/pane/ImagesProjectNode.java [92:126]
private void setupImageFilesRefresher(@NotNull Project project, @NotNull Disposable parentDisposable) {
project.getMessageBus().connect(parentDisposable)
.subscribe(VirtualFileManager.VFS_CHANGES, new BulkFileListener() {
@Override
public void after(@NotNull List<? extends @NotNull VFileEvent> events) {
boolean hasAnyImageUpdate = false;
FileIndex fileIndex = ProjectRootManager.getInstance(project).getFileIndex();
for (VFileEvent event : events) {
VirtualFile file = event.getFile();
if (file == null || !fileIndex.isInContent(file)) {
continue;
}
String extension = file.getExtension();
if (extension != null && SUPPORTED_IMAGE_EXTENSIONS.contains(extension)) {
hasAnyImageUpdate = true;
break;
}
}
if (hasAnyImageUpdate) {
updateQueue.queue(new Update("UpdateImages") {
public void run() {
getImagesFiles(project).clear();
scanImages(project);
ApplicationManager.getApplication().invokeLater(() ->
ProjectView.getInstance(project)
.getProjectViewPaneById(ImagesProjectViewPane.ID)
.updateFromRoot(true),
project.getDisposed()
);
}
});
}
}
});
}