/**
   * Adds specified element into thumbnails queue.
   *
   * @param element element to add
   */
  protected void queueThumbnailLoad(final FileElement element, final boolean disabled) {
    element.setThumbnailQueued(true);
    element.setDisabledThumbnailQueued(disabled);

    executorService.submit(
        new Runnable() {
          @Override
          public void run() {
            final String absolutePath = element.getFile().getAbsolutePath();
            final String ext =
                FileUtils.getFileExtPart(element.getFile().getName(), false).toLowerCase();
            if (fileList.isGenerateThumbnails() && GlobalConstants.IMAGE_FORMATS.contains(ext)) {
              final ImageIcon thumb =
                  element.getEnabledThumbnail() != null
                      ? element.getEnabledThumbnail()
                      : ImageUtils.createThumbnailIcon(absolutePath, thumbSize);
              if (thumb != null) {
                element.setEnabledThumbnail(thumb);
                if (disabled) {
                  element.setDisabledThumbnail(ImageUtils.createDisabledCopy(thumb));
                }
              } else {
                element.setEnabledThumbnail(
                    FileUtils.getStandartFileIcon(element.getFile(), true, true));
                if (disabled) {
                  element.setDisabledThumbnail(
                      FileUtils.getStandartFileIcon(element.getFile(), true, false));
                }
              }
            } else {
              element.setEnabledThumbnail(
                  FileUtils.getStandartFileIcon(element.getFile(), true, true));
              if (disabled) {
                element.setDisabledThumbnail(
                    FileUtils.getStandartFileIcon(element.getFile(), true, false));
              }
            }
            if (disabled != fileList.isEnabled()) {
              fileList.repaint(element);
            }
          }
        });
  }