@Override
  @Nullable
  public Object getData(@NotNull String dataId) {
    if (CommonDataKeys.PROJECT.is(dataId)) {
      return thumbnailView.getProject();
    }
    else if (PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId)) {
      VirtualFile[] selectedFiles = getSelectedFiles();
      return (DataProvider)slowId -> getSlowData(slowId, selectedFiles);
    }
    else if (CommonDataKeys.VIRTUAL_FILE.is(dataId)) {
      VirtualFile[] selectedFiles = getSelectedFiles();
      return selectedFiles.length > 0 ? selectedFiles[0] : null;
    }
    else if (CommonDataKeys.VIRTUAL_FILE_ARRAY.is(dataId)) {
      return getSelectedFiles();
    }
    else if (CommonDataKeys.NAVIGATABLE.is(dataId)) {
      VirtualFile[] selectedFiles = getSelectedFiles();
      return new ThumbnailNavigatable(selectedFiles.length > 0 ? selectedFiles[0] : null);
    }
    else if (PlatformDataKeys.COPY_PROVIDER.is(dataId)) {
      return copyPasteSupport.getCopyProvider();
    }
    else if (PlatformDataKeys.CUT_PROVIDER.is(dataId)) {
      return copyPasteSupport.getCutProvider();
    }
    else if (PlatformDataKeys.PASTE_PROVIDER.is(dataId)) {
      return copyPasteSupport.getPasteProvider();
    }
    else if (PlatformDataKeys.DELETE_ELEMENT_PROVIDER.is(dataId)) {
      return deleteProvider;
    }
    else if (CommonDataKeys.NAVIGATABLE_ARRAY.is(dataId)) {
      VirtualFile[] selectedFiles = getSelectedFiles();
      Set<Navigatable> navigatables = new HashSet<>(selectedFiles.length);
      for (VirtualFile selectedFile : selectedFiles) {
        if (!selectedFile.isDirectory()) {
          navigatables.add(new ThumbnailNavigatable(selectedFile));
        }
      }
      return navigatables.toArray(EMPTY_NAVIGATABLE_ARRAY);
    }
    else if (ThumbnailView.DATA_KEY.is(dataId)) {
      return thumbnailView;
    }
    else if (ImageComponentDecorator.DATA_KEY.is(dataId)) {
      return thumbnailView;
    }

    return null;
  }
@Override
  @Nullable
  public Object getData(@NotNull String dataId)