mirror of
https://github.com/pocoproject/poco.git
synced 2025-10-17 19:25:53 +02:00
handled ajaxevents
This commit is contained in:
@@ -209,6 +209,10 @@
|
|||||||
<Filter
|
<Filter
|
||||||
Name="Header Files"
|
Name="Header Files"
|
||||||
>
|
>
|
||||||
|
<File
|
||||||
|
RelativePath=".\include\Poco\WebWidgets\AjaxDelegate.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\include\Poco\WebWidgets\Alignment.h"
|
RelativePath=".\include\Poco\WebWidgets\Alignment.h"
|
||||||
>
|
>
|
||||||
@@ -293,6 +297,10 @@
|
|||||||
<Filter
|
<Filter
|
||||||
Name="Source Files"
|
Name="Source Files"
|
||||||
>
|
>
|
||||||
|
<File
|
||||||
|
RelativePath=".\src\AjaxDelegate.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\src\Cell.cpp"
|
RelativePath=".\src\Cell.cpp"
|
||||||
>
|
>
|
||||||
|
@@ -208,6 +208,10 @@
|
|||||||
<Filter
|
<Filter
|
||||||
Name="Header Files"
|
Name="Header Files"
|
||||||
>
|
>
|
||||||
|
<File
|
||||||
|
RelativePath=".\include\Poco\WebWidgets\AjaxDelegate.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\include\Poco\WebWidgets\Alignment.h"
|
RelativePath=".\include\Poco\WebWidgets\Alignment.h"
|
||||||
>
|
>
|
||||||
@@ -292,6 +296,10 @@
|
|||||||
<Filter
|
<Filter
|
||||||
Name="Source Files"
|
Name="Source Files"
|
||||||
>
|
>
|
||||||
|
<File
|
||||||
|
RelativePath=".\src\AjaxDelegate.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\src\Cell.cpp"
|
RelativePath=".\src\Cell.cpp"
|
||||||
>
|
>
|
||||||
|
158
WebWidgets/include/Poco/WebWidgets/AjaxDelegate.h
Normal file
158
WebWidgets/include/Poco/WebWidgets/AjaxDelegate.h
Normal file
@@ -0,0 +1,158 @@
|
|||||||
|
//
|
||||||
|
// AjaxDelegate.h
|
||||||
|
//
|
||||||
|
// $Id: //poco/Main/WebWidgets/include/Poco/WebWidgets/AjaxDelegate.h#2 $
|
||||||
|
//
|
||||||
|
// Library: WebWidgets
|
||||||
|
// Package: Core
|
||||||
|
// Module: AjaxDelegate
|
||||||
|
//
|
||||||
|
// Definition of the AjaxDelegate class.
|
||||||
|
//
|
||||||
|
// Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
|
||||||
|
// and Contributors.
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person or organization
|
||||||
|
// obtaining a copy of the software and accompanying documentation covered by
|
||||||
|
// this license (the "Software") to use, reproduce, display, distribute,
|
||||||
|
// execute, and transmit the Software, and to prepare derivative works of the
|
||||||
|
// Software, and to permit third-parties to whom the Software is furnished to
|
||||||
|
// do so, all subject to the following:
|
||||||
|
//
|
||||||
|
// The copyright notices in the Software and this entire statement, including
|
||||||
|
// the above license grant, this restriction and the following disclaimer,
|
||||||
|
// must be included in all copies of the Software, in whole or in part, and
|
||||||
|
// all derivative works of the Software, unless such copies or derivative
|
||||||
|
// works are solely in the form of machine-executable object code generated by
|
||||||
|
// a source language processor.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||||
|
// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||||
|
// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||||
|
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
// DEALINGS IN THE SOFTWARE.
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef WebWidgets_AjaxDelegate_INCLUDED
|
||||||
|
#define WebWidgets_AjaxDelegate_INCLUDED
|
||||||
|
|
||||||
|
|
||||||
|
#include "Poco/WebWidgets/WebWidgets.h"
|
||||||
|
#include "Poco/RefCountedObject.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace Poco {
|
||||||
|
namespace Net {
|
||||||
|
class NameValueCollection;
|
||||||
|
class HTTPServerResponse;
|
||||||
|
}
|
||||||
|
namespace WebWidgets {
|
||||||
|
|
||||||
|
|
||||||
|
class BasicAjaxDelegateImpl;
|
||||||
|
|
||||||
|
|
||||||
|
struct AjaxParameters
|
||||||
|
{
|
||||||
|
const Poco::Net::NameValueCollection& args;
|
||||||
|
Poco::Net::HTTPServerResponse& response;
|
||||||
|
bool handled;
|
||||||
|
AjaxParameters(const Poco::Net::NameValueCollection& args, Poco::Net::HTTPServerResponse& response);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class WebWidgets_API AjaxDelegate
|
||||||
|
/// AjaxDelegate implements a very simple, lightweight delegate mechanism.
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
AjaxDelegate();
|
||||||
|
/// Creates a AjaxDelegate for void.
|
||||||
|
|
||||||
|
AjaxDelegate(const AjaxDelegate& delegate);
|
||||||
|
/// Creates a AjaxDelegate by copying another one.
|
||||||
|
|
||||||
|
AjaxDelegate(BasicAjaxDelegateImpl* pImpl);
|
||||||
|
/// Creates a AjaxDelegate using the given BasicAjaxDelegateImpl.
|
||||||
|
|
||||||
|
~AjaxDelegate();
|
||||||
|
/// Destroys the AjaxDelegate.
|
||||||
|
|
||||||
|
void swap(AjaxDelegate& delegate);
|
||||||
|
/// Swaps the AjaxDelegate with another one.
|
||||||
|
|
||||||
|
AjaxDelegate& operator = (const AjaxDelegate& delegate);
|
||||||
|
/// Assignment operator.
|
||||||
|
|
||||||
|
void operator () (void* pSender, const Poco::Net::NameValueCollection& args, Poco::Net::HTTPServerResponse& response, bool& handled) const;
|
||||||
|
/// Invokes the delegate.
|
||||||
|
|
||||||
|
operator void* () const;
|
||||||
|
bool operator ! () const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
BasicAjaxDelegateImpl* _pImpl;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class WebWidgets_API BasicAjaxDelegateImpl: public Poco::RefCountedObject
|
||||||
|
/// The common base class for all AjaxDelegateImpl instantiations.
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
BasicAjaxDelegateImpl();
|
||||||
|
/// Creates the BasicAjaxDelegateImpl.
|
||||||
|
|
||||||
|
virtual void invoke(void* pSender, AjaxParameters& params) = 0;
|
||||||
|
/// Invokes the delegate.
|
||||||
|
|
||||||
|
protected:
|
||||||
|
~BasicAjaxDelegateImpl();
|
||||||
|
/// Destroys the AjaxDelegate.
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
template <class C>
|
||||||
|
class AjaxDelegateImpl: public BasicAjaxDelegateImpl
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef void (C::*Callback)(void*, AjaxParameters&);
|
||||||
|
|
||||||
|
AjaxDelegateImpl(C& object, Callback method):
|
||||||
|
/// Creates the AjaxDelegateImpl
|
||||||
|
_pObject(&object),
|
||||||
|
_method(method)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void invoke(void* pSender, AjaxParameters& params)
|
||||||
|
{
|
||||||
|
(_pObject->*_method)(pSender, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
~AjaxDelegateImpl()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
AjaxDelegateImpl();
|
||||||
|
|
||||||
|
C* _pObject;
|
||||||
|
Callback _method;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
template <class C>
|
||||||
|
AjaxDelegate ajaxDelegate(C& object, void (C::*method)(void*, AjaxParameters&))
|
||||||
|
/// "Constructor" function for a AjaxDelegate.
|
||||||
|
{
|
||||||
|
return AjaxDelegate(new AjaxDelegateImpl<C>(object, method));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} } // namespace Poco::WebWidgets
|
||||||
|
|
||||||
|
|
||||||
|
#endif // WebWidgets_AjaxDelegate_INCLUDED
|
@@ -42,6 +42,7 @@
|
|||||||
|
|
||||||
#include "Poco/WebWidgets/Control.h"
|
#include "Poco/WebWidgets/Control.h"
|
||||||
#include "Poco/WebWidgets/Event.h"
|
#include "Poco/WebWidgets/Event.h"
|
||||||
|
#include "Poco/WebWidgets/AjaxDelegate.h"
|
||||||
#include "Poco/WebWidgets/JavaScriptEvent.h"
|
#include "Poco/WebWidgets/JavaScriptEvent.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -59,6 +60,8 @@ public:
|
|||||||
typedef Poco::AutoPtr<Button> Ptr;
|
typedef Poco::AutoPtr<Button> Ptr;
|
||||||
typedef Event<Button> ButtonEvent;
|
typedef Event<Button> ButtonEvent;
|
||||||
|
|
||||||
|
JavaScriptEvent<AjaxParameters> ajaxButtonClicked;
|
||||||
|
|
||||||
JavaScriptEvent<ButtonEvent> buttonClicked;
|
JavaScriptEvent<ButtonEvent> buttonClicked;
|
||||||
|
|
||||||
Button(const std::string& name);
|
Button(const std::string& name);
|
||||||
@@ -70,6 +73,9 @@ public:
|
|||||||
Button();
|
Button();
|
||||||
/// Creates an anonymous Button.
|
/// Creates an anonymous Button.
|
||||||
|
|
||||||
|
void fireAjaxButtonClicked(void* pSender, AjaxParameters& params);
|
||||||
|
/// Fires the ajaxButtonClicked event.
|
||||||
|
|
||||||
void fireButtonClicked(void* pSender);
|
void fireButtonClicked(void* pSender);
|
||||||
/// Fires the buttonClicked event.
|
/// Fires the buttonClicked event.
|
||||||
|
|
||||||
|
@@ -41,6 +41,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "Poco/WebWidgets/Cell.h"
|
#include "Poco/WebWidgets/Cell.h"
|
||||||
|
#include "Poco/WebWidgets/AjaxDelegate.h"
|
||||||
#include "Poco/WebWidgets/Delegate.h"
|
#include "Poco/WebWidgets/Delegate.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -56,6 +57,8 @@ public:
|
|||||||
|
|
||||||
static const std::string EV_BUTTONCLICKED;
|
static const std::string EV_BUTTONCLICKED;
|
||||||
|
|
||||||
|
AjaxDelegate ajaxButtonClicked;
|
||||||
|
|
||||||
Delegate buttonClicked;
|
Delegate buttonClicked;
|
||||||
|
|
||||||
ButtonCell(View* pOwner);
|
ButtonCell(View* pOwner);
|
||||||
|
@@ -43,7 +43,7 @@
|
|||||||
#include "Poco/WebWidgets/WebWidgets.h"
|
#include "Poco/WebWidgets/WebWidgets.h"
|
||||||
#include "Poco/WebWidgets/JSDelegate.h"
|
#include "Poco/WebWidgets/JSDelegate.h"
|
||||||
#include "Poco/AbstractEvent.h"
|
#include "Poco/AbstractEvent.h"
|
||||||
#include "Poco/DefaultStrategy.h"
|
#include "Poco/FIFOStrategy.h"
|
||||||
#include "Poco/AbstractDelegate.h"
|
#include "Poco/AbstractDelegate.h"
|
||||||
#include "Poco/CompareFunctions.h"
|
#include "Poco/CompareFunctions.h"
|
||||||
#include <list>
|
#include <list>
|
||||||
@@ -63,11 +63,11 @@ enum ServerCallback
|
|||||||
|
|
||||||
template <class TArgs>
|
template <class TArgs>
|
||||||
class JavaScriptEvent: public Poco::AbstractEvent <
|
class JavaScriptEvent: public Poco::AbstractEvent <
|
||||||
TArgs, Poco::DefaultStrategy<TArgs, Poco::AbstractDelegate<TArgs>, Poco::p_less<Poco::AbstractDelegate<TArgs> > >,
|
TArgs, Poco::FIFOStrategy<TArgs, Poco::AbstractDelegate<TArgs>, Poco::p_less<Poco::AbstractDelegate<TArgs> > >,
|
||||||
Poco::AbstractDelegate<TArgs>
|
Poco::AbstractDelegate<TArgs>
|
||||||
>
|
>
|
||||||
/// Event class used to handle JavaScriptEvents. Allows to register two different types
|
/// Event class used to handle JavaScriptEvents. Allows to register two different types
|
||||||
/// of delegates. The standard delegates, as known from Poco::BasicEvent and JSDelegates
|
/// of delegates. The standard delegates, as known from Poco::FIFOEvent and JSDelegates
|
||||||
/// which will be embedded into the WebPage when the Parser generates the site.
|
/// which will be embedded into the WebPage when the Parser generates the site.
|
||||||
/// Per default a server callback happens only when local listeners are registered.
|
/// Per default a server callback happens only when local listeners are registered.
|
||||||
{
|
{
|
||||||
|
139
WebWidgets/src/AjaxDelegate.cpp
Normal file
139
WebWidgets/src/AjaxDelegate.cpp
Normal file
@@ -0,0 +1,139 @@
|
|||||||
|
//
|
||||||
|
// AjaxDelegate.cpp
|
||||||
|
//
|
||||||
|
// $Id: //poco/Main/WebWidgets/src/AjaxDelegate.cpp#2 $
|
||||||
|
//
|
||||||
|
// Library: WebWidgets
|
||||||
|
// Package: Core
|
||||||
|
// Module: AjaxDelegate
|
||||||
|
//
|
||||||
|
// Copyright (c) 2008, Applied Informatics Software Engineering GmbH.
|
||||||
|
// and Contributors.
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person or organization
|
||||||
|
// obtaining a copy of the software and accompanying documentation covered by
|
||||||
|
// this license (the "Software") to use, reproduce, display, distribute,
|
||||||
|
// execute, and transmit the Software, and to prepare derivative works of the
|
||||||
|
// Software, and to permit third-parties to whom the Software is furnished to
|
||||||
|
// do so, all subject to the following:
|
||||||
|
//
|
||||||
|
// The copyright notices in the Software and this entire statement, including
|
||||||
|
// the above license grant, this restriction and the following disclaimer,
|
||||||
|
// must be included in all copies of the Software, in whole or in part, and
|
||||||
|
// all derivative works of the Software, unless such copies or derivative
|
||||||
|
// works are solely in the form of machine-executable object code generated by
|
||||||
|
// a source language processor.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||||
|
// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||||
|
// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||||
|
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
// DEALINGS IN THE SOFTWARE.
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
#include "Poco/WebWidgets/AjaxDelegate.h"
|
||||||
|
#include "Poco/Net/NameValueCollection.h"
|
||||||
|
#include "Poco/Net/HTTPServerResponse.h"
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
|
|
||||||
|
namespace Poco {
|
||||||
|
namespace WebWidgets {
|
||||||
|
|
||||||
|
|
||||||
|
AjaxParameters::AjaxParameters(const Poco::Net::NameValueCollection& a, Poco::Net::HTTPServerResponse& r):
|
||||||
|
args(a),
|
||||||
|
response(r),
|
||||||
|
handled(false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// AjaxDelegate
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
AjaxDelegate::AjaxDelegate():
|
||||||
|
_pImpl(0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
AjaxDelegate::AjaxDelegate(const AjaxDelegate& delegate):
|
||||||
|
_pImpl(delegate._pImpl)
|
||||||
|
{
|
||||||
|
if (_pImpl)
|
||||||
|
_pImpl->duplicate();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
AjaxDelegate::AjaxDelegate(BasicAjaxDelegateImpl* pImpl):
|
||||||
|
_pImpl(pImpl)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
AjaxDelegate::~AjaxDelegate()
|
||||||
|
{
|
||||||
|
if (_pImpl)
|
||||||
|
_pImpl->release();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void AjaxDelegate::swap(AjaxDelegate& delegate)
|
||||||
|
{
|
||||||
|
std::swap(_pImpl, delegate._pImpl);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
AjaxDelegate& AjaxDelegate::operator = (const AjaxDelegate& delegate)
|
||||||
|
{
|
||||||
|
AjaxDelegate tmp(delegate);
|
||||||
|
swap(tmp);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void AjaxDelegate::operator () (void* pSender, const Poco::Net::NameValueCollection& args, Poco::Net::HTTPServerResponse& response, bool& handled) const
|
||||||
|
{
|
||||||
|
if (_pImpl)
|
||||||
|
{
|
||||||
|
AjaxParameters params(args, response);
|
||||||
|
_pImpl->invoke(pSender, params);
|
||||||
|
handled = params.handled;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
AjaxDelegate::operator void* () const
|
||||||
|
{
|
||||||
|
return _pImpl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool AjaxDelegate::operator ! () const
|
||||||
|
{
|
||||||
|
return _pImpl == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// BasicAjaxDelegateImpl
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
BasicAjaxDelegateImpl::BasicAjaxDelegateImpl()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BasicAjaxDelegateImpl::~BasicAjaxDelegateImpl()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} } // namespace Poco::WebWidgets
|
@@ -102,6 +102,7 @@ void Button::init(Cell::Ptr ptrCell)
|
|||||||
ButtonCell::Ptr pCell = ptrCell.cast<ButtonCell>();
|
ButtonCell::Ptr pCell = ptrCell.cast<ButtonCell>();
|
||||||
poco_check_ptr (pCell);
|
poco_check_ptr (pCell);
|
||||||
pCell->buttonClicked = delegate(*this, &Button::fireButtonClicked);
|
pCell->buttonClicked = delegate(*this, &Button::fireButtonClicked);
|
||||||
|
pCell->ajaxButtonClicked = ajaxDelegate(*this, &Button::fireAjaxButtonClicked);
|
||||||
setCell(pCell);
|
setCell(pCell);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -113,6 +114,12 @@ void Button::init()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Button::fireAjaxButtonClicked(void* pSender, AjaxParameters& params)
|
||||||
|
{
|
||||||
|
ajaxButtonClicked(pSender, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void Button::fireButtonClicked(void* pSender)
|
void Button::fireButtonClicked(void* pSender)
|
||||||
{
|
{
|
||||||
ButtonEvent clickedEvent(this);
|
ButtonEvent clickedEvent(this);
|
||||||
|
@@ -66,7 +66,7 @@ ButtonCell::~ButtonCell()
|
|||||||
|
|
||||||
void ButtonCell::handleForm(const std::string& field, const std::string& value)
|
void ButtonCell::handleForm(const std::string& field, const std::string& value)
|
||||||
{
|
{
|
||||||
buttonClicked(this);
|
//buttonClicked(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -75,10 +75,14 @@ void ButtonCell::handleAjaxRequest(const Poco::Net::NameValueCollection& args, P
|
|||||||
const std::string& ev = args[RequestHandler::KEY_EVID];
|
const std::string& ev = args[RequestHandler::KEY_EVID];
|
||||||
if (ev == EV_BUTTONCLICKED)
|
if (ev == EV_BUTTONCLICKED)
|
||||||
{
|
{
|
||||||
|
bool handled(false);
|
||||||
|
ajaxButtonClicked(this, args, response, handled);
|
||||||
|
if (!handled)
|
||||||
|
response.send();
|
||||||
buttonClicked(this);
|
buttonClicked(this);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
response.send();
|
response.send();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -37,6 +37,7 @@
|
|||||||
#include "Poco/WebWidgets/WebApplication.h"
|
#include "Poco/WebWidgets/WebApplication.h"
|
||||||
#include "Poco/WebWidgets/RequestProcessor.h"
|
#include "Poco/WebWidgets/RequestProcessor.h"
|
||||||
#include "Poco/WebWidgets/SubmitButtonCell.h"
|
#include "Poco/WebWidgets/SubmitButtonCell.h"
|
||||||
|
#include "Poco/WebWidgets/SubmitButton.h"
|
||||||
#include "Poco/WebWidgets/WebWidgetsException.h"
|
#include "Poco/WebWidgets/WebWidgetsException.h"
|
||||||
#include "Poco/Net/HTMLForm.h"
|
#include "Poco/Net/HTMLForm.h"
|
||||||
#include "Poco/Net/HTTPServerRequest.h"
|
#include "Poco/Net/HTTPServerRequest.h"
|
||||||
@@ -213,7 +214,14 @@ void WebApplication::notifySubmitButton(Renderable::ID id)
|
|||||||
if (it == _submitButtons.end())
|
if (it == _submitButtons.end())
|
||||||
throw WebWidgetsException("failed to find submitButton with id " + Poco::NumberFormatter::format(id));
|
throw WebWidgetsException("failed to find submitButton with id " + Poco::NumberFormatter::format(id));
|
||||||
|
|
||||||
it->second->buttonClicked(this);
|
View* pOwner = it->second->getOwner();
|
||||||
|
poco_assert (pOwner);
|
||||||
|
SubmitButton* pSubmit = dynamic_cast<SubmitButton*>(pOwner);
|
||||||
|
if (pSubmit)
|
||||||
|
{
|
||||||
|
Button::ButtonEvent clickedEvent(pSubmit);
|
||||||
|
pSubmit->buttonClicked.notify(pSubmit, clickedEvent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user