1 #ifndef DataGridColumnList_h 2 #define DataGridColumnList_h 3 4 #if ENABLE(DATAGRID) 5 6 #include "DataGridColumn.h" 7 8 #include <wtf/PassRefPtr.h> 9 #include <wtf/RefCounted.h> 10 #include <wtf/Vector.h> 11 12 namespace WebCore { 13 14 class AtomicString; 15 class HTMLDataGridElement; 16 17 class DataGridColumnList : public RefCounted<DataGridColumnList> { 18 friend class DataGridColumn; 19 public: 20 static PassRefPtr<DataGridColumnList> create(HTMLDataGridElement* grid) 21 { 22 return adoptRef(new DataGridColumnList(grid)); 23 } 24 25 ~DataGridColumnList(); 26 27 unsigned length() const { return m_columns.size(); } 28 29 DataGridColumn* item(unsigned index) const { return m_columns[index].get(); } 30 DataGridColumn* itemWithName(const AtomicString&) const; 31 32 DataGridColumn* primaryColumn() const { return m_primaryColumn.get(); } 33 34 DataGridColumn* sortColumn() const { return m_sortColumn.get(); } 35 36 DataGridColumn* add(const String& id, const String& label, const String& type, bool primary, unsigned short sortable); 37 DataGridColumn* add(DataGridColumn*); 38 void remove(DataGridColumn*); 39 void move(DataGridColumn*, unsigned long index); 40 void clear(); 41 42 HTMLDataGridElement* dataGrid() const { return m_dataGrid; } 43 void clearDataGrid() { m_dataGrid = 0; } 44 45 void setDataGridNeedsLayout(); 46 47 private: 48 DataGridColumnList(HTMLDataGridElement*); 49 50 void primaryColumnChanged(DataGridColumn*); 51 52 HTMLDataGridElement* m_dataGrid; // Weak reference. Will be nulled out when our tree goes away. 53 54 Vector<RefPtr<DataGridColumn> > m_columns; 55 RefPtr<DataGridColumn> m_primaryColumn; 56 RefPtr<DataGridColumn> m_sortColumn; 57 }; 58 59 } // namespace WebCore 60 61 #endif 62 63 #endif // DataGridColumnList_h 64