///-------------------------------------------------------------------------------- /// <summary>This method handles selection changes in assembly references.</summary> /// /// <param name="sender">Sender of the event.</param> /// <param name="e">Event arguments.</param> ///-------------------------------------------------------------------------------- void ProjectReference_PropertyChanged(object sender, PropertyChangedEventArgs e) { if (sender is ProjectReferenceViewModel) { // TODO: figure out why IsSelected isn't synching up with two way binding between multi select listbox and ProjectReferenceList // by the time OnUpdate is called, which is the reason for this workaround method ProjectReferenceViewModel changedView = sender as ProjectReferenceViewModel; ProjectReference existingReference = ProjectReferenceList.Find("ReferencedProjectID", changedView.ReferencedProjectID); if (existingReference == null && changedView.IsSelected == true) { ProjectReferenceList.Add(changedView.ProjectReference); } else if (changedView.IsSelected == false) { ProjectReferenceList.Remove(existingReference); } ProjectReferencesModified = true; OnPropertyChanged("ProjectReferenceList"); OnPropertyChanged("EditProject"); EditProject.ResetModified(true); } }
private async Task <string> RenderTableRows(int tabPos, RenderProperties renderProperties, ProjectReferenceList packageReferences, string outputPath, bool createFile) { var txt = string.Empty; var i = 1; var renderCount = renderProperties.Count; var nugetProperties = renderProperties.NugetProperties; var packageProperties = renderProperties.PackageProperties; var projectReferenceProperties = renderProperties.ProjectReferenceProperties; foreach (var packageReference in packageReferences) { RenderLine(ref txt, ++tabPos, i % 2 == 0 ? "<tr style=\"background-color:#e9e9e9\">" : "<tr>"); tabPos++; if (renderCount) { RenderColumnTag(ref txt, tabPos, i.ToString()); } var nugetValues = packageReference.NugetPackage; if (nugetProperties != null && nugetValues != null) { if (nugetProperties.Id) { RenderColumnTag(ref txt, tabPos, nugetValues.Id); } if (nugetProperties.Version) { RenderColumnTag(ref txt, tabPos, nugetValues.Version); } if (nugetProperties.Description) { RenderColumnTag(ref txt, tabPos, nugetValues.Description); } if (nugetProperties.LicenseUrl) { RenderColumnTag(ref txt, tabPos, $"<a href=\"{nugetValues.LicenseUrl}\" target=\"blank\">{nugetValues.LicenseUrl}</a>"); } if (nugetProperties.LicenseType) { var fallbackText = nugetProperties.LicenseUrl ? string.Empty : nugetValues.LicenseUrl; var licenseType = await _licenseMapper.GetLicenseType(nugetValues.LicenseUrl, fallbackText); RenderColumnTag(ref txt, tabPos, $"<a href=\"{nugetValues.LicenseUrl}\" target=\"blank\">{licenseType}</a>"); } if (nugetProperties.Authors) { RenderColumnTag(ref txt, tabPos, nugetValues.Authors); } if (nugetProperties.Owners) { RenderColumnTag(ref txt, tabPos, nugetValues.Owners); } if (nugetProperties.ProjectUrl) { RenderColumnTag(ref txt, tabPos, $"<a href=\"{nugetValues.ProjectUrl}\" target=\"blank\">{nugetValues.ProjectUrl}</a>"); } } var packageValues = packageReference.Package; if (packageProperties != null && packageValues != null) { if (packageProperties.Id) { RenderColumnTag(ref txt, tabPos, packageValues.Id); } if (packageProperties.Version) { RenderColumnTag(ref txt, tabPos, packageValues.Version); } if (packageProperties.TargetFramework) { RenderColumnTag(ref txt, tabPos, packageValues.TargetFramework); } } if (projectReferenceProperties != null) { if (projectReferenceProperties.Name) { RenderColumnTag(ref txt, tabPos, packageReference.Name); } if (projectReferenceProperties.Version) { RenderColumnTag(ref txt, tabPos, packageReference.Version); } if (projectReferenceProperties.Culture) { RenderColumnTag(ref txt, tabPos, packageReference.Culture); } if (projectReferenceProperties.PublicKeyToken) { RenderColumnTag(ref txt, tabPos, packageReference.PublicKeyToken); } if (projectReferenceProperties.ProcessorArchitecture) { RenderColumnTag(ref txt, tabPos, packageReference.ProcessorArchitecture); } if (projectReferenceProperties.Location) { RenderColumnTag(ref txt, tabPos, packageReference.Location); } if (projectReferenceProperties.Private) { RenderColumnTag(ref txt, tabPos, packageReference.Private.ToString()); } if (projectReferenceProperties.ProjectGuid) { RenderColumnTag(ref txt, tabPos, packageReference.ProjectGuid); } if (projectReferenceProperties.LicenseFiles) { RenderColumnTag(ref txt, tabPos, await RenderLicenseLinks(packageReference, outputPath, createFile)); } if (projectReferenceProperties.ParentProjectName) { RenderColumnTag(ref txt, tabPos, packageReference.ParentProjectName); } if (projectReferenceProperties.ParentProjectPath) { RenderColumnTag(ref txt, tabPos, packageReference.ParentProjectPath); } } tabPos--; RenderLine(ref txt, tabPos--, "</tr>"); i++; } return(txt); }