public override int GetProperty()

in Nodejs/Product/Profiling/Profiling/SessionsNode.cs [168:256]


        public override int GetProperty(uint itemid, int propid, out object pvar)
        {
            // GetProperty is called many many times for this particular property
            pvar = null;
            var prop = (__VSHPROPID)propid;
            switch (prop)
            {
                case __VSHPROPID.VSHPROPID_CmdUIGuid:
                    pvar = ProfilingGuids.NodejsProfilingPkg;
                    break;

                case __VSHPROPID.VSHPROPID_Parent:
                    if (itemid != VSConstants.VSITEMID_ROOT)
                    {
                        pvar = VSConstants.VSITEMID_ROOT;
                    }
                    break;

                case __VSHPROPID.VSHPROPID_FirstChild:
                    if (itemid == VSConstants.VSITEMID_ROOT && _sessions.Count > 0)
                        pvar = _sessions[0].ItemId;
                    else
                        pvar = VSConstants.VSITEMID_NIL;
                    break;

                case __VSHPROPID.VSHPROPID_NextSibling:
                    pvar = VSConstants.VSITEMID_NIL;
                    for (int i = 0; i < _sessions.Count; i++)
                    {
                        if (_sessions[i].ItemId == itemid && i < _sessions.Count - 1)
                        {
                            pvar = _sessions[i + 1].ItemId;
                        }
                    }
                    break;

                case __VSHPROPID.VSHPROPID_Expandable:
                    pvar = true;
                    break;

                case __VSHPROPID.VSHPROPID_ExpandByDefault:
                    if (itemid == VSConstants.VSITEMID_ROOT)
                    {
                        pvar = true;
                    }
                    break;

                case __VSHPROPID.VSHPROPID_IconImgList:
                case __VSHPROPID.VSHPROPID_OpenFolderIconHandle:
                    pvar = (int)_imageList.Handle;
                    break;

                case __VSHPROPID.VSHPROPID_IconIndex:
                case __VSHPROPID.VSHPROPID_OpenFolderIconIndex:
                    if (itemid == VSConstants.VSITEMID_ROOT)
                    {
                        pvar = 0;
                    }
                    else
                    {
                        pvar = (int)TreeViewIconIndex.PerformanceSession;
                    }
                    break;
                case __VSHPROPID.VSHPROPID_SaveName:
                    if (itemid != VSConstants.VSITEMID_ROOT)
                    {
                        pvar = GetItem(itemid).Filename;
                    }
                    break;
                case __VSHPROPID.VSHPROPID_Caption:
                    if (itemid != VSConstants.VSITEMID_ROOT)
                    {
                        pvar = GetItem(itemid).Caption;
                    }
                    break;

                case __VSHPROPID.VSHPROPID_ParentHierarchy:
                    if (_sessionsCollection[itemid] != null)
                    {
                        pvar = this as IVsHierarchy;
                    }
                    break;
            }

            if (pvar != null)
                return VSConstants.S_OK;

            return VSConstants.DISP_E_MEMBERNOTFOUND;
        }