void CreateGUI()
        {
            if (m_Root == null)
            {
                return;
            }

            if (!rootVisualElement.Contains(m_Root))
            {
                try
                {
                    m_Root.OnEnable();
                    rootVisualElement.Add(m_Root);
                }
                catch (ResourceLoaderException)
                {
                    Debug.LogError(L10n.Tr("[Package Manager] Unable to load resource, window can't be displayed.)"));
                    return;
                }
                catch (TargetInvocationException e)
                {
                    CheckInnerException <ResourceLoaderException>(e);
                    Debug.LogError(L10n.Tr("[Package Manager] Unable to load resource, window can't be displayed.)"));
                    return;
                }
            }

            m_Root.OnCreateGUI();
        }
        void OnEnable()
        {
            this.SetAntiAliasing(4);
            if (instance == null)
            {
                instance = this;
            }
            if (instance != this)
            {
                return;
            }

            titleContent = GetLocalizedTitleContent();

            var container           = ServicesContainer.instance;
            var resourceLoader      = container.Resolve <ResourceLoader>();
            var selection           = container.Resolve <SelectionProxy>();
            var packageFiltering    = container.Resolve <PackageFiltering>();
            var packageManagerPrefs = container.Resolve <PackageManagerPrefs>();
            var packageDatabase     = container.Resolve <PackageDatabase>();
            var pageManager         = container.Resolve <PageManager>();
            var settingsProxy       = container.Resolve <PackageManagerProjectSettingsProxy>();

            m_Root = new PackageManagerWindowRoot(resourceLoader, selection, packageFiltering, packageManagerPrefs, packageDatabase, pageManager, settingsProxy);
            rootVisualElement.Add(m_Root);

            m_Root.OnEnable();
        }
        private void BuildGUI()
        {
            var container                = ServicesContainer.instance;
            var resourceLoader           = container.Resolve <ResourceLoader>();
            var extensionManager         = container.Resolve <ExtensionManager>();
            var selection                = container.Resolve <SelectionProxy>();
            var packageFiltering         = container.Resolve <PackageFiltering>();
            var packageManagerPrefs      = container.Resolve <PackageManagerPrefs>();
            var packageDatabase          = container.Resolve <PackageDatabase>();
            var pageManager              = container.Resolve <PageManager>();
            var settingsProxy            = container.Resolve <PackageManagerProjectSettingsProxy>();
            var unityConnectProxy        = container.Resolve <UnityConnectProxy>();
            var applicationProxy         = container.Resolve <ApplicationProxy>();
            var upmClient                = container.Resolve <UpmClient>();
            var assetStoreCachePathProxy = container.Resolve <AssetStoreCachePathProxy>();

            m_Root = new PackageManagerWindowRoot(resourceLoader, extensionManager, selection, packageFiltering, packageManagerPrefs, packageDatabase, pageManager, settingsProxy, unityConnectProxy, applicationProxy, upmClient, assetStoreCachePathProxy);
            try
            {
                m_Root.OnEnable();
                rootVisualElement.Add(m_Root);
            }
            catch (ResourceLoaderException)
            {
                // Do nothing, defer it to CreateGUI
            }
            catch (TargetInvocationException e)
            {
                CheckInnerException <ResourceLoaderException>(e);
            }

            if (pageManager.IsInitialFetchingDone())
            {
                OnFirstRefreshOperationFinish();
            }
            else
            {
                pageManager.onRefreshOperationFinish += OnFirstRefreshOperationFinish;
            }
        }