void onChange_RepoUrl(string url)
        {
            var valid = !string.IsNullOrEmpty(url);

            findVersionsButton.SetEnabled(valid);

            EnableVersionContainer(false);
            EnablePackageContainer(false);

            findVersionsError.visible = false;
            currentVersion            = null;
        }
        internal static PackageInfo ToPackageVersion(this AvailableVersion self, PackageInfo baseInfo)
        {
            var newPInfo = JsonUtility.FromJson <PackageInfo>(JsonUtility.ToJson(baseInfo));

            newPInfo.Version = SemVersion.Parse(self.refNameVersion);
#if UNITY_2019_2_OR_NEWER
            newPInfo.IsInstalled = false;
#else
            newPInfo.IsCurrent = false;
#endif
            newPInfo.Info      = baseInfo.Info;
            newPInfo.PackageId = string.Format("{0}@{1}", newPInfo.Name, self.refNameVersion);
            return(newPInfo);
        }
        void onClick_SelectVersions()
        {
            var menu = new GenericMenu();

            GenericMenu.MenuFunction2 callback = (v) =>
            {
                var version = v as AvailableVersion;
                currentVersion           = version;
                versionSelectButton.text = version.refNameText;
                EnablePackageContainer(true, version.packageName);
            };

            var repoUrl = GetRepoUrl(repoUrlText.value, subDirText.value);

            foreach (var version in AvailableVersions.GetVersions(repoUrl: repoUrl).OrderByDescending(v => v.version))
            {
                var text = version.refNameText;
                menu.AddItem(new GUIContent(text), versionSelectButton.text == text, callback, version);
            }

            menu.DropDown(versionSelectButton.worldBound);
        }