impl checked event

This commit is contained in:
Peter Schojer
2008-09-18 11:58:49 +00:00
parent 16d9cb557a
commit b1c5c8b484
4 changed files with 53 additions and 3 deletions

View File

@@ -39,6 +39,8 @@
#include "Poco/WebWidgets/ExtJS/Utility.h"
#include "Poco/WebWidgets/WebApplication.h"
#include "Poco/WebWidgets/ToggleButtonCell.h"
#include "Poco/WebWidgets/ToggleButton.h"
#include "Poco/WebWidgets/RequestHandler.h"
namespace Poco {
@@ -46,6 +48,8 @@ namespace WebWidgets {
namespace ExtJS {
const std::string ToggleButtonCellRenderer::EV_CHECKED("check");
ToggleButtonCellRenderer::ToggleButtonCellRenderer()
{
}
@@ -70,8 +74,29 @@ void ToggleButtonCellRenderer::renderProperties(const ToggleButtonCell* pToggleB
Utility::writeCellProperties(pToggleButtonCell, ostr);
//tooltip is not supported by togglebutton
std::string tooltip (pToggleButtonCell->getToolTip());
if (!tooltip.empty())
ostr << ",listeners:{render:function(c){c.getEl().dom.qtip='" << Utility::safe(tooltip) << "'; c.getEl().dom.qclass = 'x-form-tip';}}";
View* pOwner = pToggleButtonCell->getOwner();
ToggleButton* pButton = dynamic_cast<ToggleButton*>(pOwner);
if (!tooltip.empty() || (pButton && pButton->checked.hasJavaScriptCode()))
{
ostr << ",listeners:{";
bool comma = false;
if (!tooltip.empty())
{
comma = true;
ostr << "render:function(c){c.getEl().dom.qtip='" << Utility::safe(tooltip) << "'; c.getEl().dom.qclass = 'x-form-tip';}";
}
if (pButton && pButton->checked.hasJavaScriptCode())
{
if (comma)
ostr << ",";
Utility::writeJSEvent(ostr, EV_CHECKED, pButton->checked, &ToggleButtonCellRenderer::createCheckedServerCallback, pButton);
}
ostr << "}"; // close listeners
}
if (pToggleButtonCell->getOwner() && !pToggleButtonCell->getOwner()->getName().empty())
{
WebApplication::instance().registerFormProcessor(pToggleButtonCell->getOwner()->getName(), const_cast<ToggleButtonCell*>(pToggleButtonCell));
@@ -79,4 +104,15 @@ void ToggleButtonCellRenderer::renderProperties(const ToggleButtonCell* pToggleB
}
Poco::WebWidgets::JSDelegate ToggleButtonCellRenderer::createCheckedServerCallback(const ToggleButton* pButton)
{
// check : ( Ext.form.Checkbox this, Boolean checked )
static const std::string signature("function(box, bChecked)");
std::map<std::string, std::string> addParams;
addParams.insert(std::make_pair(ToggleButtonCell::FIELD_VAL, "+(bChecked?'true':'false')"));
addParams.insert(std::make_pair(RequestHandler::KEY_EVID, ToggleButtonCell::EV_CHECKED));
return Utility::createServerCallback(signature, addParams, pButton->id(), pButton->checked.getOnSuccess(), pButton->checked.getOnFailure());
}
} } } // namespace Poco::WebWidgets::ExtJS