private void OnEditorSelectionChanged()
        {
            if (DisplayPackage == null || DisplayPackage.PackageManifestAsset == null)
            {
                return;
            }

            var onlyContainsCurrentPackageManifest = UnityEditor.Selection.count == 1 &&
                                                     UnityEditor.Selection.Contains(DisplayPackage.PackageManifestAsset);

            EditPackageManifestButton.SetEnabled(!onlyContainsCurrentPackageManifest);
        }
        public PackageDetails()
        {
            root = Resources.GetTemplate("PackageDetails.uxml");
            Add(root);

            Cache = new VisualElementCache(root);

            PackageManagerExtensions.ExtensionCallback(() =>
            {
                foreach (var extension in PackageManagerExtensions.Extensions)
                {
                    CustomContainer.Add(extension.CreateExtensionUI());
                }
            });

            root.StretchToParentSize();

            SetContentVisibility(false);
            SetUpdateVisibility(false);
            DevelopButton.visible = false;
            RemoveButton.visible  = false;
            UpdateBuiltIn.visible = false;

            DevelopButton.clickable.clicked       += DevelopClick;
            UpdateButton.clickable.clicked        += UpdateClick;
            UpdateBuiltIn.clickable.clicked       += UpdateClick;
            RemoveButton.clickable.clicked        += RemoveClick;
            ViewDocButton.clickable.clicked       += ViewDocClick;
            ViewChangelogButton.clickable.clicked += ViewChangelogClick;
            ViewLicenses.clickable.clicked        += ViewLicensesClick;

            var editManifestIconButton = new IconButton(Resources.GetIconPath("edit"));

            editManifestIconButton.clickable.clicked += EditPackageManifestClick;
            EditPackageManifestButton.Add(editManifestIconButton);

            RegisterCallback <AttachToPanelEvent>(OnEnterPanel);
            RegisterCallback <DetachFromPanelEvent>(OnLeavePanel);

            UnityEditor.Selection.selectionChanged += OnEditorSelectionChanged;
        }