Add Tooltip support to TreeTable.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright 2009, Ingo Weinhold, [email protected].
|
||||
* Copyright 2012, Rene Gollent, [email protected].
|
||||
* 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<TreeTableRow*>(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()
|
||||
{
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright 2009, Ingo Weinhold, [email protected].
|
||||
* Copyright 2012, Rene Gollent, [email protected].
|
||||
* 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;
|
||||
|
||||
Reference in New Issue
Block a user