[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 "&#8211;">
+  <!ENTITY nbsp "&#160;">
 ]>
 <widgets>{widgets}</widgets>
 




More information about the rhmessaging-commits mailing list