internal void RefreshUsedInFeatureSetMessage(IEnumerable <IPackageVersion> featureSets) { usedInFeatureSetMessageContainer.Clear(); var featureSetsCount = featureSets?.Count() ?? 0; if (featureSetsCount > 0) { var element = new VisualElement { name = "usedInFeatureSetIconAndMessageContainer" }; var icon = new VisualElement { name = "featureSetIcon" }; element.Add(icon); var message = new Label { name = "usedInFeatureSetMessageLabel" }; message.text = string.Format(L10n.Tr("This {0} is installed as part of "), m_Package.GetDescriptor()); element.Add(message); usedInFeatureSetMessageContainer.Add(element); usedInFeatureSetMessageContainer.Add(CreateLink(featureSets.FirstOrDefault())); if (featureSetsCount > 2) { var remaining = featureSets.Skip(1); remaining.Take(featureSetsCount - 2).Aggregate(usedInFeatureSetMessageContainer, (current, next) => { var comma = new Label(", "); comma.style.marginLeft = 0; comma.style.paddingLeft = 0; current.Add(comma); current.Add(CreateLink(next)); return(current); }); } if (featureSetsCount > 1) { var and = new Label(L10n.Tr(" and ")); and.style.marginLeft = 0; and.style.paddingLeft = 0; usedInFeatureSetMessageContainer.Add(and); usedInFeatureSetMessageContainer.Add(CreateLink(featureSets.LastOrDefault())); usedInFeatureSetMessageContainer.Add(new Label(L10n.Tr(" features."))); } else { usedInFeatureSetMessageContainer.Add(new Label(L10n.Tr(" feature."))); } } }
public static void HandleInvalidOrUnreachableOnlineUrl(string onlineUrl, string offlineDocPath, string docType, string analyticsEvent, IPackageVersion version, IPackage package, ApplicationProxy applicationProxy) { if (!string.IsNullOrEmpty(offlineDocPath)) { applicationProxy.RevealInFinder(offlineDocPath); PackageManagerWindowAnalytics.SendEvent($"{analyticsEvent}OnDisk", version?.uniqueId); return; } if (!string.IsNullOrEmpty(onlineUrl)) { // With the current `UpmPackageDocs.GetDocumentationUrl` implementation, // We'll get invalid url links for non-unity packages on unity3d.com // We want to avoiding opening these kinds of links to avoid confusion. if (!UpmClient.IsUnityUrl(onlineUrl) || package.Is(PackageType.Unity) || version.packageUniqueId.StartsWith("com.unity.")) { applicationProxy.OpenURL(onlineUrl); PackageManagerWindowAnalytics.SendEvent($"{analyticsEvent}UnreachableOrInvalidUrl", version?.uniqueId); return; } } PackageManagerWindowAnalytics.SendEvent($"{analyticsEvent}NotFound", version?.uniqueId); Debug.LogError(string.Format(L10n.Tr("[Package Manager Window] Unable to find valid {0} for this {1}."), docType, package.GetDescriptor())); }