[rhmessaging-commits] rhmessaging commits: r1750 - mgmt/cumin/python/wooly.

rhmessaging-commits at lists.jboss.org rhmessaging-commits at lists.jboss.org
Mon Mar 3 10:32:36 EST 2008


Author: justi9
Date: 2008-03-03 10:32:36 -0500 (Mon, 03 Mar 2008)
New Revision: 1750

Modified:
   mgmt/cumin/python/wooly/tables.py
   mgmt/cumin/python/wooly/tables.strings
Log:
Render table headers using a distinct widget, so that the rendering
can be changed by different column implementations.



Modified: mgmt/cumin/python/wooly/tables.py
===================================================================
--- mgmt/cumin/python/wooly/tables.py	2008-03-03 13:33:49 UTC (rev 1749)
+++ mgmt/cumin/python/wooly/tables.py	2008-03-03 15:32:36 UTC (rev 1750)
@@ -12,6 +12,7 @@
         self.cell_tmpl = Template(self, "cell_html")
 
         self.columns = list()
+        self.headers_by_column = dict()
 
         self.scolumn = Parameter(app, "col")
         self.add_parameter(self.scolumn)
@@ -24,9 +25,16 @@
         self.columns.append(column)
         self.add_child(column)
 
+        header = column.header_class(self.app, "head", column)
+        self.set_header(column, header)
+
         if self.scolumn.default is None:
             self.scolumn.default = column.name
 
+    def set_header(self, column, header):
+        self.headers_by_column[column] = header
+        self.add_child(header)
+
     def get_selected_column(self, session):
         name = self.scolumn.get(session)
         for column in self.columns:
@@ -52,32 +60,11 @@
         writer = Writer()
 
         for column in self.columns:
-            self.header_html.render(session, (column, object), writer)
+            header = self.headers_by_column[column]
+            writer.write(header.render(session, object))
 
         return writer.to_string()
 
-    #def render_header_class(self, session, column):
-    #    return " ".join(column.get_classes(session))
-
-    def render_header_href(self, session, args):
-        column, object = args
-        branch = session.branch()
-
-        if column.name == self.scolumn.get(session):
-            self.reversed.set(branch, not self.reversed.get(session))
-
-        self.scolumn.set(branch, column.name)
-
-        return branch.marshal()
-
-    def render_header_content(self, session, args):
-        column, object = args
-        return column.get_title(session, object)
-
-    def render_header_class_attr(self, session, args):
-        column, object = args
-        return column.get_class_attr(session)
-
     def render_cells(self, session, item):
         writer = Writer()
 
@@ -95,6 +82,7 @@
     def __init__(self, app, name):
         super(ItemTableColumn, self).__init__(app, name)
 
+        self.header_class = ItemTableColumnHeader
         self.alignment = None
 
     def get_column_key(self, session):
@@ -114,6 +102,29 @@
     def render_value(self, session, value):
         return str(value)
 
+class ItemTableColumnHeader(Widget):
+    def __init__(self, app, name, column):
+        super(ItemTableColumnHeader, self).__init__(app, name)
+
+        self.column = column
+
+    def render_href(self, session, object):
+        branch = session.branch()
+
+        if self.column.name == self.parent.scolumn.get(session):
+            self.parent.reversed.set(branch,
+                                     not self.parent.reversed.get(session))
+
+        self.parent.scolumn.set(branch, self.column.name)
+
+        return branch.marshal()
+
+    def render_content(self, session, object):
+        return self.column.get_title(session, object)
+
+    def render_class_attr(self, session, args):
+        return self.column.get_class_attr(session)
+
 class SqlTable(ItemTable):
     def __init__(self, app, name):
         super(SqlTable, self).__init__(app, name)

Modified: mgmt/cumin/python/wooly/tables.strings
===================================================================
--- mgmt/cumin/python/wooly/tables.strings	2008-03-03 13:33:49 UTC (rev 1749)
+++ mgmt/cumin/python/wooly/tables.strings	2008-03-03 15:32:36 UTC (rev 1750)
@@ -4,8 +4,8 @@
   <tbody>{items}</tbody>
 </table>
 
-[ItemTable.header_html]
-<th {header_class_attr}><a href="{header_href}">{header_content}</a></th>
-
 [ItemTable.item_html]
 <tr>{cells}</tr>
+
+[ItemTableColumnHeader.html]
+<th {class_attr}><a href="{href}">{content}</a></th>




More information about the rhmessaging-commits mailing list