10bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/* 20bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (C) 2009 Apple Inc. All rights reserved. 30bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 40bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Redistribution and use in source and binary forms, with or without 50bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * modification, are permitted provided that the following conditions 60bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * are met: 70bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 1. Redistributions of source code must retain the above copyright 80bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * notice, this list of conditions and the following disclaimer. 90bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 2. Redistributions in binary form must reproduce the above copyright 100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * notice, this list of conditions and the following disclaimer in the 110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * documentation and/or other materials provided with the distribution. 120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch */ 250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#ifndef DataGridColumn_h 270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#define DataGridColumn_h 280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#if ENABLE(DATAGRID) 300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "RenderStyle.h" 320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <wtf/PassRefPtr.h> 330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <wtf/RefCounted.h> 34f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick#include <wtf/text/AtomicString.h> 350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochnamespace WebCore { 370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochclass DataGridColumnList; 390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochclass DataGridColumn : public RefCounted<DataGridColumn> { 410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochpublic: 420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch static PassRefPtr<DataGridColumn> create(const String& columnID, const String& label, const String& type, bool primary, unsigned short sortable) 430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch { 440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return adoptRef(new DataGridColumn(columnID, label, type, primary, sortable)); 450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch const AtomicString& id() const { return m_id; } 480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void setId(const AtomicString& id) { m_id = id; columnChanged(); } 490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch const AtomicString& label() const { return m_label; } 510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void setLabel(const AtomicString& label) { m_label = label; columnChanged(); } 520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch const AtomicString& type() const { return m_type; } 540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void setType(const AtomicString& type) { m_type = type; columnChanged(); } 550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch unsigned short sortable() const { return m_sortable; } 570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void setSortable(unsigned short sortable) { m_sortable = sortable; columnChanged(); } 580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch unsigned short sortDirection() const { return m_sortDirection; } 600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void setSortDirection(unsigned short sortDirection) { m_sortDirection = sortDirection; columnChanged(); } 610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch bool primary() const { return m_primary; } 630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void setPrimary(bool); 640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void setColumnList(DataGridColumnList* list) 660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch { 670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_columns = list; 680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_columnStyle = 0; 690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_headerStyle = 0; 700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch m_rect = IntRect(); 710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch RenderStyle* columnStyle() const { return m_columnStyle.get(); } 740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void setColumnStyle(PassRefPtr<RenderStyle> style) { m_columnStyle = style; } 750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch RenderStyle* headerStyle() const { return m_headerStyle.get(); } 770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void setHeaderStyle(PassRefPtr<RenderStyle> style) { m_headerStyle = style; } 780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch const IntRect& rect() const { return m_rect; } 800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void setRect(const IntRect& rect) { m_rect = rect; } 810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochprivate: 830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch DataGridColumn(const String& columnID, const String& label, const String& type, bool primary, unsigned short sortable) 840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch : m_columns(0) 850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch , m_id(columnID) 860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch , m_label(label) 870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch , m_type(type) 880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch , m_primary(primary) 890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch , m_sortable(sortable) 900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch , m_sortDirection(0) 910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch { 920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void columnChanged(); 950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch DataGridColumnList* m_columns; // Not refcounted. The columns list will null out our reference when it goes away. 970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch AtomicString m_id; 990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch AtomicString m_label; 1000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch AtomicString m_type; 1010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch bool m_primary; 1030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch unsigned short m_sortable; 1050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch unsigned short m_sortDirection; 1060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch RefPtr<RenderStyle> m_columnStyle; // The style used to render the column background behind the row cells. 1080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch RefPtr<RenderStyle> m_headerStyle; // The style used to render the column header above the row cells. 1090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch IntRect m_rect; 1110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 1120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} // namespace WebCore 1140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#endif 1160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#endif // DataGridColumn_h 118