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
14class StackFrame;
15
16
17class StackTraceView : public BGroupView, private TableListener {
18public:
19	class Listener;
20
21public:
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
36private:
37			class FramesTableModel;
38
39private:
40	// TableListener
41	virtual	void				TableSelectionChanged(Table* table);
42
43			void				_Init();
44
45private:
46			StackTrace*			fStackTrace;
47			Table*				fFramesTable;
48			FramesTableModel*	fFramesTableModel;
49			Listener*			fListener;
50};
51
52
53class StackTraceView::Listener {
54public:
55	virtual						~Listener();
56
57	virtual	void				StackFrameSelectionChanged(
58									StackFrame* frame) = 0;
59};
60
61
62#endif	// STACK_TRACE_VIEW_H
63