added Resourcemanager

This commit is contained in:
Peter Schojer
2008-06-05 09:01:29 +00:00
parent 8cd381c913
commit 5941524877
15 changed files with 379 additions and 59 deletions

View File

@@ -43,6 +43,8 @@
#include "Poco/WebWidgets/ExtJS/ExtJS.h"
#include "Poco/WebWidgets/Form.h"
#include "Poco/WebWidgets/LookAndFeel.h"
#include "Poco/WebWidgets/ResourceManager.h"
#include "Poco/Path.h"
#include "Poco/WebWidgets/JavaScriptEvent.h"
#include <ostream>
#include <list>
@@ -65,6 +67,9 @@ class ExtJS_API Utility
public:
static void initialize(LookAndFeel::Ptr ptr);
/// Initializes the LookAndFeel object to use ExtJS renderers
static void initialize(ResourceManager::Ptr ptr, const Poco::Path& extJSDir);
/// Initializes the ResourceManager object to include ExtJS resources
static LookAndFeel& getDefaultRenderers();
/// Returns the defaultrenderers;

View File

@@ -92,7 +92,7 @@ void FrameRenderer::renderBody(const Renderable* pRenderable, const RenderContex
void FrameRenderer::writeProperties(const Frame* pFrame, std::ostream& ostr)
{
Utility::writeRenderableProperties(pFrame, ostr);
ostr << ",frame:true";
ostr << ",frame:true,header:true";
if (pFrame->getWidth() > 0)
ostr << ",width:" << pFrame->getWidth();
if (pFrame->getHeight() > 0)

View File

@@ -73,18 +73,41 @@ void PageRenderer::renderHead(const Renderable* pRenderable, const RenderContext
const Page* pPage = static_cast<const Poco::WebWidgets::Page*>(pRenderable);
poco_assert_dbg (WebApplication::instance().getCurrentPage().get() == pPage);
const LookAndFeel& laf = context.lookAndFeel();
ResourceManager::Ptr pRM = context.application().getResourceManager();
ostr << STRO_HTML << STRO_HEAD << STRO_TITLE;
ostr << pPage->getName();
ostr << STRC_TITLE;
//include javascript files: TODO: use ResourceManager
ostr << "<script type=\"text/javascript\" src=\"ext-base.js\"></script>";
ostr << "<script type=\"text/javascript\" src=\"ext-all.js\"></script>";
ostr << "<script type=\"text/javascript\" src=\"DDView.js\"></script>";
ostr << "<script type=\"text/javascript\" src=\"MultiSelect.js\"></script>";
ostr << "<link rel=\"stylesheet\" type=\"text/css\" href=\"resources/css/ext-all.css\">";
ostr << "<link rel=\"stylesheet\" type=\"text/css\" href=\"MultiSelect.css\">";
//include javascript files:
const ResourceManager::Includes& jsIncl = pRM->jsIncludes();
ResourceManager::Includes::const_iterator itJS = jsIncl.begin();
for (; itJS != jsIncl.end(); ++itJS)
{
ostr << "<script type=\"text/javascript\" src=\"" << (*itJS) << "\"></script>";
}
const ResourceManager::Includes& myJSIncl = pPage->resourceManager().jsIncludes();
ResourceManager::Includes::const_iterator itMyJS = myJSIncl.begin();
for (; itMyJS != myJSIncl.end(); ++itMyJS)
{
ostr << "<script type=\"text/javascript\" src=\"" << (*itMyJS) << "\"></script>";
}
// write css includes
const ResourceManager::Includes& cssIncl = pRM->cssIncludes();
ResourceManager::Includes::const_iterator itCSS = cssIncl.begin();
for (; itCSS != cssIncl.end(); ++itCSS)
{
ostr << "<link rel=\"stylesheet\" type=\"text/css\" href=\"" << (*itCSS) << "\">";
}
const ResourceManager::Includes& myCSSIncl = pPage->resourceManager().cssIncludes();
ResourceManager::Includes::const_iterator itMyCSS = myCSSIncl.begin();
for (; itMyCSS != myCSSIncl.end(); ++itMyCSS)
{
ostr << "<link rel=\"stylesheet\" type=\"text/css\" href=\"" << (*itMyCSS) << "\">";
}
// extra css for label
ostr << "<style type=\"text/css\">.lbl {font:normal 12px tahoma, verdana, helvetica}</style>";
if (!pPage->empty())
{
//start inline javascript block
@@ -97,14 +120,10 @@ void PageRenderer::renderHead(const Renderable* pRenderable, const RenderContext
{
ostr << ",listeners:{";
bool written = Utility::writeJSEvent(ostr, EV_BEFORERENDER, pPage->beforeRender.jsDelegates());
//auto-show all windows
JavaScriptEvent<Page*>::JSDelegates js = pPage->afterRender.jsDelegates();
js.push_front(jsDelegate("function(){Ext.WindowMgr.each( function(w) {w.show(this);});}"));
if (written && !js.empty())
{
if (written)
ostr << ",";
}
Utility::writeJSEvent(ostr, EV_AFTERRENDER, js);
Utility::writeJSEvent(ostr, EV_AFTERRENDER, pPage->afterRender.jsDelegates());
ostr << "}";
}
if (pPage->getHeight() > 0)

View File

@@ -79,7 +79,8 @@ void TableRenderer::renderHead(const Renderable* pRenderable, const RenderContex
bool editable = false;
for (Table::TableColumns::const_iterator it = cols.begin(); it != cols.end() && !editable; ++it)
{
editable |= (*it)->isEditable();
if ((*it) && (*it)->getCell())
editable |= (*it)->isEditable();
}
if (editable)
ostr << "new Ext.grid.EditorGridPanel({";
@@ -156,7 +157,8 @@ void TableRenderer::renderProperties(const Table* pTable, const RenderContext& c
bool editable = false;
for (Table::TableColumns::const_iterator it = cols.begin(); it != cols.end() && !editable; ++it)
{
editable |= (*it)->isEditable();
if ((*it) && (*it)->getCell())
editable |= (*it)->isEditable();
}
ostr << ",listeners:{";
bool written = false;
@@ -279,7 +281,7 @@ void TableRenderer::renderStore(const Table* pTable, std::ostream& ostr)
{
if (i != 0)
ostr << ",";
if ((*it)->getCell()->type() == typeid(Poco::WebWidgets::DateFieldCell))
if ((*it)->getCell() && (*it)->getCell()->type() == typeid(Poco::WebWidgets::DateFieldCell))
{
Poco::WebWidgets::DateFieldCell::Ptr pDf = (*it)->getCell().cast<Poco::WebWidgets::DateFieldCell>();

View File

@@ -134,6 +134,27 @@ void Utility::initialize(LookAndFeel::Ptr ptr)
}
void Utility::initialize(ResourceManager::Ptr ptr, const Poco::Path& extJSDir)
{
Poco::Path aDir(extJSDir);
aDir.makeDirectory();
aDir.setFileName("ext-base.js");
ptr->appendJSInclude(aDir);
aDir.setFileName("ext-all.js");
ptr->appendJSInclude(aDir);
aDir.setFileName("DDView.js");
ptr->appendJSInclude(aDir);
aDir.setFileName("MultiSelect.js");
ptr->appendJSInclude(aDir);
Poco::Path cssAll("resources/css/ext-all.css");
cssAll.makeFile();
ptr->appendCSSInclude(Poco::Path(extJSDir, cssAll));
ptr->appendCSSInclude(Poco::Path(extJSDir, "MultiSelect.css"));
}
const std::string& Utility::getTmpID()
{
static const std::string tmp("tmp");

View File

@@ -68,6 +68,7 @@
#include "Poco/WebWidgets/TextEditCell.h"
#include "Poco/WebWidgets/SimpleTableModel.h"
#include "Poco/WebWidgets/JSDelegate.h"
#include "Poco/WebWidgets/ResourceManager.h"
#include "Poco/TeeStream.h"
#include "Poco/DateTimeFormat.h"
#include "Poco/DateTime.h"
@@ -92,7 +93,9 @@ ExtJSTest::~ExtJSTest()
void ExtJSTest::testPage()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());
Utility::initialize(pRM, Poco::Path());
WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -119,7 +122,9 @@ void ExtJSTest::testPage()
void ExtJSTest::testPage2()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());
Utility::initialize(pRM, Poco::Path());
WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -152,7 +157,9 @@ void ExtJSTest::testPage2()
void ExtJSTest::testButton()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());
Utility::initialize(pRM, Poco::Path());
WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -194,7 +201,9 @@ void ExtJSTest::testButton()
void ExtJSTest::testFormTextField()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());
Utility::initialize(pRM, Poco::Path());
WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -241,7 +250,7 @@ void ExtJSTest::testFormTextField()
void ExtJSTest::testFormTimeField()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -276,7 +285,7 @@ void ExtJSTest::testFormTimeField()
void ExtJSTest::testFormDateField()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -314,7 +323,7 @@ void ExtJSTest::testFormDateField()
void ExtJSTest::testFormPassword()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -348,7 +357,7 @@ void ExtJSTest::testFormPassword()
void ExtJSTest::testFormNumberField()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -383,7 +392,7 @@ void ExtJSTest::testFormNumberField()
void ExtJSTest::testFormComboBox()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -426,7 +435,7 @@ void ExtJSTest::testFormComboBox()
void ExtJSTest::testFormImageButton()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -475,7 +484,7 @@ void ExtJSTest::testFormImageButton()
void ExtJSTest::testFormTextEdit()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -522,7 +531,7 @@ void ExtJSTest::testFormTextEdit()
void ExtJSTest::testFormCheckButton()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -554,7 +563,7 @@ void ExtJSTest::testFormCheckButton()
void ExtJSTest::testFormRadioButton()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -586,7 +595,7 @@ void ExtJSTest::testFormRadioButton()
void ExtJSTest::testFormGridLayout()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -619,7 +628,7 @@ void ExtJSTest::testFormGridLayout()
void ExtJSTest::testFormHorizontalLayout()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -652,7 +661,7 @@ void ExtJSTest::testFormHorizontalLayout()
void ExtJSTest::testFormVerticalLayout()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -685,7 +694,7 @@ void ExtJSTest::testFormVerticalLayout()
void ExtJSTest::testFormFrameGridLayout()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -720,7 +729,7 @@ void ExtJSTest::testFormFrameGridLayout()
void ExtJSTest::testFormFrameHorizontalLayout()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -755,7 +764,7 @@ void ExtJSTest::testFormFrameHorizontalLayout()
void ExtJSTest::testFormFrameVerticalLayout()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -790,7 +799,7 @@ void ExtJSTest::testFormFrameVerticalLayout()
void ExtJSTest::testFormGridLayoutNullElements()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -823,7 +832,7 @@ void ExtJSTest::testFormGridLayoutNullElements()
void ExtJSTest::testFormImage()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -859,7 +868,7 @@ void ExtJSTest::testFormImage()
void ExtJSTest::testTabView()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -903,7 +912,7 @@ void ExtJSTest::testTabView()
void ExtJSTest::testCollapsible()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -937,7 +946,7 @@ void ExtJSTest::testCollapsible()
void ExtJSTest::testCollapsible2()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -972,7 +981,7 @@ void ExtJSTest::testCollapsible2()
void ExtJSTest::testPanel()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -1011,7 +1020,7 @@ void ExtJSTest::testPanel()
void ExtJSTest::testRootPanel()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -1047,7 +1056,7 @@ void ExtJSTest::testRootPanel()
void ExtJSTest::testNestedPanels()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -1087,7 +1096,7 @@ void ExtJSTest::testNestedPanels()
void ExtJSTest::testListBox()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -1159,7 +1168,7 @@ void ExtJSTest::testFunction()
void ExtJSTest::testTable()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -1190,7 +1199,7 @@ void ExtJSTest::testTable()
void ExtJSTest::testTableEdit()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -1221,7 +1230,7 @@ void ExtJSTest::testTableEdit()
void ExtJSTest::testTableComboBox()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -1256,7 +1265,7 @@ void ExtJSTest::testTableComboBox()
void ExtJSTest::testTableButton()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);
@@ -1287,7 +1296,7 @@ void ExtJSTest::testTableButton()
void ExtJSTest::testTableImageButton()
{
WebApplication webApp(Poco::URI("/"));
ResourceManager::Ptr pRM(new ResourceManager());Utility::initialize(pRM, Poco::Path());WebApplication webApp(Poco::URI("/"), pRM);
LookAndFeel::Ptr laf(new LookAndFeel());
webApp.setLookAndFeel(laf);
RenderContext context(*laf, webApp);