diff --git a/src/apps/debuganalyzer/gui/table/TreeTable.cpp b/src/apps/debuganalyzer/gui/table/TreeTable.cpp index 0c20843914..851342a4cd 100644 --- a/src/apps/debuganalyzer/gui/table/TreeTable.cpp +++ b/src/apps/debuganalyzer/gui/table/TreeTable.cpp @@ -1,5 +1,6 @@ /* * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. + * Copyright 2012, Rene Gollent, rene@gollent.com. * Distributed under the terms of the MIT License. */ @@ -226,6 +227,14 @@ TreeTableModel::NotifyNodesChanged(const TreeTablePath& path, int32 childIndex, } +// #pragma mark - TreeTableToolTipProvider + + +TreeTableToolTipProvider::~TreeTableToolTipProvider() +{ +} + + // #pragma mark - TreeTableListener @@ -650,6 +659,7 @@ TreeTable::TreeTable(const char* name, uint32 flags, border_style borderStyle, : AbstractTable(name, flags, borderStyle, showHorizontalScrollbar), fModel(NULL), + fToolTipProvider(NULL), fRootNode(NULL), fSelectionModel(this), fIgnoreSelectionChange(0) @@ -731,6 +741,13 @@ TreeTable::SetTreeTableModel(TreeTableModel* model) } +void +TreeTable::SetToolTipProvider(TreeTableToolTipProvider* toolTipProvider) +{ + fToolTipProvider = toolTipProvider; +} + + TreeTableSelectionModel* TreeTable::SelectionModel() { @@ -810,6 +827,31 @@ TreeTable::RemoveTreeTableListener(TreeTableListener* listener) } +bool +TreeTable::GetToolTipAt(BPoint point, BToolTip** _tip) +{ + if (fToolTipProvider == NULL) + return AbstractTable::GetToolTipAt(point, _tip); + + // get the table row + BRow* row = RowAt(point); + if (row == NULL) + return AbstractTable::GetToolTipAt(point, _tip); + + TreeTableRow* treeRow = dynamic_cast(row); + // get the table column + BColumn* column = ColumnAt(point); + + int32 columnIndex = column != NULL ? column->LogicalFieldNum() : -1; + + TreeTablePath path; + _GetPathForNode(treeRow->Node(), path); + + return fToolTipProvider->GetToolTipForTablePath(path, columnIndex, + _tip); +} + + void TreeTable::SelectionChanged() { diff --git a/src/apps/debuganalyzer/gui/table/TreeTable.h b/src/apps/debuganalyzer/gui/table/TreeTable.h index a4758690e3..b006e083f1 100644 --- a/src/apps/debuganalyzer/gui/table/TreeTable.h +++ b/src/apps/debuganalyzer/gui/table/TreeTable.h @@ -1,5 +1,6 @@ /* * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. + * Copyright 2012, Rene Gollent, rene@gollent.com. * Distributed under the terms of the MIT License. */ #ifndef TREE_TABLE_H @@ -122,6 +123,17 @@ private: }; +class TreeTableToolTipProvider { +public: + virtual ~TreeTableToolTipProvider(); + + virtual bool GetToolTipForTablePath( + const TreeTablePath& path, + int32 columnIndex, BToolTip** _tip) = 0; + // columnIndex can be -1, if not in a column +}; + + class TreeTableListener { public: virtual ~TreeTableListener(); @@ -157,6 +169,11 @@ public: bool SetTreeTableModel(TreeTableModel* model); TreeTableModel* GetTreeTableModel() const { return fModel; } + void SetToolTipProvider( + TreeTableToolTipProvider* toolTipProvider); + TreeTableToolTipProvider* ToolTipProvider() const + { return fToolTipProvider; } + TreeTableSelectionModel* SelectionModel(); void SelectNode(const TreeTablePath& path, @@ -177,6 +194,8 @@ public: TreeTableListener* listener); protected: + virtual bool GetToolTipAt(BPoint point, BToolTip** _tip); + virtual void SelectionChanged(); virtual AbstractColumn* CreateColumn(TableColumn* column); @@ -226,6 +245,7 @@ private: private: TreeTableModel* fModel; + TreeTableToolTipProvider* fToolTipProvider; TreeTableNode* fRootNode; TreeTableSelectionModel fSelectionModel; ListenerList fListeners;