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