author | Jussi Ryoma <ext-jussi.s.ryoma@nokia.com> |
Tue, 20 Apr 2010 14:41:43 +0300 | |
changeset 4 | 615035072f7e |
permissions | -rw-r--r-- |
4
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
1 |
/* |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
2 |
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
3 |
* All rights reserved. |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
4 |
* This component and the accompanying materials are made available |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
5 |
* under the terms of "Eclipse Public License v1.0" |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
6 |
* which accompanies this distribution, and is available |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html". |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
8 |
* |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
9 |
* Initial Contributors: |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
10 |
* Nokia Corporation - initial contribution. |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
11 |
* |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
12 |
* Contributors: |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
13 |
* |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
14 |
* Description: |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
15 |
* |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
16 |
*/ |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
17 |
package com.nokia.s60tools.crashanalyser.ui.editors; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
18 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
19 |
import java.util.List; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
20 |
import org.eclipse.jface.resource.FontRegistry; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
21 |
import org.eclipse.swt.SWT; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
22 |
import org.eclipse.swt.custom.SashForm; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
23 |
import org.eclipse.swt.events.SelectionEvent; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
24 |
import org.eclipse.swt.events.SelectionListener; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
25 |
import org.eclipse.swt.graphics.FontData; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
26 |
import org.eclipse.swt.layout.GridData; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
27 |
import org.eclipse.swt.layout.GridLayout; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
28 |
import org.eclipse.swt.widgets.*; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
29 |
import org.eclipse.swt.graphics.Color; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
30 |
import org.eclipse.ui.PlatformUI; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
31 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
32 |
import com.nokia.s60tools.crashanalyser.files.CrashFile; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
33 |
import com.nokia.s60tools.crashanalyser.files.SummaryFile; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
34 |
import com.nokia.s60tools.crashanalyser.resources.HelpContextIDs; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
35 |
import com.nokia.s60tools.crashanalyser.ui.viewers.CallStackTableViewer; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
36 |
import com.nokia.s60tools.crashanalyser.ui.views.MainView; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
37 |
import com.nokia.s60tools.crashanalyser.containers.Stack; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
38 |
import com.nokia.s60tools.crashanalyser.containers.StackEntry; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
39 |
import com.nokia.s60tools.crashanalyser.containers.Thread; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
40 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
41 |
public class CallStackPage implements SelectionListener { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
42 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
43 |
// call stack group UI items |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
44 |
private Combo comboCallStack; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
45 |
private Label labelStackWarning; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
46 |
private Button buttonDecodeFile; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
47 |
private Table tableCallStack; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
48 |
private CallStackTableViewer tableViewerCallStack; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
49 |
private Button buttonAllStackEntries; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
50 |
private Button buttonSymbolStackEntries; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
51 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
52 |
private SummaryFile crashFile = null; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
53 |
private FontRegistry fontRegistry; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
54 |
private Thread selectedThread = null; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
55 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
56 |
/** |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
57 |
* Creates the page |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
58 |
* @param parent composite |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
59 |
* @param file summary file |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
60 |
* @return composite |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
61 |
*/ |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
62 |
public Composite createPage(Composite parent, SummaryFile file) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
63 |
crashFile = file; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
64 |
return doCreate(parent); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
65 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
66 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
67 |
/** |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
68 |
* Creates the page |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
69 |
* @param parent composite |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
70 |
* @return composite |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
71 |
*/ |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
72 |
public Composite createPage(Composite parent) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
73 |
return doCreate(parent); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
74 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
75 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
76 |
public void update() { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
77 |
// AutoSizeCallStackTableCells(); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
78 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
79 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
80 |
/** |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
81 |
* Loads data from given file into UI elements. |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
82 |
* @param file crash file |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
83 |
*/ |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
84 |
public void setFile(CrashFile file) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
85 |
if (file != null) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
86 |
crashFile = file; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
87 |
initialCallStackTableLoad(); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
88 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
89 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
90 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
91 |
/** |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
92 |
* Creates all UI elements to the page |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
93 |
* @param parent |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
94 |
* @return composite |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
95 |
*/ |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
96 |
Composite doCreate(Composite parent) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
97 |
GridLayout layout = new GridLayout(); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
98 |
layout.numColumns = 1; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
99 |
parent.setLayout(layout); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
100 |
parent.setLayoutData(new GridData(GridData.FILL_BOTH)); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
101 |
fontRegistry = new FontRegistry(Display.getCurrent()); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
102 |
fontRegistry.put("monospace", new FontData[]{new FontData("Courier", 8, SWT.NORMAL)}); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
103 |
SashForm sashFormMain = new SashForm(parent, SWT.VERTICAL); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
104 |
sashFormMain.setLayoutData(new GridData(GridData.FILL_BOTH)); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
105 |
createCallStackGroup(sashFormMain); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
106 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
107 |
setHelps(); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
108 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
109 |
return parent; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
110 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
111 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
112 |
/** |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
113 |
* Creates call stack group |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
114 |
* @param parent |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
115 |
*/ |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
116 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
117 |
void createCallStackGroup(Composite parent) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
118 |
Group groupCallStack = new Group(parent, SWT.NONE); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
119 |
GridLayout layout = new GridLayout(); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
120 |
layout.numColumns = 3; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
121 |
groupCallStack.setLayout(layout); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
122 |
GridData groupGD = new GridData(GridData.FILL_BOTH); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
123 |
groupGD.horizontalSpan = 3; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
124 |
groupCallStack.setText("Call Stack"); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
125 |
groupCallStack.setLayoutData(groupGD); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
126 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
127 |
comboCallStack = new Combo(groupCallStack, SWT.BORDER | SWT.DROP_DOWN | SWT.READ_ONLY); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
128 |
comboCallStack.addSelectionListener(this); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
129 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
130 |
labelStackWarning = new Label(groupCallStack, SWT.NONE); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
131 |
labelStackWarning.setText("(selected stack is build with heuristic algorithm)"); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
132 |
labelStackWarning.setVisible(false); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
133 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
134 |
buttonDecodeFile = new Button(groupCallStack, SWT.PUSH); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
135 |
buttonDecodeFile.setText("Decode"); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
136 |
buttonDecodeFile.setVisible(false); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
137 |
buttonDecodeFile.addSelectionListener(this); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
138 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
139 |
tableCallStack = new Table(groupCallStack, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION | |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
140 |
SWT.V_SCROLL | SWT.H_SCROLL); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
141 |
tableCallStack.setHeaderVisible(true); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
142 |
tableCallStack.setFont(fontRegistry.get("monospace")); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
143 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
144 |
GridData tableGD = new GridData(GridData.FILL_BOTH); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
145 |
tableGD.horizontalSpan = 3; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
146 |
tableCallStack.setLayoutData(tableGD); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
147 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
148 |
GridData buttonGD = new GridData(GridData.FILL_HORIZONTAL); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
149 |
buttonGD.horizontalSpan = 3; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
150 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
151 |
buttonAllStackEntries = new Button(groupCallStack, SWT.RADIO); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
152 |
buttonAllStackEntries.setText("Show all stack entries"); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
153 |
buttonAllStackEntries.addSelectionListener(this); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
154 |
buttonAllStackEntries.setLayoutData(buttonGD); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
155 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
156 |
buttonSymbolStackEntries = new Button(groupCallStack, SWT.RADIO); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
157 |
buttonSymbolStackEntries.setText("Show stack entries which have associated symbols"); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
158 |
buttonSymbolStackEntries.addSelectionListener(this); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
159 |
buttonSymbolStackEntries.setLayoutData(buttonGD); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
160 |
buttonSymbolStackEntries.setSelection(true); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
161 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
162 |
tableViewerCallStack = new CallStackTableViewer(tableCallStack); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
163 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
164 |
initialCallStackTableLoad(); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
165 |
AutoSizeCallStackTableCells(); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
166 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
167 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
168 |
/** |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
169 |
* Packs columns in call stack table nicely |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
170 |
*/ |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
171 |
void AutoSizeCallStackTableCells() { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
172 |
int tableWidth = tableCallStack.getBounds().width; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
173 |
tableCallStack.getColumn(CallStackTableViewer.COLUMN_ADDRESS).setWidth(80); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
174 |
tableCallStack.getColumn(CallStackTableViewer.COLUMN_VALUE).setWidth(80); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
175 |
tableCallStack.getColumn(CallStackTableViewer.COLUMN_OFFSET).setWidth(65); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
176 |
tableCallStack.getColumn(CallStackTableViewer.COLUMN_TEXT).setWidth(60); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
177 |
int space = tableWidth - 80 - 80 - 65 - 60 - 25; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
178 |
int object = space / 3; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
179 |
if (object < 70) |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
180 |
object = 70; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
181 |
tableCallStack.getColumn(CallStackTableViewer.COLUMN_OBJECT).setWidth(object); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
182 |
tableCallStack.getColumn(CallStackTableViewer.COLUMN_SYMBOL).setWidth(object*2); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
183 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
184 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
185 |
/** |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
186 |
* Loads stacks to combo, selects the correct stack as |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
187 |
* default set and then loads stack's data to table. |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
188 |
*/ |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
189 |
void initialCallStackTableLoad() { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
190 |
if (crashFile == null) |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
191 |
return; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
192 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
193 |
// int defaultSelectionIndex = 0; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
194 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
195 |
// show the data of crashed process |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
196 |
com.nokia.s60tools.crashanalyser.containers.Process process = null; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
197 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
198 |
if (crashFile.getThread() != null) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
199 |
process = crashFile.getProcessByThread(crashFile.getThread().getId()); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
200 |
} else { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
201 |
process = crashFile.getCrashedProcess(); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
202 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
203 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
204 |
if (process != null) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
205 |
// current UI support only one thread, so show the first thread of first process |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
206 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
207 |
if (crashFile.getThread() != null) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
208 |
// Show only thread information (no crash info) |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
209 |
selectedThread = crashFile.getThread(); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
210 |
} else { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
211 |
selectedThread = crashFile.getCrashedThread(); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
212 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
213 |
/* |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
214 |
if (selectedThread != null) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
215 |
List<RegisterSet> registerSets = selectedThread.getRegisters(); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
216 |
if (registerSets != null && !registerSets.isEmpty()) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
217 |
// load all register sets to combo |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
218 |
for (int i = 0; i < registerSets.size(); i++) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
219 |
RegisterSet registerSet = registerSets.get(i); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
220 |
// default register to show is the one that contains CPSR register |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
221 |
if (registerSet.containsCPSR()) |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
222 |
defaultSelectionIndex = i; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
223 |
comboRegisters.add(registerSet.getName()); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
224 |
comboRegisters.setData(registerSet.getName(), registerSet); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
225 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
226 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
227 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
228 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
229 |
*/ |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
230 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
231 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
232 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
233 |
int selectedIndex = 0; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
234 |
if (selectedThread != null) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
235 |
List<Stack> stacks = selectedThread.getStacks(); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
236 |
if (stacks != null && !stacks.isEmpty()) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
237 |
// add all stacks into combo |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
238 |
for (int i = 0; i < stacks.size(); i++) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
239 |
Stack stack = stacks.get(i); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
240 |
// show stack which contains CPSR register as default |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
241 |
if (stack.stackRegisterContainsCpsr()) |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
242 |
selectedIndex = i; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
243 |
comboCallStack.add(stack.getStackType()); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
244 |
comboCallStack.setData(stack.getStackType(), stack); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
245 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
246 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
247 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
248 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
249 |
List<Stack> standAloneStacks = crashFile.getStandAloneStacks(); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
250 |
if (standAloneStacks != null && !standAloneStacks.isEmpty()) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
251 |
for (int i = 0; i < standAloneStacks.size(); i++) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
252 |
Stack stack = standAloneStacks.get(i); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
253 |
if (stack.stackRegisterContainsCpsr()) |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
254 |
selectedIndex = comboCallStack.getItemCount() + i; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
255 |
comboCallStack.add(stack.getStackType()); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
256 |
comboCallStack.setData(stack.getStackType(), stack); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
257 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
258 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
259 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
260 |
if (comboCallStack.getItemCount() > 0) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
261 |
comboCallStack.select(selectedIndex); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
262 |
loadCallStackTable(true); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
263 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
264 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
265 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
266 |
/** |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
267 |
* Loads call stack table according to which stack is |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
268 |
* selected in combo. |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
269 |
*/ |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
270 |
void loadCallStackTable(boolean autoSizeCells) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
271 |
tableCallStack.removeAll(); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
272 |
labelStackWarning.setVisible(false); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
273 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
274 |
if (comboCallStack.getItemCount() < 1) |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
275 |
return; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
276 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
277 |
try { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
278 |
Stack stack = (Stack)comboCallStack.getData(comboCallStack.getText()); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
279 |
boolean containsAccurate = stack.containsAccurateStackEntries(); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
280 |
labelStackWarning.setVisible(!containsAccurate); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
281 |
List<StackEntry> stackEntries = stack.getStackEntries(); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
282 |
if (stackEntries != null && !stackEntries.isEmpty()) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
283 |
for (int i = 0; i < stackEntries.size(); i++) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
284 |
StackEntry stackEntry = stackEntries.get(i); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
285 |
newStackTableItem(stackEntry, containsAccurate); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
286 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
287 |
if (autoSizeCells) |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
288 |
AutoSizeCallStackTableCells(); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
289 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
290 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
291 |
// nothing in stack |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
292 |
if (stackEntries == null || stackEntries.isEmpty()) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
293 |
disableStack(); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
294 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
295 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
296 |
} catch (Exception e) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
297 |
e.printStackTrace(); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
298 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
299 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
300 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
301 |
/** |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
302 |
* Disables stack UI elements |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
303 |
*/ |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
304 |
void disableStack() { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
305 |
labelStackWarning.setVisible(true); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
306 |
labelStackWarning.setText("Symbols were not available while creating stack."); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
307 |
buttonDecodeFile.setVisible(true); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
308 |
comboCallStack.setEnabled(false); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
309 |
buttonAllStackEntries.setEnabled(false); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
310 |
buttonSymbolStackEntries.setEnabled(false); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
311 |
tableCallStack.setEnabled(false); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
312 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
313 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
314 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
315 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
316 |
public void widgetDefaultSelected(SelectionEvent arg0) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
317 |
// no implementation required |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
318 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
319 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
320 |
public void widgetSelected(SelectionEvent event) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
321 |
// stack was changed in combo |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
322 |
if (event.widget == comboCallStack) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
323 |
loadCallStackTable(true); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
324 |
// stack radio button changes |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
325 |
} else if (event.widget == buttonAllStackEntries || |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
326 |
event.widget == buttonSymbolStackEntries) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
327 |
loadCallStackTable(false); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
328 |
// decode button was pressed |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
329 |
} else if (event.widget == buttonDecodeFile) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
330 |
MainView mv = MainView.showAndReturnYourself(true); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
331 |
mv.decodeFile(crashFile); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
332 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
333 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
334 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
335 |
/** |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
336 |
* Adds new stack table row. |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
337 |
* @param stackEntry row data |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
338 |
* @param stackContainsAccurateEntries affects row colorings |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
339 |
*/ |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
340 |
void newStackTableItem(StackEntry stackEntry, boolean stackContainsAccurateEntries) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
341 |
// if 'Show stack entries which have associated symbols' radio button is selected and |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
342 |
// if stack contains accurate stack entries, and this stack entry is not accurate |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
343 |
// don't add it to table (unless this stack entry is current stack pointer or register based) |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
344 |
if (buttonSymbolStackEntries.getSelection() && |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
345 |
stackContainsAccurateEntries && |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
346 |
!stackEntry.accurate() && |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
347 |
!stackEntry.currentStackPointer() && |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
348 |
!stackEntry.registerBased()) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
349 |
return; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
350 |
// if 'Show stack entries which have associated symbols' radio button is selected |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
351 |
// if stack doesn't contain accurate stack entries, don't show current stack entry |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
352 |
// if it doesn't have associated symbol (unless this stack entry is current stack pointer or register based) |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
353 |
} else if (buttonSymbolStackEntries.getSelection() && |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
354 |
!stackContainsAccurateEntries && |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
355 |
"".equals(stackEntry.getSymbol()) && |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
356 |
!stackEntry.currentStackPointer() && |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
357 |
!stackEntry.registerBased()) |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
358 |
return; |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
359 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
360 |
TableItem item = new TableItem(tableCallStack, SWT.NONE); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
361 |
item.setText(new String[] {stackEntry.getAddress(), |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
362 |
stackEntry.getSymbol(), |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
363 |
stackEntry.getValue(), |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
364 |
stackEntry.getOffset(), |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
365 |
stackEntry.getObject(), |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
366 |
stackEntry.getText()}); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
367 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
368 |
item.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE)); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
369 |
item.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK)); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
370 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
371 |
// item is current stack pointer FG black, BG light pink |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
372 |
if (stackEntry.currentStackPointer()) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
373 |
item.setBackground(new Color(Display.getCurrent(), 255, 182, 193)); // light pink |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
374 |
// PC or LR |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
375 |
} else if (stackEntry.registerBased()) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
376 |
item.setBackground(new Color(Display.getCurrent(), 173, 216, 230)); // light blue |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
377 |
// item is out of stack bound FG gray, BG white |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
378 |
} else if (stackEntry.outsideStackBounds()) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
379 |
item.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY)); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
380 |
// item has no symbols, FG black, BG white |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
381 |
} else if ("".equals(stackEntry.getSymbol())) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
382 |
} else |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
383 |
// if stack contains accurate entries, show "ghost" entries as gray |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
384 |
if (stackContainsAccurateEntries) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
385 |
// color accurate stack entries black or blue |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
386 |
if (stackEntry.accurate()) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
387 |
// ram loaded code (instead of execute-in-place code) FG blue |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
388 |
if (!stackEntry.xip()) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
389 |
item.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_BLUE)); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
390 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
391 |
// not accurate stack entry FG gray |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
392 |
} else { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
393 |
item.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY)); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
394 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
395 |
// stack isn't accurate, |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
396 |
} else { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
397 |
// ram loaded code (instead of execute-in-place code) |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
398 |
if (!stackEntry.xip()) { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
399 |
item.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_BLUE)); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
400 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
401 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
402 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
403 |
item.setData(stackEntry); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
404 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
405 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
406 |
/** |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
407 |
* Sets context sensitive help ids to UI elements |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
408 |
*/ |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
409 |
void setHelps() { |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
410 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
411 |
PlatformUI.getWorkbench().getHelpSystem().setHelp(tableCallStack, |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
412 |
HelpContextIDs.CRASH_ANALYSER_HELP_CRASH_VISUALISER); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
413 |
PlatformUI.getWorkbench().getHelpSystem().setHelp(comboCallStack, |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
414 |
HelpContextIDs.CRASH_ANALYSER_HELP_CRASH_VISUALISER); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
415 |
PlatformUI.getWorkbench().getHelpSystem().setHelp(buttonAllStackEntries, |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
416 |
HelpContextIDs.CRASH_ANALYSER_HELP_CRASH_VISUALISER); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
417 |
PlatformUI.getWorkbench().getHelpSystem().setHelp(buttonDecodeFile, |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
418 |
HelpContextIDs.CRASH_ANALYSER_HELP_CRASH_VISUALISER); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
419 |
PlatformUI.getWorkbench().getHelpSystem().setHelp(buttonSymbolStackEntries, |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
420 |
HelpContextIDs.CRASH_ANALYSER_HELP_CRASH_VISUALISER); |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
421 |
} |
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
422 |
|
615035072f7e
Crash Analyser Carbide extension v1.3
Jussi Ryoma <ext-jussi.s.ryoma@nokia.com>
parents:
diff
changeset
|
423 |
} |