root/headers/private/shared/TextTable.h
/*
 * Copyright 2013, Ingo Weinhold, ingo_weinhold@gmx.de.
 * Distributed under the terms of the MIT License.
 */
#ifndef TEXT_TABLE_H
#define TEXT_TABLE_H


#include <InterfaceDefs.h>
#include <ObjectList.h>
#include <StringList.h>


namespace BPrivate {


class TextTable {
public:
                                                                TextTable();
                                                                ~TextTable();

                        int32                           CountColumns() const;
                        void                            AddColumn(const BString& title,
                                                                        enum alignment align = B_ALIGN_LEFT,
                                                                        bool canTruncate = false);

                        int32                           CountRows() const;
                        BString                         TextAt(int32 rowIndex, int32 columnIndex) const;
                        void                            SetTextAt(int32 rowIndex, int32 columnIndex,
                                                                        const BString& text);

                        void                            Print(int32 maxWidth);

private:
                        struct Column;
                        typedef BObjectList<Column, true> ColumnList;
                        typedef BObjectList<BStringList, true> RowList;

private:
                        ColumnList                      fColumns;
                        RowList                         fRows;
};


} // namespace BPrivate


using ::BPrivate::TextTable;


#endif  // TEXT_TABLE_H