8
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
1 |
/*
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
2 |
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
3 |
* All rights reserved.
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
4 |
*
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
5 |
* Redistribution and use in source and binary forms, with or without
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
6 |
* modification, are permitted provided that the following conditions are met:
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
7 |
*
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
8 |
* - Redistributions of source code must retain the above copyright notice,
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
9 |
* this list of conditions and the following disclaimer.
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
10 |
* - Redistributions in binary form must reproduce the above copyright notice,
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
11 |
* this list of conditions and the following disclaimer in the documentation
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
12 |
* and/or other materials provided with the distribution.
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
13 |
* - Neither the name of Nokia Corporation nor the names of its contributors
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
14 |
* may be used to endorse or promote products derived from this software
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
15 |
* without specific prior written permission.
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
16 |
*
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
17 |
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
18 |
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
19 |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
20 |
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
21 |
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
22 |
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
23 |
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
24 |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
25 |
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
26 |
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
27 |
* POSSIBILITY OF SUCH DAMAGE.
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
28 |
*
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
29 |
* Initial Contributors:
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
30 |
* Nokia Corporation - initial contribution.
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
31 |
*
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
32 |
* Contributors:
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
33 |
*
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
34 |
* Description:
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
35 |
*
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
36 |
*/
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
37 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
38 |
using System;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
39 |
using System.Collections;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
40 |
using System.ComponentModel;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
41 |
using System.Drawing;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
42 |
using System.Data;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
43 |
using System.Windows.Forms;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
44 |
using HeapLib.Cells;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
45 |
using HeapLib.Reconstructor;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
46 |
using HeapCtrlLib.Renderers;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
47 |
using HeapCtrlLib.Types;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
48 |
using HeapLib;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
49 |
using HeapLib.Array;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
50 |
using SymbianUtils.RawItems;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
51 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
52 |
namespace HeapCtrlLib
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
53 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
54 |
public class HeapDataControl : System.Windows.Forms.UserControl
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
55 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
56 |
#region Delegates & events
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
57 |
public delegate void OnCellSelected( HeapCell aCell );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
58 |
public event OnCellSelected CellSelected;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
59 |
public delegate void OnCellDoubleClicked( HeapCell aCell );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
60 |
public event OnCellDoubleClicked CellDoubleClicked;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
61 |
public delegate void CellRightClickedHandler( HeapCell aCell, RawItem aRawItem, Point aScreenPos );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
62 |
public event CellRightClickedHandler CellRightClicked;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
63 |
#endregion
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
64 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
65 |
#region Windows Form Designer code
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
66 |
private System.ComponentModel.Container components = null;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
67 |
private HeapCtrlLib.Renderers.HeapDataRenderer iRenderer = null;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
68 |
private SymbianUtilsUi.Controls.ScrollBarWithoutKeyConsumption iSB_Vertical = null;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
69 |
#endregion
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
70 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
71 |
#region Constructors & destructor
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
72 |
public HeapDataControl()
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
73 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
74 |
InitializeComponent();
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
75 |
//
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
76 |
// this.SetStyle(ControlStyles.DoubleBuffer, true);
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
77 |
// this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
78 |
// this.SetStyle(ControlStyles.UserPaint, true);
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
79 |
this.SetStyle(ControlStyles.ResizeRedraw, true);
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
80 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
81 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
82 |
protected override void Dispose( bool disposing )
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
83 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
84 |
if( disposing )
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
85 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
86 |
if(components != null)
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
87 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
88 |
components.Dispose();
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
89 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
90 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
91 |
base.Dispose( disposing );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
92 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
93 |
#endregion
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
94 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
95 |
#region Component Designer generated code
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
96 |
private void InitializeComponent()
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
97 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
98 |
this.iRenderer = new HeapDataRenderer();
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
99 |
this.iSB_Vertical = new SymbianUtilsUi.Controls.ScrollBarWithoutKeyConsumption();
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
100 |
this.SuspendLayout();
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
101 |
//
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
102 |
// iSB_Vertical
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
103 |
//
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
104 |
this.iSB_Vertical.Dock = System.Windows.Forms.DockStyle.Right;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
105 |
this.iSB_Vertical.Location = new System.Drawing.Point( 598, 2 );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
106 |
this.iSB_Vertical.Name = "iSB_Vertical";
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
107 |
this.iSB_Vertical.Size = new System.Drawing.Size( 16, 156 );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
108 |
this.iSB_Vertical.TabIndex = 2;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
109 |
this.iSB_Vertical.Scroll += new System.Windows.Forms.ScrollEventHandler( this.iSB_Vertical_Scroll );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
110 |
//
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
111 |
// iRenderer
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
112 |
//
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
113 |
this.iRenderer.Address = ( (uint) ( 0u ) );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
114 |
this.iRenderer.Anchor = ( (System.Windows.Forms.AnchorStyles) ( ( ( ( System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom )
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
115 |
| System.Windows.Forms.AnchorStyles.Left )
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
116 |
| System.Windows.Forms.AnchorStyles.Right ) ) );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
117 |
this.iRenderer.FocusedCell = null;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
118 |
this.iRenderer.Location = new System.Drawing.Point( 3, 3 );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
119 |
this.iRenderer.Name = "iRenderer";
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
120 |
this.iRenderer.Reconstructor = null;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
121 |
this.iRenderer.Size = new System.Drawing.Size( 596, 154 );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
122 |
this.iRenderer.TabIndex = 1;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
123 |
this.iRenderer.Zoom = HeapCtrlLib.Types.THeapCtrlZoom.EHeapCtrlZoomMedium;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
124 |
this.iRenderer.Enter += new System.EventHandler( this.iRenderer_Enter );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
125 |
this.iRenderer.AddressChanged += new HeapCtrlLib.Renderers.HeapDataRenderer.AddressChangeHandler( this.iRenderer_AddressChanged );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
126 |
this.iRenderer.Leave += new System.EventHandler( this.iRenderer_Leave );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
127 |
this.iRenderer.CellSelected += new HeapCtrlLib.Renderers.HeapDataRenderer.CellSelectionHandler( this.iRenderer_CellSelected );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
128 |
this.iRenderer.CellRightClicked += new HeapDataRenderer.CellRightClickedHandler( iRenderer_CellRightClicked );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
129 |
this.iRenderer.CellDoubleClicked += new HeapDataRenderer.CellDoubleClickHandler( iRenderer_CellDoubleClicked );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
130 |
//
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
131 |
// HeapDataControl
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
132 |
//
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
133 |
this.Controls.Add( this.iSB_Vertical );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
134 |
this.Controls.Add( this.iRenderer );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
135 |
this.Name = "HeapDataControl";
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
136 |
this.Padding = new System.Windows.Forms.Padding( 2 );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
137 |
this.Size = new System.Drawing.Size( 616, 160 );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
138 |
this.SizeChanged += new System.EventHandler( this.HeapDataControl_SizeChanged );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
139 |
this.ResumeLayout( false );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
140 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
141 |
#endregion
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
142 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
143 |
#region API
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
144 |
public void SetupFilters()
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
145 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
146 |
iRenderer.SetupFilters();
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
147 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
148 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
149 |
public void BreadcrumbsChanged()
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
150 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
151 |
iRenderer.Invalidate();
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
152 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
153 |
#endregion
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
154 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
155 |
#region Properties
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
156 |
public THeapCtrlZoom Zoom
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
157 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
158 |
get { return iRenderer.Zoom; }
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
159 |
set
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
160 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
161 |
iRenderer.Zoom = value;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
162 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
163 |
// Force repositioning to top of view.
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
164 |
Reconstructor = Reconstructor;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
165 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
166 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
167 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
168 |
public THeapCtrlRenderingType Type
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
169 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
170 |
get { return iType; }
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
171 |
set
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
172 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
173 |
if ( iType != value )
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
174 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
175 |
iType = value;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
176 |
iRenderer.LoadTypeSet( iType );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
177 |
iRenderer.Invalidate();
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
178 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
179 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
180 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
181 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
182 |
[Browsable(false)]
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
183 |
internal Size CellBoxSize
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
184 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
185 |
get { return iRenderer.CellBoxSize; }
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
186 |
set { iRenderer.CellBoxSize = value; }
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
187 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
188 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
189 |
[Browsable(false)]
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
190 |
internal Size CellPadding
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
191 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
192 |
get { return iRenderer.CellPadding; }
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
193 |
set { iRenderer.CellPadding = value; }
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
194 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
195 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
196 |
[Browsable(false)]
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
197 |
public HeapReconstructor Reconstructor
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
198 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
199 |
get
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
200 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
201 |
return iReconstructor;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
202 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
203 |
set
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
204 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
205 |
iReconstructor = value;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
206 |
iRenderer.Reconstructor = value;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
207 |
SetupScrollBar();
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
208 |
//
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
209 |
Invalidate();
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
210 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
211 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
212 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
213 |
[Browsable(false)]
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
214 |
public HeapCell FocusedCell
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
215 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
216 |
get { return iRenderer.FocusedCell; }
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
217 |
set { iRenderer.FocusedCell = value; }
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
218 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
219 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
220 |
[Browsable(false)]
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
221 |
public bool SupportsFiltering
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
222 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
223 |
get { return iRenderer.SupportsFiltering; }
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
224 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
225 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
226 |
[Browsable( false )]
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
227 |
public HeapCellArrayBase BreadcrumbCellsOutgoing
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
228 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
229 |
get { return iRenderer.BreadcrumbCellsOutgoing; }
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
230 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
231 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
232 |
[Browsable( false )]
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
233 |
public HeapCellArrayBase BreadcrumbCellsIncoming
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
234 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
235 |
get { return iRenderer.BreadcrumbCellsIncoming; }
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
236 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
237 |
#endregion
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
238 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
239 |
#region Drawing
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
240 |
protected override void OnPaint( PaintEventArgs aArgs )
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
241 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
242 |
aArgs.Graphics.Clear( Color.LightGray );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
243 |
//
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
244 |
float borderWidth = ( iRenderer.Focused ? 2.0f : 1.0f );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
245 |
Color borderColor = ( iRenderer.Focused ? Color.Black : Color.Gray );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
246 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
247 |
using( Pen borderPen = new Pen( borderColor, borderWidth ) )
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
248 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
249 |
aArgs.Graphics.DrawRectangle( borderPen, 0, 0, ClientSize.Width-1, ClientSize.Height-1 );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
250 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
251 |
//
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
252 |
base.OnPaint( aArgs );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
253 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
254 |
#endregion
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
255 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
256 |
#region Event handlers
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
257 |
private void HeapDataControl_SizeChanged(object sender, System.EventArgs e)
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
258 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
259 |
SetupScrollBar();
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
260 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
261 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
262 |
private void iSB_Vertical_Scroll(object sender, System.Windows.Forms.ScrollEventArgs e)
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
263 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
264 |
int rowIndex = e.NewValue;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
265 |
int bytesPerRow = iRenderer.RowsAndColumns.Width * 4;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
266 |
uint baseAddressOffset = (uint) ( bytesPerRow * rowIndex );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
267 |
uint address = iReconstructor.Statistics.HeapAddressStart + baseAddressOffset;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
268 |
//
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
269 |
iRenderer.Address = address ;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
270 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
271 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
272 |
private void iRenderer_AddressChanged( uint aAddressOld, uint aAddressNew, HeapLib.Cells.HeapCell aFirstCell, int aFirstCellIndex )
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
273 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
274 |
SetupScrollBar();
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
275 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
276 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
277 |
private void iRenderer_Enter(object sender, System.EventArgs e)
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
278 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
279 |
Invalidate();
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
280 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
281 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
282 |
private void iRenderer_Leave(object sender, System.EventArgs e)
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
283 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
284 |
Invalidate();
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
285 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
286 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
287 |
private void iRenderer_CellSelected(HeapLib.Cells.HeapCell aCell)
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
288 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
289 |
if ( CellSelected != null )
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
290 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
291 |
CellSelected( aCell );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
292 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
293 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
294 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
295 |
private void iRenderer_CellDoubleClicked( HeapCell aCell )
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
296 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
297 |
if ( CellDoubleClicked != null )
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
298 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
299 |
CellDoubleClicked( aCell );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
300 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
301 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
302 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
303 |
private void iRenderer_CellRightClicked( HeapCell aCell, RawItem aRawItem, Point aViewerPos )
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
304 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
305 |
if ( CellRightClicked != null )
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
306 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
307 |
Point screenPos = iRenderer.PointToScreen( aViewerPos );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
308 |
CellRightClicked( aCell, aRawItem, screenPos );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
309 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
310 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
311 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
312 |
/*protected override void WndProc(ref Message m)
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
313 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
314 |
SymbianUtilsUi.Utilities.WindowMessages.PrintMessage( "CTRL ", m.Msg );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
315 |
base.WndProc (ref m);
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
316 |
}*/
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
317 |
#endregion
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
318 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
319 |
#region Internal methods
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
320 |
private void SetupScrollBar()
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
321 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
322 |
Size rendererDimensions = iRenderer.RowsAndColumns;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
323 |
//
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
324 |
if ( iReconstructor != null && rendererDimensions.Width > 0 && rendererDimensions.Height > 0 )
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
325 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
326 |
uint extent = ( iReconstructor.Statistics.HeapAddressEnd - iReconstructor.Statistics.HeapAddressStart );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
327 |
uint bytesPerRow = (uint) ( iRenderer.RowsAndColumns.Width * 4 );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
328 |
uint numberOfRows = extent / bytesPerRow;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
329 |
uint rowNumber = ( iRenderer.Address - iReconstructor.Statistics.HeapAddressStart ) / bytesPerRow;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
330 |
if ( rowNumber > numberOfRows )
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
331 |
{
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
332 |
rowNumber = numberOfRows;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
333 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
334 |
//
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
335 |
iSB_Vertical.Minimum = 0;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
336 |
iSB_Vertical.Maximum = (int) Math.Max( 0, numberOfRows );
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
337 |
iSB_Vertical.Value = (int) rowNumber;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
338 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
339 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
340 |
#endregion
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
341 |
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
342 |
#region Data members
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
343 |
private HeapReconstructor iReconstructor;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
344 |
private THeapCtrlRenderingType iType = THeapCtrlRenderingType.EHeapCtrlRenderingTypeByCell;
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
345 |
#endregion
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
346 |
}
|
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff
changeset
|
347 |
}
|