private void setupImageFilesRefresher()

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()
                  );
                }
              });
            }
          }
        });
  }