Home | History | Annotate | Download | only in html
      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