xref: /haiku/src/apps/debuganalyzer/gui/table/AbstractTable.h (revision e7c8829c5d8e5d34a2a1e111f1c06aceff256013)
1 /*
2  * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef ABSTRACT_TABLE_H
6 #define ABSTRACT_TABLE_H
7 
8 #include <ObjectList.h>
9 #include <ColumnListView.h>
10 
11 
12 class TableColumn;
13 
14 
15 class AbstractTableModel {
16 public:
17 	virtual						~AbstractTableModel();
18 
19 	virtual	int32				CountColumns() const = 0;
20 };
21 
22 
23 class AbstractTable : protected BColumnListView {
24 public:
25 								AbstractTable(const char* name, uint32 flags,
26 									border_style borderStyle = B_NO_BORDER,
27 									bool showHorizontalScrollbar = true);
28 	virtual						~AbstractTable();
29 
30 			BView*				ToView()				{ return this; }
31 
32 	virtual	void				AddColumn(TableColumn* column);
33 			void				ResizeColumnToPreferred(int32 index);
34 			void				ResizeAllColumnsToPreferred();
35 
36 protected:
37 			class AbstractColumn;
38 
39 			typedef BObjectList<AbstractColumn>		ColumnList;
40 
41 protected:
42 	virtual	AbstractColumn*		CreateColumn(TableColumn* column) = 0;
43 
44 protected:
45 			ColumnList			fColumns;
46 };
47 
48 
49 // implementation private
50 
51 class AbstractTable::AbstractColumn : public BColumn {
52 public:
53 								AbstractColumn(TableColumn* tableColumn);
54 	virtual						~AbstractColumn();
55 
56 	virtual	void				SetModel(AbstractTableModel* model) = 0;
57 
58 			TableColumn*		GetTableColumn() const	{ return fTableColumn; }
59 
60 protected:
61 			TableColumn*		fTableColumn;
62 };
63 
64 
65 #endif	// ABSTRACT_TABLE_H
66