added beforerender+afterrender events

This commit is contained in:
Peter Schojer 2008-05-29 13:54:48 +00:00
parent bfddbdb20a
commit 72a0f3c3ff
3 changed files with 29 additions and 1 deletions

View File

@ -53,6 +53,9 @@ class ExtJS_API PageRenderer: public Poco::WebWidgets::Renderer
/// PageRenderer renders an html page
{
public:
static const std::string EV_BEFORERENDER;
static const std::string EV_AFTERRENDER;
PageRenderer();
/// Creates the PageRenderer.

View File

@ -47,6 +47,10 @@ namespace WebWidgets {
namespace ExtJS {
const std::string PageRenderer::EV_BEFORERENDER("beforerender");
const std::string PageRenderer::EV_AFTERRENDER("afterrender");
PageRenderer::PageRenderer()
{
}
@ -89,6 +93,19 @@ void PageRenderer::renderHead(const Renderable* pRenderable, const RenderContext
ostr << "Ext.QuickTips.init();";
// always nest a panel around, so we can get rid of dynamic casts to check for parent type
ostr << "new Ext.Panel({renderTo:'p" << pPage->id() << "',border:false,bodyBorder:false";
if (!pPage->beforeRender.jsDelegates().empty() || !pPage->afterRender.jsDelegates().empty())
{
ostr << ",listeners:{";
bool written = Utility::writeJSEvent(ostr, EV_BEFORERENDER, pPage->beforeRender.jsDelegates());
JavaScriptEvent<Page*>::JSDelegates js = pPage->afterRender.jsDelegates();
js.push_front(jsDelegate("function(){Ext.WindowMgr.each( function(w) {w.show(this);});}"));
if (written && !js.empty())
{
ostr << ",";
}
Utility::writeJSEvent(ostr, EV_AFTERRENDER, js);
ostr << "}";
}
if (pPage->getHeight() > 0)
ostr << ",height:" << pPage->getHeight();
else
@ -113,7 +130,7 @@ void PageRenderer::renderHead(const Renderable* pRenderable, const RenderContext
//close the panel
ostr << "]});";
//auto-show all windows
ostr << "Ext.WindowMgr.each( function(w) {w.show(this);});";
//ostr << "Ext.WindowMgr.each( function(w) {w.show(this);});";
//close onReady
ostr << "});";
//close inline JS block

View File

@ -41,6 +41,7 @@
#include "Poco/WebWidgets/ContainerView.h"
#include "Poco/WebWidgets/JavaScriptEvent.h"
namespace Poco {
@ -53,6 +54,12 @@ class WebWidgets_API Page: public ContainerView
public:
typedef Poco::AutoPtr<Page> Ptr;
JavaScriptEvent<Page*> beforeRender;
/// event thrown before GUI rendering.
JavaScriptEvent<Page*> afterRender;
/// event thrown after GUI rendering.
Page();
/// Creates an anonymous Page.
@ -61,6 +68,7 @@ public:
// View
void setText(const std::string& text);
std::string getText() const;
protected: