xref: /haiku/src/apps/debugger/user_interface/gui/team_window/StackTraceView.h (revision 40e20c10768c3dcfc54074b8886e3e91455332e1)
1 /*
2  * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef STACK_TRACE_VIEW_H
6 #define STACK_TRACE_VIEW_H
7 
8 #include <GroupView.h>
9 
10 #include "table/Table.h"
11 #include "Team.h"
12 
13 
14 class StackFrame;
15 
16 
17 class StackTraceView : public BGroupView, private TableListener {
18 public:
19 	class Listener;
20 
21 public:
22 								StackTraceView(Listener* listener);
23 								~StackTraceView();
24 
25 	static	StackTraceView*		Create(Listener* listener);
26 									// throws
27 
28 			void				UnsetListener();
29 
30 			void				SetStackTrace(StackTrace* stackTrace);
31 			void				SetStackFrame(StackFrame* stackFrame);
32 
33 			void				LoadSettings(const BMessage& settings);
34 			status_t			SaveSettings(BMessage& settings);
35 
36 private:
37 			class FramesTableModel;
38 
39 private:
40 	// TableListener
41 	virtual	void				TableSelectionChanged(Table* table);
42 
43 			void				_Init();
44 
45 private:
46 			StackTrace*			fStackTrace;
47 			Table*				fFramesTable;
48 			FramesTableModel*	fFramesTableModel;
49 			Listener*			fListener;
50 };
51 
52 
53 class StackTraceView::Listener {
54 public:
55 	virtual						~Listener();
56 
57 	virtual	void				StackFrameSelectionChanged(
58 									StackFrame* frame) = 0;
59 };
60 
61 
62 #endif	// STACK_TRACE_VIEW_H
63