Index: in/waeup.sirp/branches/ulif-fasttables/src/waeup/sirp/jambtables/multilistwidget.pt
===================================================================
--- /main/waeup.sirp/branches/ulif-fasttables/src/waeup/sirp/jambtables/multilistwidget.pt	(revision 5301)
+++ 	(revision )
@@ -1,38 +1,0 @@
-<table border="0" class="multisequencewidget"
-  i18n:domain="zope">
-  <div tal:repeat="widget view/widgets"
-       tal:omit-tag="" >
-    <tr tal:condition="repeat/widget/start">
-      <th></th>
-      <th tal:repeat="subwidget widget/subwidgets">
-	<span tal:replace="subwidget/label">Column Label</span>
-      </th>
-    </tr>
-    <tr>
-      <td>
-	<input class="editcheck" type="checkbox"
-	       tal:attributes="
-                   name string:${view/name}.remove_${repeat/widget/index}"
-	       tal:condition="view/need_delete" />
-      </td>
-      <td tal:repeat="subwidget widget/subwidgets">
-	<span tal:define="error subwidget/error"
-	      tal:replace="structure error" tal:condition="error" />
-	<input tal:replace="structure subwidget" />
-      </td>
-    </tr>
-  </div>
-  <tr>
-    <td colspan="2">
-      <input type="submit" value="Remove selected items"
-	     tal:condition="view/need_delete"
-	     tal:attributes="name string:${view/name}.remove"
-	     i18n:attributes="value remove-selected-items" />
-      <input type="submit" value="Add foo"
-	     tal:condition="view/need_add"
-	     tal:attributes="name string:${view/name}.add;
-			     value view/addButtonLabel" />
-    </td>
-  </tr>
-</table>
-<input tal:replace="structure view/marker" />
Index: in/waeup.sirp/branches/ulif-fasttables/src/waeup/sirp/jambtables/multilistwidget.py
===================================================================
--- /main/waeup.sirp/branches/ulif-fasttables/src/waeup/sirp/jambtables/multilistwidget.py	(revision 5301)
+++ 	(revision )
@@ -1,74 +1,0 @@
-##
-## multilistwidget.py
-## Login : <uli@pu.smp.net>
-## Started on  Tue Jul 20 02:53:10 2010 Uli Fouquet
-## $Id$
-## 
-## Copyright (C) 2010 Uli Fouquet
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-## 
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-## GNU General Public License for more details.
-## 
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-##
-"""A widget that renders multiple contained items horizontally.
-"""
-from zope.browserpage import ViewPageTemplateFile
-from zope.formlib.sequencewidget import (
-    ListSequenceWidget, SequenceDisplayWidget)
-from zope.formlib.widget import renderElement
-
-
-class MultiListWidget(ListSequenceWidget):
-    template = ViewPageTemplateFile('multilistwidget.pt')
-
-class MultiListDisplayWidget(SequenceDisplayWidget):
-    cssClass = "multiSequenceWidget"
-
-    def __call__(self):
-        # get the data to display:
-        if self._renderedValueSet():
-            data = self._data
-        else:
-            data = self.context.get(self.context.context)
-
-        # deal with special cases:
-        if data == self.context.missing_value:
-            return translate(self._missingValueMessage, self.request)
-        data = list(data)
-        if not data:
-            return translate(self._emptySequenceMessage, self.request)
-
-        parts = ['<table>']
-        for i, item in enumerate(data):
-            widget = self._getWidget(i)
-            if i == 0:
-                parts.append('<thead><tr>')
-                for x in widget.subwidgets():
-                    parts.append('<th>%s</th>' % x.label)
-                parts.append('</tr></thead><tbody>')
-            widget.setRenderedValue(item)
-            s = widget()
-            #print s
-            if self.itemTag:
-                #s = "<%s>%s</%s>" % (self.itemTag, s, self.itemTag)
-                evenodd = i%2 and 'odd' or 'even'
-                s = '<tr class="%s">%s</tr>' % (evenodd, s)
-            parts.append(s)
-        parts.append('</tbody></table>')
-        contents = "\n".join(parts)
-        if self.tag:
-            contents = "\n%s\n" % contents
-            contents = renderElement(self.tag,
-                                     cssClass=self.cssClass,
-                                     extra=self.extra,
-                                     contents=contents)
-        return contents
Index: in/waeup.sirp/branches/ulif-fasttables/src/waeup/sirp/jambtables/objectwidget.pt
===================================================================
--- /main/waeup.sirp/branches/ulif-fasttables/src/waeup/sirp/jambtables/objectwidget.pt	(revision 5301)
+++ 	(revision )
@@ -1,5 +1,0 @@
-  <td class="row" tal:repeat="widget context/subwidgets">
-    <span tal:define="error widget/error"
-	  tal:replace="structure error" tal:condition="error" />
-    <span tal:replace="structure widget" />
-  </td>
Index: in/waeup.sirp/branches/ulif-fasttables/src/waeup/sirp/jambtables/objectwidget.py
===================================================================
--- /main/waeup.sirp/branches/ulif-fasttables/src/waeup/sirp/jambtables/objectwidget.py	(revision 5301)
+++ 	(revision )
@@ -1,74 +1,0 @@
-##
-## resultswidget.py
-## Login : <uli@pu.smp.net>
-## Started on  Tue Jul 20 02:04:30 2010 Uli Fouquet
-## $Id$
-## 
-## Copyright (C) 2010 Uli Fouquet
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-## 
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-## GNU General Public License for more details.
-## 
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-##
-"""A widget to display IObject instances in forms.
-"""
-from zope.browserpage import ViewPageTemplateFile
-from zope.formlib.interfaces import IDisplayWidget
-from zope.formlib.objectwidget import ObjectWidget, ObjectWidgetView
-from zope.formlib.utility import setUpWidgets
-from zope.schema import getFieldNamesInOrder
-
-class WAeUPObjectWidgetView(ObjectWidgetView):
-    template = ViewPageTemplateFile('objectwidget.pt')
-
-class WAeUPObjectWidget(ObjectWidget):
-
-    def __init__(self, context, request, factory, **kw):
-        #super(ResultsEntryWidget, self).__init__(context, request)
-        super(ObjectWidget, self).__init__(context, request)
-
-        # define view that renders the widget
-        self.view = self._getView(request)
-
-        # factory used to create content that this widget (field)
-        # represents
-        self.factory = factory
-
-        # handle foo_widget specs being passed in
-        self.names = getFieldNamesInOrder(self.context.schema)
-        for k, v in kw.items():
-            if k.endswith('_widget'):
-                setattr(self, k, v)
-
-        # set up my subwidgets
-        self._setUpWidgets()
-
-    def subwidgets(self):
-        result = [self.getSubWidget(name) for name in self.names]
-        return result
-
-    def _setUpWidgets(self):
-        return self._setUpEditWidgets()
-
-    def _getView(self, request):
-        return ResultsEntryWidgetView(self, request)
-
-class WAeUPObjectDisplayWidget(WAeUPObjectWidget):
-
-    def _setUpDisplayWidgets(self):
-        # subwidgets need a new name
-        setUpWidgets(self, self.context.schema, IDisplayWidget,
-                         prefix=self.name, names=self.names,
-                         context=self.context)
-
-    def _setUpWidgets(self):
-        return self._setUpDisplayWidgets()
Index: /main/waeup.sirp/branches/ulif-fasttables/src/waeup/sirp/widgets/multilistwidget.pt
===================================================================
--- /main/waeup.sirp/branches/ulif-fasttables/src/waeup/sirp/widgets/multilistwidget.pt	(revision 5302)
+++ /main/waeup.sirp/branches/ulif-fasttables/src/waeup/sirp/widgets/multilistwidget.pt	(revision 5302)
@@ -0,0 +1,38 @@
+<table border="0" class="multisequencewidget"
+  i18n:domain="zope">
+  <div tal:repeat="widget view/widgets"
+       tal:omit-tag="" >
+    <tr tal:condition="repeat/widget/start">
+      <th></th>
+      <th tal:repeat="subwidget widget/subwidgets">
+	<span tal:replace="subwidget/label">Column Label</span>
+      </th>
+    </tr>
+    <tr>
+      <td>
+	<input class="editcheck" type="checkbox"
+	       tal:attributes="
+                   name string:${view/name}.remove_${repeat/widget/index}"
+	       tal:condition="view/need_delete" />
+      </td>
+      <td tal:repeat="subwidget widget/subwidgets">
+	<span tal:define="error subwidget/error"
+	      tal:replace="structure error" tal:condition="error" />
+	<input tal:replace="structure subwidget" />
+      </td>
+    </tr>
+  </div>
+  <tr>
+    <td colspan="2">
+      <input type="submit" value="Remove selected items"
+	     tal:condition="view/need_delete"
+	     tal:attributes="name string:${view/name}.remove"
+	     i18n:attributes="value remove-selected-items" />
+      <input type="submit" value="Add foo"
+	     tal:condition="view/need_add"
+	     tal:attributes="name string:${view/name}.add;
+			     value view/addButtonLabel" />
+    </td>
+  </tr>
+</table>
+<input tal:replace="structure view/marker" />
Index: /main/waeup.sirp/branches/ulif-fasttables/src/waeup/sirp/widgets/multilistwidget.py
===================================================================
--- /main/waeup.sirp/branches/ulif-fasttables/src/waeup/sirp/widgets/multilistwidget.py	(revision 5302)
+++ /main/waeup.sirp/branches/ulif-fasttables/src/waeup/sirp/widgets/multilistwidget.py	(revision 5302)
@@ -0,0 +1,74 @@
+##
+## multilistwidget.py
+## Login : <uli@pu.smp.net>
+## Started on  Tue Jul 20 02:53:10 2010 Uli Fouquet
+## $Id$
+## 
+## Copyright (C) 2010 Uli Fouquet
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+## 
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+## 
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+##
+"""A widget that renders multiple contained items horizontally.
+"""
+from zope.browserpage import ViewPageTemplateFile
+from zope.formlib.sequencewidget import (
+    ListSequenceWidget, SequenceDisplayWidget)
+from zope.formlib.widget import renderElement
+
+
+class MultiListWidget(ListSequenceWidget):
+    template = ViewPageTemplateFile('multilistwidget.pt')
+
+class MultiListDisplayWidget(SequenceDisplayWidget):
+    cssClass = "multiSequenceWidget"
+
+    def __call__(self):
+        # get the data to display:
+        if self._renderedValueSet():
+            data = self._data
+        else:
+            data = self.context.get(self.context.context)
+
+        # deal with special cases:
+        if data == self.context.missing_value:
+            return translate(self._missingValueMessage, self.request)
+        data = list(data)
+        if not data:
+            return translate(self._emptySequenceMessage, self.request)
+
+        parts = ['<table>']
+        for i, item in enumerate(data):
+            widget = self._getWidget(i)
+            if i == 0:
+                parts.append('<thead><tr>')
+                for x in widget.subwidgets():
+                    parts.append('<th>%s</th>' % x.label)
+                parts.append('</tr></thead><tbody>')
+            widget.setRenderedValue(item)
+            s = widget()
+            #print s
+            if self.itemTag:
+                #s = "<%s>%s</%s>" % (self.itemTag, s, self.itemTag)
+                evenodd = i%2 and 'odd' or 'even'
+                s = '<tr class="%s">%s</tr>' % (evenodd, s)
+            parts.append(s)
+        parts.append('</tbody></table>')
+        contents = "\n".join(parts)
+        if self.tag:
+            contents = "\n%s\n" % contents
+            contents = renderElement(self.tag,
+                                     cssClass=self.cssClass,
+                                     extra=self.extra,
+                                     contents=contents)
+        return contents
Index: /main/waeup.sirp/branches/ulif-fasttables/src/waeup/sirp/widgets/objectwidget.pt
===================================================================
--- /main/waeup.sirp/branches/ulif-fasttables/src/waeup/sirp/widgets/objectwidget.pt	(revision 5302)
+++ /main/waeup.sirp/branches/ulif-fasttables/src/waeup/sirp/widgets/objectwidget.pt	(revision 5302)
@@ -0,0 +1,5 @@
+  <td class="row" tal:repeat="widget context/subwidgets">
+    <span tal:define="error widget/error"
+	  tal:replace="structure error" tal:condition="error" />
+    <span tal:replace="structure widget" />
+  </td>
Index: /main/waeup.sirp/branches/ulif-fasttables/src/waeup/sirp/widgets/objectwidget.py
===================================================================
--- /main/waeup.sirp/branches/ulif-fasttables/src/waeup/sirp/widgets/objectwidget.py	(revision 5302)
+++ /main/waeup.sirp/branches/ulif-fasttables/src/waeup/sirp/widgets/objectwidget.py	(revision 5302)
@@ -0,0 +1,74 @@
+##
+## resultswidget.py
+## Login : <uli@pu.smp.net>
+## Started on  Tue Jul 20 02:04:30 2010 Uli Fouquet
+## $Id$
+## 
+## Copyright (C) 2010 Uli Fouquet
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+## 
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+## 
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+##
+"""A widget to display IObject instances in forms.
+"""
+from zope.browserpage import ViewPageTemplateFile
+from zope.formlib.interfaces import IDisplayWidget
+from zope.formlib.objectwidget import ObjectWidget, ObjectWidgetView
+from zope.formlib.utility import setUpWidgets
+from zope.schema import getFieldNamesInOrder
+
+class WAeUPObjectWidgetView(ObjectWidgetView):
+    template = ViewPageTemplateFile('objectwidget.pt')
+
+class WAeUPObjectWidget(ObjectWidget):
+
+    def __init__(self, context, request, factory, **kw):
+        #super(ResultsEntryWidget, self).__init__(context, request)
+        super(ObjectWidget, self).__init__(context, request)
+
+        # define view that renders the widget
+        self.view = self._getView(request)
+
+        # factory used to create content that this widget (field)
+        # represents
+        self.factory = factory
+
+        # handle foo_widget specs being passed in
+        self.names = getFieldNamesInOrder(self.context.schema)
+        for k, v in kw.items():
+            if k.endswith('_widget'):
+                setattr(self, k, v)
+
+        # set up my subwidgets
+        self._setUpWidgets()
+
+    def subwidgets(self):
+        result = [self.getSubWidget(name) for name in self.names]
+        return result
+
+    def _setUpWidgets(self):
+        return self._setUpEditWidgets()
+
+    def _getView(self, request):
+        return ResultsEntryWidgetView(self, request)
+
+class WAeUPObjectDisplayWidget(WAeUPObjectWidget):
+
+    def _setUpDisplayWidgets(self):
+        # subwidgets need a new name
+        setUpWidgets(self, self.context.schema, IDisplayWidget,
+                         prefix=self.name, names=self.names,
+                         context=self.context)
+
+    def _setUpWidgets(self):
+        return self._setUpDisplayWidgets()
