root/headers/libs/alm/Column.h
/*
 * Copyright 2006 - 2010, Haiku, Inc. All rights reserved.
 * Distributed under the terms of the MIT License.
 */
#ifndef COLUMN_H
#define COLUMN_H


#include <ObjectList.h>
#include <Referenceable.h>


namespace LinearProgramming {
        class Constraint;
        class LinearSpec;
};


namespace BPrivate {
        class SharedSolver;
};


namespace BALM {


class Area;
class BALMLayout;
class RowColumnManager;
class XTab;
class YTab;


/**
 * Represents a column defined by two x-tabs.
 */
class Column {
public:
                                                                ~Column();

                        XTab*                           Left() const;
                        XTab*                           Right() const;

private:
        friend class BALMLayout;
        friend class BALM::RowColumnManager;
        friend class BPrivate::SharedSolver;

                                                                Column(LinearProgramming::LinearSpec* ls,
                                                                        XTab* left, XTab* right);

                        BReference<XTab>        fLeft;
                        BReference<XTab>        fRight;

                        LinearProgramming::LinearSpec* fLS;
                        LinearProgramming::Constraint* fPrefSizeConstraint;
                                // managed by RowColumnManager

                        BObjectList<Area>       fAreas;
};

}       // namespace BALM

using BALM::Column;

#endif  // COLUMN_H