예제 #1
0
  private void updateSelectedFiles() {
    assertFxApplicationThread();

    if (updatingSelectedFiles) return;

    updatingSelectedFiles = true;
    try {
      final ObservableList<TreeItem<FileTreeItem<?>>> selectedItems =
          treeTableView.getSelectionModel().getSelectedItems();
      final Set<File> newSelectedFiles = new HashSet<File>(selectedItems.size());
      for (final TreeItem<FileTreeItem<?>> selectedItem : selectedItems) {
        final FileTreeItem<?> fileTreeItem =
            selectedItem == null
                ? null
                : selectedItem.getValue(); // strange but true: it can be null
        if (fileTreeItem instanceof FileFileTreeItem)
          newSelectedFiles.add(((FileFileTreeItem) fileTreeItem).getFile());
      }
      selectedFiles.retainAll(newSelectedFiles);
      selectedFiles.addAll(newSelectedFiles);
    } finally {
      updatingSelectedFiles = false;
    }
  }