[haiku-commits] r33590 - haiku/trunk/src/apps/debuganalyzer/gui/table

  • From: ingo_weinhold@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Thu, 15 Oct 2009 06:40:04 +0200 (CEST)

Author: bonefish
Date: 2009-10-15 06:40:04 +0200 (Thu, 15 Oct 2009)
New Revision: 33590
Changeset: http://dev.haiku-os.org/changeset/33590/haiku

Modified:
   haiku/trunk/src/apps/debuganalyzer/gui/table/Table.cpp
   haiku/trunk/src/apps/debuganalyzer/gui/table/Table.h
Log:
Added TableToolTipProvider interface that can be set on a Table to easily
provide per cell tool tips.


Modified: haiku/trunk/src/apps/debuganalyzer/gui/table/Table.cpp
===================================================================
--- haiku/trunk/src/apps/debuganalyzer/gui/table/Table.cpp      2009-10-15 
04:34:59 UTC (rev 33589)
+++ haiku/trunk/src/apps/debuganalyzer/gui/table/Table.cpp      2009-10-15 
04:40:04 UTC (rev 33590)
@@ -194,7 +194,14 @@
 }
 
 
+// #pragma mark - TableToolTipProvider
 
+
+TableToolTipProvider::~TableToolTipProvider()
+{
+}
+
+
 // #pragma mark - TableListener
 
 
@@ -342,6 +349,7 @@
        :
        AbstractTable(name, flags, borderStyle, showHorizontalScrollbar),
        fModel(NULL),
+       fToolTipProvider(NULL),
        fSelectionModel(this),
        fIgnoreSelectionChange(0)
 {
@@ -353,6 +361,7 @@
        :
        AbstractTable(name, flags, borderStyle, showHorizontalScrollbar),
        fModel(NULL),
+       fToolTipProvider(NULL),
        fSelectionModel(this),
        fIgnoreSelectionChange(0)
 {
@@ -399,6 +408,13 @@
 }
 
 
+void
+Table::SetToolTipProvider(TableToolTipProvider* toolTipProvider)
+{
+       fToolTipProvider = toolTipProvider;
+}
+
+
 TableSelectionModel*
 Table::SelectionModel()
 {
@@ -452,6 +468,27 @@
 }
 
 
+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
 Table::SelectionChanged()
 {

Modified: haiku/trunk/src/apps/debuganalyzer/gui/table/Table.h
===================================================================
--- haiku/trunk/src/apps/debuganalyzer/gui/table/Table.h        2009-10-15 
04:34:59 UTC (rev 33589)
+++ haiku/trunk/src/apps/debuganalyzer/gui/table/Table.h        2009-10-15 
04:40:04 UTC (rev 33590)
@@ -79,6 +79,16 @@
 };
 
 
+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 {
 public:
        virtual                                         ~TableListener();
@@ -102,6 +112,11 @@
                        void                            
SetTableModel(TableModel* model);
                        TableModel*                     GetTableModel() const   
{ return fModel; }
 
+                       void                            SetToolTipProvider(
+                                                                       
TableToolTipProvider* toolTipProvider);
+                       TableToolTipProvider* ToolTipProvider() const
+                                                                       { 
return fToolTipProvider; }
+
                        TableSelectionModel* SelectionModel();
 
                        void                            SelectRow(int32 
rowIndex, bool extendSelection);
@@ -112,6 +127,8 @@
                        void                            
RemoveTableListener(TableListener* listener);
 
 protected:
+       virtual bool                            GetToolTipAt(BPoint point, 
BToolTip** _tip);
+
        virtual void                            SelectionChanged();
 
        virtual AbstractColumn*         CreateColumn(TableColumn* column);
@@ -140,6 +157,7 @@
 
 private:
                        TableModel*                     fModel;
+                       TableToolTipProvider* fToolTipProvider;
                        RowList                         fRows;
                        TableSelectionModel     fSelectionModel;
                        ListenerList            fListeners;


Other related posts:

  • » [haiku-commits] r33590 - haiku/trunk/src/apps/debuganalyzer/gui/table - ingo_weinhold