public History(TreeMapPane pane) { Mode = pane.m_UIState.CurrentMode; if (pane.m_TreeMap.SelectedItem != null) { m_SelectedItem = pane.m_TreeMap.SelectedItem.Metric; m_GroupName = m_SelectedItem.GetTypeName(); } else if (pane.m_TreeMap.SelectedGroup != null) { m_GroupName = pane.m_TreeMap.SelectedGroup.Name; } }
public void AddMetric(ObjectMetric metric) { var groupName = metric.GetTypeName(); if (!_groups.ContainsKey(groupName)) { Group newGroup = new Group(); newGroup.Name = groupName; newGroup.Items = new List <Item>(); _groups.Add(groupName, newGroup); } Item item = new Item(metric, _groups[groupName]); _items.Add(item); _groups[groupName].Items.Add(item); }
void OpenMetricData(Treemap.ObjectMetric metric, bool focus) { switch (metric.MetricType) { case Treemap.ObjectMetricType.Managed: var metricTypeName = metric.GetTypeName(); if (m_CurrentTableTypeFilter == metricTypeName) { var builder = new Database.View.Where.Builder("Index", Database.Operation.Operator.Equal, new Database.Operation.Expression.MetaExpression(metric.GetObjectUID().ToString(), true)); var whereStatement = builder.Build(null, null, null, null, null, m_Spreadsheet.DisplayTable, null); //yeah we could add a no param Build() too.. var row = whereStatement.GetFirstMatchIndex(-1); if (row > 0) { m_Spreadsheet.Goto(new Database.CellPosition(row, 0)); return; } } var lr = new Database.LinkRequestTable(); lr.LinkToOpen = new Database.TableLink(); lr.LinkToOpen.TableName = TableName; lr.SourceTable = null; lr.SourceColumn = null; lr.SourceRow = -1; var managedObj = m_UIState.snapshotMode.snapshot.CrawledData.ManagedObjects[metric.ObjectIndex]; lr.Parameters.AddValue(ObjectTable.ObjParamName, managedObj.PtrObject); lr.Parameters.AddValue(ObjectTable.TypeParamName, managedObj.ITypeDescription); OpenLinkRequest(lr, focus, metricTypeName); break; case Treemap.ObjectMetricType.Native: metricTypeName = metric.GetTypeName(); var instanceId = m_UIState.snapshotMode.snapshot.nativeObjects.instanceId[metric.ObjectIndex]; if (m_CurrentTableTypeFilter == metricTypeName) { var builder = new Database.View.Where.Builder("NativeInstanceId", Database.Operation.Operator.Equal, new Database.Operation.Expression.MetaExpression(instanceId.ToString(), true)); var whereStatement = builder.Build(null, null, null, null, null, m_Spreadsheet.DisplayTable, null); //yeah we could add a no param Build() too.. var row = whereStatement.GetFirstMatchIndex(-1); if (row > 0) { m_Spreadsheet.Goto(new Database.CellPosition(row, 0)); return; } } lr = new Database.LinkRequestTable(); lr.LinkToOpen = new Database.TableLink(); lr.LinkToOpen.TableName = TableName; var b = new Database.View.Where.Builder("NativeInstanceId", Database.Operation.Operator.Equal, new Database.Operation.Expression.MetaExpression(instanceId.ToString(), true)); lr.LinkToOpen.RowWhere = new System.Collections.Generic.List <Database.View.Where.Builder>(); lr.LinkToOpen.RowWhere.Add(b); lr.SourceTable = null; lr.SourceColumn = null; lr.SourceRow = -1; OpenLinkRequest(lr, focus, metricTypeName); break; } }