[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-829) ICEfaces Tree Component needs reworking

Gregory Dick (JIRA) jira-events at lists.jboss.org
Mon Feb 12 12:34:29 EST 2007


ICEfaces Tree Component needs reworking
---------------------------------------

                 Key: JBSEAM-829
                 URL: http://jira.jboss.com/jira/browse/JBSEAM-829
             Project: JBoss Seam
          Issue Type: Bug
          Components: ICE Faces Integration
            Reporter: Gregory Dick
         Assigned To: Gregory Dick


Some comments 


Plain tree component with label:

         <ice:tree value="#{nodeTree.model}" var="item">
             <ice:treeNode>
                 <f:facet name="content">
                         <ice:commandLink actionListener="#
{item.userObject.nodeClicked}">
                             <ice:outputText value="#
{item.userObject.text}"/>
                         </ice:commandLink>
                 </f:facet>
             </ice:treeNode>
         </ice:tree>

Renders HTML with whitespace between <img> and <a> tags, resulting in
broken <div> padding and unwanted spaces:

<div class="iceTreeRow" id="_id21:_id22-div-2"
name="treeNodeDiv"><img alt="" border="0" src="./xmlhttp/css/xp/css-
images/tree_line_blank.gif"></img>
<img alt="" border="0" src="./xmlhttp/css/xp/css-images/
tree_line_last_node.gif"></img>

Should be:

<div class="iceTreeRow" id="_id21:_id22-div-2"
name="treeNodeDiv"><img alt="" border="0" src="./xmlhttp/css/xp/css-
images/tree_line_blank.gif"></img><img alt="" border="0" src="./
xmlhttp/css/xp/css-images/tree_line_last_node.gif"></img>

and so on... the only whitespaces should (could) be between </
div><div> tags, nowhere else. The trick with whitespace:nowrap in the
CSS is not going to cut it, there are still spaces left that I don't
want.

---------------------------------------------------

The xp/tree_nav_top_close_no_siblings.gif GIF is broken, it is not
transparent and the icon is not centered on the canvas.

---------------------------------------------------

After clicking on the tree and playing with the XHTML a little, I got
this:

03:36:56,599 ERROR [[Blocking Servlet]] Servlet.service() for servlet
Blocking Servlet threw exception
java.lang.RuntimeException: viewNumber 1 update queue exceeded 26
         at
com.icesoft.faces.webapp.xmlhttp.BlockingResponseState.writeElement
(BlockingResponseState.java:183)
         at com.icesoft.faces.context.DOMResponseWriter.writeDOM
(DOMResponseWriter.java:375)
         at com.icesoft.faces.application.D2DViewHandler.renderView
(D2DViewHandler.java :161)

Had to restart the server.

---------------------------------------------------

To collapse a node I can click on the [-] icon of the node. Expanding
with the then displayed [+] icon does not work, although I see a
submit on the server log. If I click on the commandLink (the label)
instead, the node expands but I also get the select event for that
node. This is either a simple copy/paste bug or inconsistent UI
behavior.

---------------------------------------------------

Did not find a way (documentation doesn't mention it) to customize
the images that are rendered by components without CSS, for example,
the expand/collapse icons of a tree. After reading the source and API
doc of the Tree component, I found the setImageDir() method, this
should be documented better in the reference.

---------------------------------------------------

The data binding for the tree is questionable. First, the idea of
using the Swing datamodels is good, in fact, JSF should not have its
own UI datamodels at all and every UI component should be able to use
the Swing datamodels. This allows us to expose a UI datamodel on
backing beans (EJBs in Seam) without requiring extension or inclusion
of any vendor-specific API or JAR in the EJB deployment module. Most
JSF component providers do not realize this and require custom
datamodels.

I can't list everything that is wrong with the tree databinding,
short list:

- Finally, the UI component does no longer require DefaultTreeModel
but the TreeModel interface (good)

- Every object in the TreeModel is cast to a DefaultMutableTreeNode,
this is not an interface! I want to use my own TreeNode implementation!

- Every DefaultMutableTreeNode needs a wrapped IceUserObject, this is
completely unecessary if I'd be able to use my own TreeNode
implementation (maybe I can also implement an IceTreeNode interface
for some UI binding).

- This would also solve the lazy loading FAQs on the Icefaces forum,
the approach with event listeners in the IceUserObject is a non-
starter, my TreeModel/TreeNode implementation could do that just fine

- There are unused classes such as TreeDataModel hanging around the
icefaces package, these only add to the confusion

Summary: This needs a serious redesign before it is usable.

---------------------------------------------------


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the seam-issues mailing list