[rhmessaging-commits] rhmessaging commits: r3359 - mgmt/trunk/wooly/python/wooly.
rhmessaging-commits at lists.jboss.org
rhmessaging-commits at lists.jboss.org
Wed May 6 15:03:44 EDT 2009
Author: eallen
Date: 2009-05-06 15:03:44 -0400 (Wed, 06 May 2009)
New Revision: 3359
Modified:
mgmt/trunk/wooly/python/wooly/__init__.py
mgmt/trunk/wooly/python/wooly/__init__.strings
mgmt/trunk/wooly/python/wooly/pages.py
mgmt/trunk/wooly/python/wooly/pages.strings
Log:
Added ability to defer the render of a widget
Modified: mgmt/trunk/wooly/python/wooly/__init__.py
===================================================================
--- mgmt/trunk/wooly/python/wooly/__init__.py 2009-05-06 18:31:00 UTC (rev 3358)
+++ mgmt/trunk/wooly/python/wooly/__init__.py 2009-05-06 19:03:44 UTC (rev 3359)
@@ -103,6 +103,7 @@
# Configuration
self.html_class = "_"
self.update_enabled = False
+ self.defer_enabled = False
# These are set in the init() pass
self.ancestors = None
@@ -111,6 +112,7 @@
self.frame = None
self.__main_tmpl = Template(self, "html")
+ self.__defer_tmpl = Template(self, "deferred_html")
def init(self):
#print "Initializing %s" % str(self)
@@ -251,6 +253,9 @@
args = self.get_args(session)
string = self.do_render(session, *args)
+ if self.defer_enabled:
+ self.page.enable_defer(session, self)
+
if string is None:
string = ""
@@ -266,9 +271,14 @@
return string
def do_render(self, session, *args):
- writer = Writer()
- self.__main_tmpl.render(writer, session, *args)
- return writer.to_string()
+ if self.defer_enabled and not getattr(session, "background", None):
+ writer = Writer()
+ self.__defer_tmpl.render(writer, session, *args)
+ return writer.to_string()
+ else:
+ writer = Writer()
+ self.__main_tmpl.render(writer, session, *args)
+ return writer.to_string()
def render_id(self, session, *args):
return self.path
Modified: mgmt/trunk/wooly/python/wooly/__init__.strings
===================================================================
--- mgmt/trunk/wooly/python/wooly/__init__.strings 2009-05-06 18:31:00 UTC (rev 3358)
+++ mgmt/trunk/wooly/python/wooly/__init__.strings 2009-05-06 19:03:44 UTC (rev 3359)
@@ -1,6 +1,9 @@
[Widget.html]
{content}
+[Widget.deferred_html]
+<div id="{id}"></div>
+
[Page.html]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
Modified: mgmt/trunk/wooly/python/wooly/pages.py
===================================================================
--- mgmt/trunk/wooly/python/wooly/pages.py 2009-05-06 18:31:00 UTC (rev 3358)
+++ mgmt/trunk/wooly/python/wooly/pages.py 2009-05-06 19:03:44 UTC (rev 3359)
@@ -83,9 +83,16 @@
self.updates = self.UpdatesAttribute(app, "updates")
self.add_attribute(self.updates)
+ self.defers = self.UpdatesAttribute(app, "defers")
+ self.add_attribute(self.defers)
+
self.update_script = UpdateScript(app, "update_script", self)
self.add_child(self.update_script)
+ self.defer_script = DeferScript(app, "defer_script", self)
+ self.defer_script.interval = 0
+ self.add_child(self.defer_script)
+
self.update_page = UpdatePage(app, self.base_name + ".update", self)
self.app.add_page(self.update_page)
@@ -111,6 +118,9 @@
self.updates.get(session).append(widget)
+ def enable_defer(self, session, widget):
+ self.defers.get(session).append(widget)
+
def get_update_url(self, session, widgets):
sess = Session(self.page.update_page)
@@ -126,20 +136,35 @@
def get_default(self, session):
return list()
-class UpdateScript(Widget):
+class AjaxScript(Widget):
def __init__(self, app, name, html_page):
- super(UpdateScript, self).__init__(app, name)
+ super(AjaxScript, self).__init__(app, name)
self.html_page = html_page
+ self.interval = 3000
def do_render(self, session):
- if self.html_page.updates.get(session):
- return super(UpdateScript, self).do_render(session)
+ if self.get_widget_list(session):
+ return super(AjaxScript, self).do_render(session)
def render_url(self, session):
- updates = self.html_page.updates.get(session)
- return self.html_page.get_update_url(session, updates)
+ widgets = self.get_widget_list(session)
+ return self.html_page.get_update_url(session, widgets)
+ def get_widget_list(self, session):
+ pass
+
+ def render_interval(self, session):
+ return self.interval
+
+class DeferScript(AjaxScript):
+ def get_widget_list(self, session):
+ return self.html_page.defers.get(session)
+
+class UpdateScript(AjaxScript):
+ def get_widget_list(self, session):
+ return self.html_page.updates.get(session)
+
class UpdatePage(Page):
def __init__(self, app, name, html_page):
super(UpdatePage, self).__init__(app, name)
Modified: mgmt/trunk/wooly/python/wooly/pages.strings
===================================================================
--- mgmt/trunk/wooly/python/wooly/pages.strings 2009-05-06 18:31:00 UTC (rev 3358)
+++ mgmt/trunk/wooly/python/wooly/pages.strings 2009-05-06 19:03:44 UTC (rev 3359)
@@ -22,12 +22,13 @@
<body class="{class}">
{content}
</body>
+ {defer_script}
</html>
-[UpdateScript.html]
+[AjaxScript.html]
<script type="text/javascript">
// <![CDATA[
- wooly.setIntervalUpdate('{url}', wooly.updatePage, 3000);
+ wooly.setIntervalUpdate('{url}', wooly.updatePage, {interval});
// ]]>
</script>
@@ -36,6 +37,7 @@
<!DOCTYPE widgets [
<!ELEMENT widgets (#PCDATA)>
<!ENTITY ndash "–">
+ <!ENTITY nbsp " ">
]>
<widgets>{widgets}</widgets>
More information about the rhmessaging-commits
mailing list