private void FillWithFiles(AddExistingFileViewModel viewModel)
        {
            var contentFolder = GlueState.Self.ContentDirectory;

            var files = FileManager.GetAllFilesInDirectory(contentFolder, null, int.MaxValue);

            foreach (var file in files)
            {
                // make this thing relative:
                var relativeFile = FileManager.MakeRelative(file, contentFolder);

                // Feb 22, 2019
                // Initially I thought
                // I'd only show files that
                // aren't already added to the
                // current element, but files can
                // be added multiple times to an element
                // using different converters. Even though
                // it's rare, we want to still support it so
                // don't filter out files that are already added.

                viewModel.UnfilteredFileList.Add(relativeFile);
            }
            viewModel.ContentFolder = contentFolder;
            viewModel.RefreshFilteredList();
        }
        public void AddExistingFileClick()
        {
            var viewModel = new AddExistingFileViewModel();

            FillWithFiles(viewModel);


            var window = new AddExistingFileWindow();

            window.DataContext = viewModel;

            var result = window.ShowDialog();

            if (result == true)
            {
                var    element             = GlueState.Self.CurrentElement;
                string directoryOfTreeNode = EditorLogic.CurrentTreeNode.GetRelativePath();
                bool   userCancelled       = false;

                foreach (var file in viewModel.Files)
                {
                    TaskManager.Self.AddSync(() =>
                    {
                        AddSingleFile(file, ref userCancelled, element, directoryOfTreeNode);
                    }, $"Adding file {file}");
                }
            }
        }