// 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 EXT_NUMBERFIELD_H_
#define EXT_NUMBERFIELD_H_

#include <Wt/Ext/LineEdit>

namespace Wt {
  namespace Ext {

/*! \class NumberField Wt/Ext/NumberField Wt/Ext/NumberField
 *  \brief A form field for editing a number.
 *
 * You may \link FormField::setValidator() set\endlink a WIntValidator
 * or WDoubleValidator to specify in more detail the valid range, and
 * the client-side validation messages.
 *
 * \ingroup ext
 */
class WT_EXT_API NumberField : public LineEdit
{
public:
  /*! \brief Create a new number field.
   */
  NumberField(WContainerWidget *parent = 0);

  /*! \brief Set the value.
   */
  void setValue(double value);

  /*! \brief Return the value.
   */
  double value() const;

  /*! \brief Set the maximal decimal precision
   */
  void setDecimalPrecision(int decimals);

  /*! \brief Return the decimal precision.
   */
  int decimalPrecision() const { return decimals_; }

protected:
  virtual void createConfig(std::ostream& config);

private:
  int decimals_;

  virtual std::string createJS(DomElement *inContainer);
};

  }
}

#endif // EXT_NUMBERFIELD_H_
