// This may look like C code, but it's really -*- C++ -*-
/*
 * Copyright (C) 2008 Emweb bvba, Kessel-Lo, Belgium.
 *
 * See the LICENSE file for terms of use.
 */
#ifndef WDEFAULT_LAYOUT_H_
#define WDEFAULT_LAYOUT_H_

#include <vector>

#include <Wt/WLayout>

namespace Wt {

/*! \class WDefaultLayout Wt/WDefaultLayout Wt/WDefaultLayout
 *  \brief A default layout manager.
 *
 * The default layout does not attempt to resize any of the widgets,
 * and puts all widgets vertically above each other.
 *
 * \note This layout manager is applicable only to Ext::Container
 * container widgets. However, its behaviour is equivalent to not
 * using a layout manager on a WContainerWidget and adding contents
 * directly using WContainerWidget::addWidget().
 */
class WT_API WDefaultLayout : public WLayout
{
public:
  /*! \brief Creates a new %WDefaultLayout
   */
  WDefaultLayout(WWidget *parent = 0);

  /*! \brief Destructor.
   */
  ~WDefaultLayout();

  /*! \brief Adds a layout <i>item</i>.
   *
   * The item may be a widget or nested layout, and is added below the last
   * added item.
   *
   * \sa removeItem(WLayoutItem *), addWidget(WWidget *)
   */
  virtual void addItem(WLayoutItem *item);
  virtual void removeItem(WLayoutItem *item);
  virtual WLayoutItem *itemAt(int index) const;
  virtual int indexOf(WLayoutItem *item) const;
  virtual int count() const;
  virtual void clear();

private:
  std::vector<WLayoutItem *> items_;
};

}

#endif // WDEFAULT_LAYOUT_H_
