Ejemplo n.º 1
0
        void OpenMetricData(Treemap.IMetricValue metric, bool focus)
        {
            if (metric is Treemap.ManagedObjectMetric)
            {
                var m = (Treemap.ManagedObjectMetric)metric;

                if (m_CurrentTableTypeFilter == metric.GetGroupName())
                {
                    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;
                lr.Parameters.AddValue(ObjectTable.ObjParamName, m.m_Object.PtrObject);
                lr.Parameters.AddValue(ObjectTable.TypeParamName, m.m_Object.ITypeDescription);
                OpenLinkRequest(lr, focus, metric.GetGroupName());
            }
            else if (metric is Treemap.NativeObjectMetric)
            {
                var m = (Treemap.NativeObjectMetric)metric;

                if (m_CurrentTableTypeFilter == metric.GetGroupName())
                {
                    var builder        = new Database.View.Where.Builder("NativeInstanceId", Database.Operation.Operator.Equal, new Database.Operation.Expression.MetaExpression(m_UIState.snapshotMode.snapshot.nativeObjects.instanceId[m.m_ObjectIndex].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;
                var instanceId = m_UIState.snapshotMode.snapshot.nativeObjects.instanceId[m.m_ObjectIndex];
                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, metric.GetGroupName());
            }
        }
Ejemplo n.º 2
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.GetGroupName();
                }
                else if (pane.m_TreeMap.SelectedGroup != null)
                {
                    m_GroupName = pane.m_TreeMap.SelectedGroup._name;
                }
            }
Ejemplo n.º 3
0
        public void ShowAllObjects(Treemap.IMetricValue itemCopyToSelect, bool focus)
        {
            // TODO: Fix history zooming UX
            focus = false;

            Treemap.IMetricValue itemToSelect = null;
            m_TreeMap.ClearMetric();
            if (m_CurrentCodeType == CodeType.Unknown || m_CurrentCodeType == CodeType.Managed)
            {
                foreach (var managedObject in m_UIState.snapshotMode.snapshot.CrawledData.ManagedObjects)
                {
                    if (managedObject.Size > 0)
                    {
                        var o = new Treemap.ManagedObjectMetric(m_UIState.snapshotMode.snapshot, managedObject);
                        if (o.IsSame(itemCopyToSelect))
                        {
                            itemToSelect = o;
                        }
                        m_TreeMap.AddMetric(o);
                    }
                }
            }
            if (m_CurrentCodeType == CodeType.Unknown || m_CurrentCodeType == CodeType.Native)
            {
                for (int i = 0; i != m_UIState.snapshotMode.snapshot.nativeObjects.Count; ++i)
                {
                    if (m_UIState.snapshotMode.snapshot.nativeObjects.size[i] > 0)
                    {
                        var o = new Treemap.NativeObjectMetric(m_UIState.snapshotMode.snapshot, i);
                        if (o.IsSame(itemCopyToSelect))
                        {
                            itemToSelect = o;
                        }
                        m_TreeMap.AddMetric(o);
                    }
                }
            }
            m_TreeMap.UpdateMetric();

            if (itemToSelect != null)
            {
                OpenMetricData(itemToSelect, focus);
            }
            else
            {
                try
                {
                    using (new Service <IDebugContextService> .ScopeService(new DebugContextService()))
                    {
                        var lr = new Database.LinkRequestTable();
                        lr.LinkToOpen           = new Database.TableLink();
                        lr.LinkToOpen.TableName = ObjectAllTable.TableName;
                        lr.SourceTable          = null;
                        lr.SourceColumn         = null;
                        lr.SourceRow            = -1;
                        OpenLinkRequest(lr, false, null, false);
                    }
                }
                catch (ExitGUIException)
                {
                    throw;
                }
                catch (Exception e)
                {
                    throw new Exception(DebugUtility.GetExceptionHelpMessage(e));
                }
            }
        }