diff --git a/WebWidgets/ExtJS/src/NumberFieldCellRenderer.cpp b/WebWidgets/ExtJS/src/NumberFieldCellRenderer.cpp index 78ce97566..ff1ca053b 100644 --- a/WebWidgets/ExtJS/src/NumberFieldCellRenderer.cpp +++ b/WebWidgets/ExtJS/src/NumberFieldCellRenderer.cpp @@ -40,6 +40,8 @@ #include "Poco/WebWidgets/ExtJS/Utility.h" #include "Poco/WebWidgets/NumberFieldCell.h" #include "Poco/WebWidgets/WebApplication.h" +#include "Poco/WebWidgets/IntFormatter.h" +#include "Poco/WebWidgets/DoubleFormatter.h" namespace Poco { @@ -63,8 +65,15 @@ void NumberFieldCellRenderer::renderHead(const Renderable* pRenderable, const Re poco_assert_dbg (pRenderable != 0); poco_assert_dbg (pRenderable->type() == typeid(Poco::WebWidgets::NumberFieldCell)); const NumberFieldCell* pCell = static_cast(pRenderable); - + Formatter::Ptr pForm = pCell->getFormatter(); + IntFormatter::Ptr pIntForm = pForm.cast(); + DoubleFormatter::Ptr pDoubleForm = pForm.cast(); ostr << "new Ext.form.NumberField({"; + if (pIntForm) + ostr << "decimalPrecision:0,"; + else if (pDoubleForm) + ostr << "decimalPrecision:" << pDoubleForm->precision() << ","; + TextFieldCellRenderer::writeCellProperties(pCell, ostr); ostr << "})"; diff --git a/WebWidgets/include/Poco/WebWidgets/DoubleFormatter.h b/WebWidgets/include/Poco/WebWidgets/DoubleFormatter.h index 9a1fa0d7e..2a015bfd2 100644 --- a/WebWidgets/include/Poco/WebWidgets/DoubleFormatter.h +++ b/WebWidgets/include/Poco/WebWidgets/DoubleFormatter.h @@ -57,6 +57,9 @@ public: std::string format(const Poco::Any& value) const; Poco::Any parse(const std::string& value) const; + int precision() const; + /// Returns the precision + protected: ~DoubleFormatter(); @@ -65,6 +68,12 @@ private: }; +inline int DoubleFormatter::precision() const +{ + return _precision; +} + + } } // namespace Poco::WebWidgets