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