private static bool SelectTarget(PackageContentItem model, string target) { bool found = false; PackageFileContentItem file = model as PackageFileContentItem; PackageFolderContentItem folder = model as PackageFolderContentItem; if (file != null && file.ID == target) { file.IsSelected = true; found = true; } else if (folder != null) { foreach (PackageContentItem child in folder.Contents) { if (SelectTarget(child, target)) { found = true; break; } } } return(found); }
/// <summary> /// If the chosen item is a Package or Folder then the Select Button is enabled, and the correct /// path is set. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.Windows.RoutedPropertyChangedEventArgs<System.Object>"/> instance containing the event data.</param> private void PkgFolderChooser_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { bool enableButton = false; PackageFolderContentItem folder = PackageFileChooser.SelectedItem as PackageFolderContentItem; if (folder != null && !(folder is PackageViewModel)) { Stack <string> subDirs = new Stack <string>(); subDirs.Push(folder.Label); PackageContentItem parent = folder.Parent; while (parent.Parent != null) { subDirs.Push(parent.Label); parent = parent.Parent; } PackageViewModel package = parent as PackageViewModel; if (package != null) { string subDirectory = ""; while (subDirs.Count > 0) { subDirectory = System.IO.Path.Combine(subDirectory, subDirs.Pop()); } if (Directory.Exists(System.IO.Path.Combine(package.Package.Location, subDirectory))) { TraceLabSDK.PackageSystem.IPackageReference reference = new TraceLab.Core.PackageSystem.PackageReference(package.Package); TraceLabDirectoryPath path = new TraceLabDirectoryPath(); path.Init(reference, subDirectory); Path = path; enableButton = true; } } } else if (folder != null && folder is PackageViewModel) { PackageViewModel package = folder as PackageViewModel; if (Directory.Exists(package.Package.Location)) { TraceLabSDK.PackageSystem.IPackageReference reference = new TraceLab.Core.PackageSystem.PackageReference(package.Package); TraceLabDirectoryPath path = new TraceLabDirectoryPath(); path.Init(reference, "."); Path = path; enableButton = true; } } SelectButton.IsEnabled = enableButton; }