示例#1
0
            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);
        }
示例#3
0
        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;
            }
        }