Added TableToolTipProvider interface that can be set on a Table to easily
provide per cell tool tips. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33590 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -194,6 +194,13 @@ TableSelectionModel::_Update()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// #pragma mark - TableToolTipProvider
|
||||||
|
|
||||||
|
|
||||||
|
TableToolTipProvider::~TableToolTipProvider()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// #pragma mark - TableListener
|
// #pragma mark - TableListener
|
||||||
|
|
||||||
@@ -342,6 +349,7 @@ Table::Table(const char* name, uint32 flags, border_style borderStyle,
|
|||||||
:
|
:
|
||||||
AbstractTable(name, flags, borderStyle, showHorizontalScrollbar),
|
AbstractTable(name, flags, borderStyle, showHorizontalScrollbar),
|
||||||
fModel(NULL),
|
fModel(NULL),
|
||||||
|
fToolTipProvider(NULL),
|
||||||
fSelectionModel(this),
|
fSelectionModel(this),
|
||||||
fIgnoreSelectionChange(0)
|
fIgnoreSelectionChange(0)
|
||||||
{
|
{
|
||||||
@@ -353,6 +361,7 @@ Table::Table(TableModel* model, const char* name, uint32 flags,
|
|||||||
:
|
:
|
||||||
AbstractTable(name, flags, borderStyle, showHorizontalScrollbar),
|
AbstractTable(name, flags, borderStyle, showHorizontalScrollbar),
|
||||||
fModel(NULL),
|
fModel(NULL),
|
||||||
|
fToolTipProvider(NULL),
|
||||||
fSelectionModel(this),
|
fSelectionModel(this),
|
||||||
fIgnoreSelectionChange(0)
|
fIgnoreSelectionChange(0)
|
||||||
{
|
{
|
||||||
@@ -399,6 +408,13 @@ Table::SetTableModel(TableModel* model)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
Table::SetToolTipProvider(TableToolTipProvider* toolTipProvider)
|
||||||
|
{
|
||||||
|
fToolTipProvider = toolTipProvider;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
TableSelectionModel*
|
TableSelectionModel*
|
||||||
Table::SelectionModel()
|
Table::SelectionModel()
|
||||||
{
|
{
|
||||||
@@ -452,6 +468,27 @@ Table::RemoveTableListener(TableListener* listener)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool
|
||||||
|
Table::GetToolTipAt(BPoint point, BToolTip** _tip)
|
||||||
|
{
|
||||||
|
if (fToolTipProvider == NULL)
|
||||||
|
return AbstractTable::GetToolTipAt(point, _tip);
|
||||||
|
|
||||||
|
// get the table row
|
||||||
|
BRow* row = RowAt(point);
|
||||||
|
int32 rowIndex = row != NULL ? _ModelIndexOfRow(row) : -1;
|
||||||
|
if (rowIndex < 0)
|
||||||
|
return AbstractTable::GetToolTipAt(point, _tip);
|
||||||
|
|
||||||
|
// get the table column
|
||||||
|
BColumn* column = ColumnAt(point);
|
||||||
|
int32 columnIndex = column != NULL ? column->LogicalFieldNum() : -1;
|
||||||
|
|
||||||
|
return fToolTipProvider->GetToolTipForTableCell(rowIndex, columnIndex,
|
||||||
|
_tip);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Table::SelectionChanged()
|
Table::SelectionChanged()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -79,6 +79,16 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class TableToolTipProvider {
|
||||||
|
public:
|
||||||
|
virtual ~TableToolTipProvider();
|
||||||
|
|
||||||
|
virtual bool GetToolTipForTableCell(int32 rowIndex,
|
||||||
|
int32 columnIndex, BToolTip** _tip) = 0;
|
||||||
|
// columnIndex can be -1, if not in a column
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
class TableListener {
|
class TableListener {
|
||||||
public:
|
public:
|
||||||
virtual ~TableListener();
|
virtual ~TableListener();
|
||||||
@@ -102,6 +112,11 @@ public:
|
|||||||
void SetTableModel(TableModel* model);
|
void SetTableModel(TableModel* model);
|
||||||
TableModel* GetTableModel() const { return fModel; }
|
TableModel* GetTableModel() const { return fModel; }
|
||||||
|
|
||||||
|
void SetToolTipProvider(
|
||||||
|
TableToolTipProvider* toolTipProvider);
|
||||||
|
TableToolTipProvider* ToolTipProvider() const
|
||||||
|
{ return fToolTipProvider; }
|
||||||
|
|
||||||
TableSelectionModel* SelectionModel();
|
TableSelectionModel* SelectionModel();
|
||||||
|
|
||||||
void SelectRow(int32 rowIndex, bool extendSelection);
|
void SelectRow(int32 rowIndex, bool extendSelection);
|
||||||
@@ -112,6 +127,8 @@ public:
|
|||||||
void RemoveTableListener(TableListener* listener);
|
void RemoveTableListener(TableListener* listener);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
virtual bool GetToolTipAt(BPoint point, BToolTip** _tip);
|
||||||
|
|
||||||
virtual void SelectionChanged();
|
virtual void SelectionChanged();
|
||||||
|
|
||||||
virtual AbstractColumn* CreateColumn(TableColumn* column);
|
virtual AbstractColumn* CreateColumn(TableColumn* column);
|
||||||
@@ -140,6 +157,7 @@ private:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
TableModel* fModel;
|
TableModel* fModel;
|
||||||
|
TableToolTipProvider* fToolTipProvider;
|
||||||
RowList fRows;
|
RowList fRows;
|
||||||
TableSelectionModel fSelectionModel;
|
TableSelectionModel fSelectionModel;
|
||||||
ListenerList fListeners;
|
ListenerList fListeners;
|
||||||
|
|||||||
Reference in New Issue
Block a user