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;
}