in Python/Product/Profiling/Profiling/SessionNode.cs [145:241]
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_Parent:
if (itemid == ReportsItemId) {
pvar = VSConstants.VSITEMID_ROOT;
} else if (IsReportItem(itemid)) {
pvar = ReportsItemId;
}
break;
case __VSHPROPID.VSHPROPID_FirstChild:
if (itemid == VSConstants.VSITEMID_ROOT) {
pvar = ReportsItemId;
} else if (itemid == ReportsItemId && Reports.Count > 0) {
pvar = (int)Reports.First().Key;
} else {
pvar = VSConstants.VSITEMID_NIL;
}
break;
case __VSHPROPID.VSHPROPID_NextSibling:
pvar = VSConstants.VSITEMID_NIL;
if (IsReportItem(itemid)) {
var items = Reports.Keys.ToArray();
for (int i = 0; i < items.Length; i++) {
if (items[i] > (int)itemid) {
pvar = (int)(itemid + 1);
break;
}
}
}
break;
case __VSHPROPID.VSHPROPID_ItemDocCookie:
if (itemid == VSConstants.VSITEMID_ROOT) {
pvar = (int)_docCookie;
}
break;
case __VSHPROPID.VSHPROPID_Expandable:
if (itemid == VSConstants.VSITEMID_ROOT) {
pvar = true;
} else if (itemid == ReportsItemId && Reports.Count > 0) {
pvar = true;
} else {
pvar = false;
}
break;
case __VSHPROPID.VSHPROPID_ExpandByDefault:
pvar = true;
break;
case __VSHPROPID.VSHPROPID_IconImgList:
case __VSHPROPID.VSHPROPID_OpenFolderIconHandle:
pvar = (IntPtr)SessionsNode._imageList.Handle;
break;
case __VSHPROPID.VSHPROPID_IconIndex:
case __VSHPROPID.VSHPROPID_OpenFolderIconIndex:
if (itemid == ReportsItemId) {
if (_isReportsExpanded) {
pvar = (int)TreeViewIconIndex.OpenFolder;
} else {
pvar = (int)TreeViewIconIndex.CloseFolder;
}
} else if (IsReportItem(itemid)) {
pvar = (int)TreeViewIconIndex.GreenNotebook;
}
break;
case __VSHPROPID.VSHPROPID_Caption:
if (itemid == VSConstants.VSITEMID_ROOT) {
pvar = Caption;
} else if (itemid == ReportsItemId) {
pvar = Strings.Reports;
} else if (IsReportItem(itemid)) {
pvar = Path.GetFileNameWithoutExtension(GetReport(itemid).Filename);
}
break;
case __VSHPROPID.VSHPROPID_ParentHierarchy:
if (itemid == VSConstants.VSITEMID_ROOT) {
pvar = _parent as IVsHierarchy;
}
break;
}
if (pvar != null)
return VSConstants.S_OK;
return VSConstants.DISP_E_MEMBERNOTFOUND;
}