Hello,

 

It's the first time I'm developing an own component, so I think my problems 
have a very simple solution. I want to develop a component for drag and drop 
using the dojo toolkit.

But my component is by now very simple. It only renders a div Tag around its 
children. 

The component is a simple class extending UIComponentBase and only overriding 
getFamily and the saveState/restoreState methods.

The renderer is extending javax.faces.render.Renderer and overrides encodeBegin 
and ecodeEnd to write the div Tag.

The div tag should get a unique id and I thought the clientId would be the 
right choice:

 

      @Override

      public void encodeBegin(FacesContext context, UIComponent component) 
throws IOException {

            if ((context == null) || (component == null)) {

                  throw new NullPointerException();

            }

            Draggable draggable = (Draggable) component;

            

            if (draggable.isRendered()) {

                  ResponseWriter writer = context.getResponseWriter();

                  writer.startElement("div", component);

                  writer.writeAttribute("id", draggable.getClientId(context), 
"clientId");

            }

      }

 

But if I embed the component (tcc:draggable) in a Trinidad Treetable the div 
tag is rendered to the client with the same clientid for all rows in the tree 
table. What do I have to change to have a unique id for each row in the table? 
For tr:outputText it works?!

 

 

<f:facet name="nodeStamp">

                        <tr:column>

                             <f:facet name="header">

                                   <tr:outputText value="Name (Level / Total 
Number of Children)" />

                             </f:facet>

                             

                             <tcc:draggable>

                                   <tr:outputText

                                         
inlineStyle="font-weight:bold;cursor:move;" 

                                         value="(#{treeNode.depth} / 
#{treeNode.totalNumberOfChildren}) #{treeNode.displayName}" 

                                         rendered="#{not treeNode.isVirtual}"/>

                                   <tr:outputText

                                         
inlineStyle="font-weight:bold;cursor:move;"

                                         rendered="#{treeNode.isVirtual}"

                                         value="(#{treeNode.depth} / 
#{treeNode.totalNumberOfChildren}) #{treeNode.displayName}"

                                         
styleClass="treeEditorVirtualNodeRowText" />   

                             </tcc:draggable>

                        </tr:column>

                  </f:facet>

 

When I have reached a more advanced level of knowledge in component development 
I hope I will be able to donate my drag&drop component to tomahawk or Trinidad.

 

Regards

Jochen

Reply via email to