Exemple #1
0
        internal static void SelectPackageAndFilter(string packageIdOrDisplayName, PackageFilterTab?filterTab = null, bool refresh = false, string searchText = "")
        {
            instance         = GetWindow <PackageManagerWindow>(typeof(SceneView));
            instance.minSize = new Vector2(700, 250);
            if (!string.IsNullOrEmpty(packageIdOrDisplayName) || filterTab != null)
            {
                if (filterTab == null)
                {
                    IPackageVersion version;
                    IPackage        package;
                    PackageDatabase.instance.GetPackageAndVersionByIdOrName(packageIdOrDisplayName, out package, out version);
                    filterTab = PageManager.instance.FindTab(package, version);
                }

                instance.m_FilterToSelectAfterLoad = filterTab;
                instance.m_PackageToSelectOnLoaded = packageIdOrDisplayName;
                instance.packageManagerToolbar.SetCurrentSearch(searchText);

                if (refresh || PackageDatabase.instance.isEmpty)
                {
                    instance.DelayRefresh((PackageFilterTab)filterTab);
                }
                else
                {
                    instance.SelectPackageAndFilter();
                }
            }
            instance.Show();
        }
        private void SelectPackageAndFilter(string packageIdOrDisplayName, PackageFilterTab?filterTab = null, bool refresh = false, string searchText = "")
        {
            if (!string.IsNullOrEmpty(packageIdOrDisplayName) || filterTab != null)
            {
                if (filterTab == null)
                {
                    IPackageVersion version;
                    IPackage        package;
                    m_PackageDatabase.GetPackageAndVersionByIdOrName(packageIdOrDisplayName, out package, out version);
                    filterTab = m_PageManager.FindTab(package, version);
                }

                m_FilterToSelectAfterLoad = filterTab;
                m_PackageToSelectOnLoaded = packageIdOrDisplayName;
                packageManagerToolbar.SetCurrentSearch(searchText);

                if (refresh || m_PackageDatabase.isEmpty)
                {
                    DelayRefresh((PackageFilterTab)filterTab);
                }
                else
                {
                    SelectPackageAndFilter();
                }
            }
            Show();
        }
 internal static void SelectPackageAndFilterStatic(string packageToSelect, PackageFilterTab?filterTab = null, bool refresh = false, string searchText = "")
 {
     instance         = GetWindow <PackageManagerWindow>();
     instance.minSize = new Vector2(800, 250);
     instance.m_Root.SelectPackageAndFilter(packageToSelect, filterTab, refresh, searchText);
     instance.Show();
 }
Exemple #4
0
        internal static void SelectPackageAndFilter(string packageIdOrDisplayName, PackageFilterTab?filterTab = null, bool refresh = false, string searchText = "")
        {
            instance         = GetWindow <PackageManagerWindow>();
            instance.minSize = new Vector2(700, 250);
            if (!string.IsNullOrEmpty(packageIdOrDisplayName) || filterTab != null)
            {
                if (filterTab == null)
                {
                    filterTab = PageManager.instance.FindTab(packageIdOrDisplayName);
                }

                instance.m_FilterToSelectAfterLoad = filterTab;
                instance.m_PackageToSelectOnLoaded = packageIdOrDisplayName;
                instance.packageManagerToolbar.SetCurrentSearch(searchText);

                if (refresh || PackageDatabase.instance.isEmpty)
                {
                    PageManager.instance.Refresh(filterTab);
                }
                else
                {
                    instance.SelectPackageAndFilter();
                }
            }
            instance.Show();
        }
        private void SelectPackageAndFilter()
        {
            if (m_FilterToSelectAfterLoad != null)
            {
                PackageFiltering.instance.currentFilterTab = (PackageFilterTab)m_FilterToSelectAfterLoad;
            }

            if (string.IsNullOrEmpty(m_PackageToSelectOnLoaded))
            {
                m_FilterToSelectAfterLoad = null;
            }
            else
            {
                var package = PackageDatabase.instance.GetPackage(m_PackageToSelectOnLoaded)
                              ?? PackageDatabase.instance.GetPackageByDisplayName(m_PackageToSelectOnLoaded);

                if (m_FilterToSelectAfterLoad == PackageFilterTab.AssetStore && PackageFiltering.instance.currentFilterTab == PackageFilterTab.AssetStore)
                {
                    if (package == null || package is PlaceholderPackage)
                    {
                        PageManager.instance.Fetch(m_PackageToSelectOnLoaded);
                    }
                    else
                    {
                        PageManager.instance.GetCurrentPage().Load(package);
                    }

                    m_FilterToSelectAfterLoad = null;
                    m_PackageToSelectOnLoaded = null;
                    return;
                }

                if (package != null)
                {
                    if (m_FilterToSelectAfterLoad == null)
                    {
                        var newFilterTab = PackageFilterTab.All;
                        if (package.versions.Any(v => v.HasTag(PackageTag.BuiltIn)))
                        {
                            newFilterTab = PackageFilterTab.BuiltIn;
                        }
                        else
                        {
                            var installedVersion = package.versions.installed;
                            if (installedVersion != null && installedVersion.isDirectDependency)
                            {
                                newFilterTab = PackageFilterTab.InProject;
                            }
                        }
                        PackageFiltering.instance.currentFilterTab = newFilterTab;
                    }

                    PageManager.instance.SetSelected(package);

                    m_FilterToSelectAfterLoad = null;
                    m_PackageToSelectOnLoaded = null;
                }
            }
        }
        private void SelectPackageAndFilter()
        {
            IPackageVersion version = null;
            IPackage        package = null;

            if (!string.IsNullOrEmpty(m_PackageToSelectOnLoaded))
            {
                var packageUniqueId = m_PackageToSelectOnLoaded.Split('@')[0];

                PackageDatabase.instance.GetPackageAndVersion(packageUniqueId, m_PackageToSelectOnLoaded, out package, out version);
                if (package == null)
                {
                    package = PackageDatabase.instance.GetPackage(m_PackageToSelectOnLoaded) ?? PackageDatabase.instance.GetPackageByDisplayName(m_PackageToSelectOnLoaded);
                }
            }

            if (m_FilterToSelectAfterLoad == PackageFilterTab.AssetStore)
            {
                PackageFiltering.instance.currentFilterTab = PackageFilterTab.AssetStore;

                if (!string.IsNullOrEmpty(m_PackageToSelectOnLoaded))
                {
                    if (package == null || package is PlaceholderPackage)
                    {
                        PageManager.instance.Fetch(m_PackageToSelectOnLoaded);
                    }
                    else
                    {
                        PageManager.instance.GetPage(PackageFilterTab.AssetStore).Load(package, version);
                    }
                }

                m_FilterToSelectAfterLoad = null;
                m_PackageToSelectOnLoaded = null;
                return;
            }

            if (package != null || m_FilterToSelectAfterLoad != null)
            {
                var tab = m_FilterToSelectAfterLoad ?? PackageFilterTab.All;
                if (version != null)
                {
                    if (!PackageManagerPrefs.instance.showPreviewPackages && version.HasTag(PackageTag.Preview))
                    {
                        PackageManagerPrefs.instance.showPreviewPackages = true;
                    }
                }

                PackageFiltering.instance.currentFilterTab = tab;
                if (!string.IsNullOrEmpty(m_PackageToSelectOnLoaded))
                {
                    PageManager.instance.GetPage(tab).SetSelected(package, version);
                    packageList.OnFocus();
                }

                m_FilterToSelectAfterLoad = null;
                m_PackageToSelectOnLoaded = null;
            }
        }
Exemple #7
0
        private IPage GetPageFromTab(PackageFilterTab?tab = null)
        {
            var filterTab = tab ?? m_PackageFiltering.currentFilterTab;

            IPage page;

            return(m_Pages.TryGetValue(filterTab, out page) ? page : CreatePageFromTab(tab));
        }
            public bool HasFetchedPageForFilterTab(PackageFilterTab?tab = null)
            {
                var filterTab = tab ?? PackageFiltering.instance.currentFilterTab;

                if (!m_Pages.ContainsKey(filterTab))
                {
                    return(false);
                }

                return(m_Pages[filterTab].isAlreadyFetched);
            }
        private void SelectPackageAndFilter()
        {
            IPackageVersion version = null;
            IPackage        package = null;

            if (!string.IsNullOrEmpty(m_PackageToSelectOnLoaded))
            {
                m_PackageDatabase.GetPackageAndVersionByIdOrName(m_PackageToSelectOnLoaded, out package, out version);
            }

            if (m_FilterToSelectAfterLoad == PackageFilterTab.AssetStore)
            {
                m_PackageFiltering.currentFilterTab = PackageFilterTab.AssetStore;

                if (!string.IsNullOrEmpty(m_PackageToSelectOnLoaded))
                {
                    if (package == null || package is PlaceholderPackage)
                    {
                        m_PageManager.Fetch(m_PackageToSelectOnLoaded);
                    }
                    else
                    {
                        m_PageManager.GetPage(PackageFilterTab.AssetStore).Load(package, version);
                    }
                }

                m_FilterToSelectAfterLoad = null;
                m_PackageToSelectOnLoaded = null;
                return;
            }

            if (package != null || m_FilterToSelectAfterLoad != null)
            {
                var tab = m_FilterToSelectAfterLoad ?? PackageFilterTab.All;
                if (version != null)
                {
                    if (!m_PackageManagerPrefs.showPreviewPackages && version.HasTag(PackageTag.Preview))
                    {
                        m_PackageManagerPrefs.showPreviewPackages = true;
                    }
                }

                m_PackageFiltering.currentFilterTab = tab;
                if (!string.IsNullOrEmpty(m_PackageToSelectOnLoaded))
                {
                    m_PageManager.SetSelected(package, version, true);
                    packageList.OnFocus();
                }

                m_FilterToSelectAfterLoad = null;
                m_PackageToSelectOnLoaded = null;
            }
        }
Exemple #10
0
            private Page GetPageFromFilterTab(PackageFilterTab?tab = null)
            {
                var filterTab = tab ?? PackageFiltering.instance.currentFilterTab;

                Page page;

                if (m_Pages.TryGetValue(filterTab, out page))
                {
                    return(page);
                }

                page = new Page(filterTab);
                m_Pages[filterTab] = page;
                RegisterPageEvents(page);
                return(page);
            }
Exemple #11
0
        public void SelectPackageAndFilter(string packageIdOrDisplayName, PackageFilterTab?filterTab = null, bool refresh = false, string searchText = "")
        {
            if (!string.IsNullOrEmpty(packageIdOrDisplayName) || filterTab != null)
            {
                if (filterTab == null)
                {
                    m_PackageDatabase.GetPackageAndVersionByIdOrName(packageIdOrDisplayName, out var package, out var version);
                    if (package != null)
                    {
                        filterTab = m_PageManager.FindTab(package, version);
                    }
                    else
                    {
                        var packageIdOrDisplayNameSplit = packageIdOrDisplayName.Split('@');
                        var versionString = packageIdOrDisplayNameSplit.Length == 2 ? packageIdOrDisplayNameSplit[1] : string.Empty;

                        // Package is not found in PackageDatabase but we can determine if it's a preview package or not with it's version string.
                        SemVersionParser.TryParse(versionString, out var semVersion);
                        if (!m_SettingsProxy.enablePreviewPackages && semVersion.HasValue && (semVersion.Value.Major == 0 || semVersion.Value.Prerelease.StartsWith("preview")))
                        {
                            Debug.Log("You must check \"Enable Preview Packages\" in Project Settings > Package Manager in order to see this package.");
                            filterTab = m_PackageFiltering.currentFilterTab;
                            packageIdOrDisplayName = null;
                        }
                        else
                        {
                            filterTab = PackageFilterTab.All;
                        }
                    }
                }

                m_FilterToSelectAfterLoad = filterTab;
                m_PackageToSelectOnLoaded = packageIdOrDisplayName;
                packageManagerToolbar.SetCurrentSearch(searchText);

                if (refresh || m_PackageDatabase.isEmpty)
                {
                    DelayRefresh((PackageFilterTab)filterTab);
                }
                else
                {
                    SelectPackageAndFilter();
                }
            }
        }
Exemple #12
0
        internal static void SelectPackageAndFilter(string packageIdOrDisplayName, PackageFilterTab?filterTab = null, bool refresh = false)
        {
            var window = GetWindow <PackageManagerWindow>(false, "Packages", true);

            window.minSize = new Vector2(700, 250);
            if (!string.IsNullOrEmpty(packageIdOrDisplayName))
            {
                window.m_PackageToSelectOnLoaded = packageIdOrDisplayName;
                window.m_FilterToSelectAfterLoad = filterTab;
                if (!PackageDatabase.instance.isEmpty && !refresh)
                {
                    window.SelectPackageAndFilter();
                }
                else if (refresh)
                {
                    window.RefreshDatabase();
                }
            }
            window.Show();
        }
Exemple #13
0
 internal static void SelectPackageAndFilter(string packageIdOrDisplayName, PackageFilterTab?filterTab = null, bool refresh = false, string searchText = "")
 {
     s_Window         = GetWindow <PackageManagerWindow>();
     s_Window.minSize = new Vector2(700, 250);
     if (!string.IsNullOrEmpty(packageIdOrDisplayName))
     {
         s_Window.packageManagerToolbar.SetCurrentSearch(searchText);
         s_Window.m_PackageToSelectOnLoaded = packageIdOrDisplayName;
         s_Window.m_FilterToSelectAfterLoad = filterTab;
         if (refresh)
         {
             PageManager.instance.Refresh(filterTab ?? PackageFilterTab.All);
         }
         else if (!PackageDatabase.instance.isEmpty)
         {
             s_Window.SelectPackageAndFilter();
         }
     }
     s_Window.Show();
 }
Exemple #14
0
        private void SelectPackageAndFilter()
        {
            packageManagerToolbar.SetEnabled(true);

            if (m_FilterToSelectAfterLoad != null)
            {
                PackageFiltering.instance.currentFilterTab = (PackageFilterTab)m_FilterToSelectAfterLoad;
            }

            if (!string.IsNullOrEmpty(m_PackageToSelectOnLoaded))
            {
                var package = PackageDatabase.instance.GetPackage(m_PackageToSelectOnLoaded)
                              ?? PackageDatabase.instance.GetPackageByDisplayName(m_PackageToSelectOnLoaded);
                if (package != null)
                {
                    if (m_FilterToSelectAfterLoad == null)
                    {
                        var newFilterTab = PackageFilterTab.All;
                        if (package.versions.Any(v => v.HasTag(PackageTag.BuiltIn)))
                        {
                            newFilterTab = PackageFilterTab.Modules;
                        }
                        else
                        {
                            var installdVersion = package.installedVersion;
                            if (installdVersion != null && installdVersion.isDirectDependency)
                            {
                                newFilterTab = PackageFilterTab.Local;
                            }
                        }
                        PackageFiltering.instance.currentFilterTab = newFilterTab;
                    }

                    SelectionManager.instance.SetSelected(package);
                }
            }

            m_FilterToSelectAfterLoad = null;
            m_PackageToSelectOnLoaded = null;
        }
Exemple #15
0
        public void SelectFilterSubPage(string filterTabOrSubPage = "")
        {
            if (!string.IsNullOrEmpty(filterTabOrSubPage))
            {
                var split = filterTabOrSubPage.Split('/');
                if (PackageFilterTab.TryParse(split[0], true, out PackageFilterTab tab))
                {
                    var subPage = split.Length > 1 ? split[1] : string.Empty;
                    m_PackageToSelectOnLoaded  = null;
                    m_FilterToSelectAfterLoad  = tab;
                    m_SubPageToSelectAfterLoad = subPage;

                    if (m_PackageDatabase.isEmpty)
                    {
                        DelayRefresh(tab, subPage);
                    }
                    else
                    {
                        SelectPackageAndFilter();
                    }
                }
            }
        }
Exemple #16
0
        public virtual bool IsInitialFetchingDone(PackageFilterTab?tab = null)
        {
            var filterTab = tab ?? m_PackageFiltering.currentFilterTab;

            return(IsInitialFetchingDone(GetRefreshOptionsByTab(filterTab)));
        }
Exemple #17
0
        public virtual bool IsRefreshInProgress(PackageFilterTab?tab = null)
        {
            var filterTab = tab ?? m_PackageFiltering.currentFilterTab;

            return(IsRefreshInProgress(GetRefreshOptionsByTab(filterTab)));
        }
Exemple #18
0
        public virtual UIError GetRefreshError(PackageFilterTab?tab = null)
        {
            var filterTab = tab ?? m_PackageFiltering.currentFilterTab;

            return(GetRefreshError(GetRefreshOptionsByTab(filterTab)));
        }
Exemple #19
0
        public virtual long GetRefreshTimestamp(PackageFilterTab?tab = null)
        {
            var filterTab = tab ?? m_PackageFiltering.currentFilterTab;

            return(GetRefreshTimestamp(GetRefreshOptionsByTab(filterTab)));
        }
Exemple #20
0
 public virtual void Refresh(PackageFilterTab?tab = null, int pageSize = k_DefaultPageSize)
 {
     Refresh(GetRefreshOptionsByTab(tab ?? m_PackageFiltering.currentFilterTab), pageSize);
 }
        private void OnRefreshOperationFinish(PackageFilterTab tab)
        {
            packageManagerToolbar.SetEnabled(true);
            packageDetails.packageToolbarContainer.SetEnabled(true);

            if (m_FilterToSelectAfterLoad != null)
            {
                PackageFiltering.instance.currentFilterTab = (PackageFilterTab)m_FilterToSelectAfterLoad;
            }

            if (!string.IsNullOrEmpty(m_PackageToSelectOnLoaded) && (m_FilterToSelectAfterLoad == null || tab == m_FilterToSelectAfterLoad))
            {
                var package = PackageDatabase.instance.GetPackage(m_PackageToSelectOnLoaded)
                              ?? PackageDatabase.instance.GetPackageByDisplayName(m_PackageToSelectOnLoaded);

                if (m_FilterToSelectAfterLoad == PackageFilterTab.AssetStore && PackageFiltering.instance.currentFilterTab == PackageFilterTab.AssetStore)
                {
                    if (package == null || package is PlaceholderPackage)
                    {
                        PageManager.instance.Fetch(m_PackageToSelectOnLoaded);
                    }
                    else
                    {
                        PageManager.instance.GetCurrentPage().Load(package);
                    }

                    m_FilterToSelectAfterLoad = null;
                    m_PackageToSelectOnLoaded = null;
                    return;
                }

                if (package != null)
                {
                    if (m_FilterToSelectAfterLoad == null)
                    {
                        var newFilterTab = PackageFilterTab.All;
                        if (package.versions.Any(v => v.HasTag(PackageTag.BuiltIn)))
                        {
                            newFilterTab = PackageFilterTab.Modules;
                        }
                        else
                        {
                            var installedVersion = package.installedVersion;
                            if (installedVersion != null && installedVersion.isDirectDependency)
                            {
                                newFilterTab = PackageFilterTab.Local;
                            }
                        }
                        PackageFiltering.instance.currentFilterTab = newFilterTab;
                    }

                    PageManager.instance.SetSelected(package);

                    m_FilterToSelectAfterLoad = null;
                    m_PackageToSelectOnLoaded = null;
                }
            }
            else if (string.IsNullOrEmpty(m_PackageToSelectOnLoaded))
            {
                m_FilterToSelectAfterLoad = null;
            }
        }
Exemple #22
0
            public bool IsRefreshInProgress(PackageFilterTab?tab = null)
            {
                var filterTab = tab ?? PackageFiltering.instance.currentFilterTab;

                return(IsRefreshInProgress(GetRefreshOptionsByTab(filterTab)));
            }
Exemple #23
0
            public Error GetRefreshError(PackageFilterTab?tab = null)
            {
                var filterTab = tab ?? PackageFiltering.instance.currentFilterTab;

                return(GetRefreshError(GetRefreshOptionsByTab(filterTab)));
            }
            public bool HasPageForFilterTab(PackageFilterTab?tab = null)
            {
                var filterTab = tab ?? PackageFiltering.instance.currentFilterTab;

                return(m_Pages.ContainsKey(filterTab));
            }
Exemple #25
0
 public void Refresh(PackageFilterTab?tab = null)
 {
     Refresh(GetRefreshOptionsByTab(tab ?? PackageFiltering.instance.currentFilterTab));
 }
Exemple #26
0
 public void Refresh(PackageFilterTab?tab = null, int pageSize = 25)
 {
     Refresh(GetRefreshOptionsByTab(tab ?? PackageFiltering.instance.currentFilterTab), pageSize);
 }
Exemple #27
0
        private void RemoveClick()
        {
            var roots = PackageDatabase.instance.GetDependentVersions(displayVersion).Where(p => p.isDirectDependency && p.isInstalled).ToList();
            // Only show this message on a package if it is installed by dependency only. This allows it to still be removed from the installed list.
            var showDialog = roots.Any() && !(!displayVersion.HasTag(PackageTag.BuiltIn) && displayVersion.isDirectDependency);

            if (showDialog)
            {
                if (roots.Count > MaxDependentList)
                {
                    Debug.Log(GetDependentMessage(displayVersion, roots, int.MaxValue));
                }

                var message = GetDependentMessage(displayVersion, roots);
                var title   = displayVersion.HasTag(PackageTag.BuiltIn) ? "Cannot disable built-in package" : "Cannot remove dependent package";
                EditorUtility.DisplayDialog(title, message, "Ok");

                return;
            }

            if (displayVersion.HasTag(PackageTag.InDevelopment))
            {
                if (!EditorUtility.DisplayDialog("Unity Package Manager", "You will loose all your changes (if any) if you delete a package in development. Are you sure?", "Yes", "No"))
                {
                    return;
                }

                detailError.ClearError();
                PackageDatabase.instance.RemoveEmbedded(package);
                RefreshPackageActionButtons();

                EditorApplication.delayCall += () =>
                {
                    PackageFilterTab?newFilterTab = null;
                    if (PackageFiltering.instance.currentFilterTab == PackageFilterTab.InDevelopment)
                    {
                        var hasOtherInDevelopment = PackageDatabase.instance.allPackages.Any(p =>
                        {
                            var installed = p.installedVersion;
                            return(installed != null && installed.HasTag(PackageTag.InDevelopment) && p.uniqueId != package.uniqueId);
                        });
                        newFilterTab = hasOtherInDevelopment ? PackageFilterTab.InDevelopment : PackageFilterTab.Local;
                    }
                    PackageManagerWindow.SelectPackageAndFilter(displayVersion.uniqueId, newFilterTab, true);
                };
                return;
            }

            var result = 0;

            if (displayVersion.HasTag(PackageTag.BuiltIn))
            {
                if (!PackageManagerPrefs.instance.skipDisableConfirmation)
                {
                    result = EditorUtility.DisplayDialogComplex("Disable Built-In Package",
                                                                "Are you sure you want to disable this built-in package?",
                                                                "Disable", "Cancel", "Never ask");
                }
            }
            else
            {
                if (!PackageManagerPrefs.instance.skipRemoveConfirmation)
                {
                    result = EditorUtility.DisplayDialogComplex("Removing Package",
                                                                "Are you sure you want to remove this package?",
                                                                "Remove", "Cancel", "Never ask");
                }
            }

            // Cancel
            if (result == 1)
            {
                return;
            }

            // Do not ask again
            if (result == 2)
            {
                if (displayVersion.HasTag(PackageTag.BuiltIn))
                {
                    PackageManagerPrefs.instance.skipDisableConfirmation = true;
                }
                else
                {
                    PackageManagerPrefs.instance.skipRemoveConfirmation = true;
                }
            }

            // Remove
            detailError.ClearError();
            PackageDatabase.instance.Uninstall(package);
            RefreshPackageActionButtons();
        }
Exemple #28
0
 private T GetPageFromTab <T>(PackageFilterTab?tab = null) where T : class, IPage
 {
     return(GetPageFromTab(tab) as T);
 }
Exemple #29
0
            public long GetRefreshTimestamp(PackageFilterTab?tab = null)
            {
                var filterTab = tab ?? PackageFiltering.instance.currentFilterTab;

                return(GetRefreshTimestamp(GetRefreshOptionsByTab(filterTab)));
            }
Exemple #30
0
        private IPage CreatePageFromTab(PackageFilterTab?tab = null)
        {
            var   filterTab = tab ?? m_PackageFiltering.currentFilterTab;
            IPage page;

            if (filterTab == PackageFilterTab.AssetStore)
            {
                page = new PaginatedPage(m_PackageDatabase, m_AssetStoreClient, m_PackageFiltering, m_PackageManagerPrefs, filterTab, new PageCapability
                {
                    requireUserLoggedIn = true,
                    requireNetwork      = true,
                    supportFilters      = true,
                    orderingValues      = new[]
                    {
                        new PageCapability.Ordering("Name", "name"),
                        new PageCapability.Ordering("Purchased date", "purchased_date"),
                        new PageCapability.Ordering("Update date", "update_date"),
                    }
                });
            }
            else if (filterTab == PackageFilterTab.All)
            {
                page = new SimplePage(m_PackageDatabase, m_PackageFiltering, filterTab, new PageCapability
                {
                    requireUserLoggedIn = false,
                    requireNetwork      = false,
                    orderingValues      = new[]
                    {
                        new PageCapability.Ordering("Name", "displayName"),
                        new PageCapability.Ordering("Published date", "publishedDate")
                    }
                });
            }
            else if (filterTab == PackageFilterTab.InProject)
            {
                page = new SimplePage(m_PackageDatabase, m_PackageFiltering, filterTab, new PageCapability
                {
                    requireUserLoggedIn = false,
                    requireNetwork      = false,
                    orderingValues      = new[]
                    {
                        new PageCapability.Ordering("Name", "displayName"),
                        new PageCapability.Ordering("Published date", "publishedDate"),
                        new PageCapability.Ordering("Update date", "updateDate")
                    }
                });
            }
            else // filterTab == PackageFilterTab.BuiltIn
            {
                page = new SimplePage(m_PackageDatabase, m_PackageFiltering, filterTab, new PageCapability
                {
                    requireUserLoggedIn = false,
                    requireNetwork      = false,
                    orderingValues      = new[]
                    {
                        new PageCapability.Ordering("Name", "displayName")
                    }
                });
            }
            m_Pages[filterTab] = page;
            RegisterPageEvents(page);
            return(page);
        }