I have found a bug in the generated _javascript_ for the Select*Shuttle components. A patch follows:

TrShuttleProxy._getDescArray = function(listName) {
//  var descArray = window[listName.replace(':','_') + '_desc'];
  var descArray = window[listName.replace(/:/g,'_') + '_desc']; // gsl fix
  return descArray;
}

where listName is content:shuttle1:leading.

The problem is that the listName is not using a global replace; therefore only the first ':' is being replaced. This worked fine in ADF Faces before porting to Trinidad where the listName was just "shuttle1:leading". Note, however, that Trinidad now adds an additional "content" prefix to the generated inline _javascript_ variables:

	content_shuttle1_leading_desc=new Array('The First Item Desc',
						'The Second Item Desc',
						'The Third Item Desc','');
	content_shuttle1_trailing_desc=new Array('');

This means that a global replace needs to be done to create the proper variable name for matching in the _javascript_ code. I will report this on Jira for the Trinidad project.

I don't have access to the latest snapshots. The last one I see is from July 11th at:

    http://people.apache.org/repo/m2-snapshot-repository/org/apache/myfaces/trinidad/trinidad-impl/1.2.1-SNAPSHOT/

If this has been fixed already, then please clear my bug report which should have the side benefit of letting people know that the bug has been found and fixed already.

                                   -=> Gregg <=-

Gregg Leichtman wrote:
I am trying to get the leadingDescShown and trailingDescShown attributes
to work for the Trinidad v1.2.1 SelectOrderShuttle. I have the shuttle
working for everything except for displaying the description of a
selected item in the textarea below the leading or trailing shuttle. I'm
running under Linux and Eclipse 3.3 Europa using J2EE5 with JSF 1.2 and
Tiles 2.0.4. I have a tile as follows:

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t" %>
<%@ taglib uri="http://myfaces.apache.org/trinidad" prefix="tr"%>

<tr:form>
    <tr:panelGroupLayout layout="vertical">
        <f:facet name="separator">
             <tr:separator />
        </f:facet>  
        <tr:messages/>
        <tr:selectOrderShuttle id="shuttle1"
                            label="Selected Values"
                            leadingHeader="Available values:"
                            leadingDescShown="true"
                            trailingHeader="Selected values:"
                            trailingDescShown="true"
                            binding="#{editor.component}"
                            valueChangeListener="#{list.valueChanged}"
                            value="#{list.stringArray}">
            <tr:selectItem shortDesc="The First Item Desc"
longDesc="" label="First" value="foo"/>
            <tr:selectItem shortDesc="The Second Item Desc"
longDesc="" label="Second" value="bar"/>
            <tr:selectItem shortDesc="The Third Item Desc"
longDesc="" label="Third" value="baz"/>
        </tr:selectOrderShuttle>
        <tr:message for=""/>
        <tr:commandButton text="Submit"/>
    </tr:panelGroupLayout>
</tr:form>

The layout page uses f:view wrapping trh:html, trh:head and trh:body.
The trh:body element wraps one of several subviews which wrap several
tiles one of which is the above tile.

An excerpt from the generated page looks like this:

    ...

    <form id="content:j_id_jsp_709084578_0pc4" name="content:j_id_jsp_709084578_0pc4" style="margin:0px" method="POST"  action=""><!--Start: org.apache.myfaces.trinidad.Panel["j_id_jsp_709084578_1pc4"]--><div><!--Start: org.apache.myfaces.trinidad.Messages["j_id_jsp_709084578_3pc4"]--><span id="content:j_id_jsp_709084578_3pc4"></span><div><!--Start: org.apache.myfaces.trinidad.Object["j_id_jsp_709084578_2pc4"]-->
          <hr class="af_separator">
        </div><script>var _shuttle_no_items='There are no items to move.';var _shuttle_no_items_selected='Please select the items to move first.';</script><!--Start: org.apache.myfaces.trinidad.SelectOrder["shuttle1"]--><table cellpadding="0" cellspacing="0" border="0" width="10%" summary="" id="content:shuttle1" class="af_selectManyShuttle"><tr>
            <td class="x9u" valign="bottom">Available values:</td>

              
            <td></td>
              
            <td class="x9u" valign="bottom">Selected values:</td>
          </tr><tr>
            <td><!--Start: org.apache.myfaces.trinidad.SelectOrder["shuttle1"]--><table class="af_selectOrderShuttle_box" style="width:100%" cellpadding="0" cellspacing="0" border="0" summary=""><tbody><tr>
                    <td class="af_selectOrderShuttle_box-top-start"></td>
                      
                    <td class="af_selectOrderShuttle_box-top"></td>
                      
                    <td class="af_selectOrderShuttle_box-top-end"></td>
                  </tr><tr>

                    <td class="af_selectOrderShuttle_box-start"></td>
                      
                    <td class="x59"><div class="x55"><table cellpadding="0" border="0" summary=""><tr>
                            <td nowrap valign="middle"><!--Start: org.apache.myfaces.trinidad.SelectOrder["shuttle1"]--><span class="x1i">
                                <select multiple id="content:shuttle1:leading" name="content:shuttle1:leading" title="Available values:"   class="x1y" size="10">
                                  <option value="0" title="The First Item Desc">First</option>
                                    
                                  <option value="1" title="The Second Item Desc">Second</option>
                                    
                                  <option value="2" title="The Third Item Desc">Third</option>

                                    
                                  <option value="">_______________</option>
                                </select>
                                <!--Start: org.apache.myfaces.trinidad.SelectOrder["shuttle1"]--><label for="" class="x8v">Available values:</label></span></td>
                          </tr><tr>
                            <td nowrap valign="middle"></td>
                              
                            <td><img src="" alt="" width="1" height="8"></td>
                          </tr><tr>
                            <td nowrap valign="middle" colspan="3"><span class="x0">Description</span><div></div>

                              <textarea rows="2" id="content:shuttle1:leading:desc" name="content:shuttle1:leading:desc" readonly cols="18" wrap="soft"></textarea>
                              <!--Start: org.apache.myfaces.trinidad.SelectOrder["shuttle1"]--><label for="" class="x8v">Description</label></td>
                              
                            <td><img src="" alt="" width="1" height="68"></td>
                          </tr></table></div></td>
                      
                    <td class="af_selectOrderShuttle_box-end"></td>
                  </tr><tr>
                    <td class="af_selectOrderShuttle_box-bottom-start"></td>
                      
                    <td class="af_selectOrderShuttle_box-bottom"></td>

                      
                    <td class="af_selectOrderShuttle_box-bottom-end"></td>
                  </tr></tbody></table></td>
              
            <td align="center" valign="middle" nowrap style="padding:5px"><a href="" class="moz-txt-link-rfc2396E" href="_javascript_:TrShuttleProxy._moveItems('content:shuttle1:leading','content:shuttle1:trailing');">"_javascript_:TrShuttleProxy._moveItems('content:shuttle1:leading','content:shuttle1:trailing');"><img src="" width="16" height="16" border="0" style="display:block" title="Move selected items to other list" alt="Move selected items to other list"></a><a href="" class="moz-txt-link-rfc2396E" href="_javascript_:TrShuttleProxy._moveItems('content:shuttle1:leading','content:shuttle1:trailing');">"_javascript_:TrShuttleProxy._moveItems('content:shuttle1:leading','content:shuttle1:trailing');" class="xi" title="Move selected items to other list">Move</a><div style="margin-top:5px"></div><a href="" class="moz-txt-link-rfc2396E" href="_javascript_:TrShuttleProxy._moveAllItems('content:s
huttle1:leading','content:shuttle1:trailing');">"_javascript_:TrShuttleProxy._moveAllItems('content:shuttle1:leading','content:shuttle1:trailing');"><img src="" width="16" height="16" border="0" style="display:block" title="Move all items to other list" alt="Move all items to other list"></a><a href="" class="moz-txt-link-rfc2396E" href="_javascript_:TrShuttleProxy._moveAllItems('content:shuttle1:leading','content:shuttle1:trailing');">"_javascript_:TrShuttleProxy._moveAllItems('content:shuttle1:leading','content:shuttle1:trailing');" class="xi" title="Move all items to other list">Move All</a><div style="margin-top:5px"></div><a href="" class="moz-txt-link-rfc2396E" href="_javascript_:TrShuttleProxy._moveItems('content:shuttle1:trailing','content:shuttle1:leading');">"_javascript_:TrShuttleProxy._moveItems('content:shuttle1:trailing','content:shuttle1:leading');"><img src="" width="16" height="16" border="0" style="display:block" title="Remove selected items from list" alt="Remove selected items from list"></a><a href="" class="moz-txt-link-rfc2396E" href="_javascript_:TrShuttleProxy._moveItems('content:shuttle1:trailing','content:shuttle1:leading');">"_javascript_:TrShuttleProxy._moveItems('content:shuttle1:trailing','content:shuttle1:leading');" class="xi" title="Remove selected items from list">Remove</a><div style="margin-top:5px"></div><a href="" class="moz-txt-link-rfc2396E" href="_javascript_:TrShuttleProxy._moveAllItems('content:shuttle1:trailing','content:shuttle1:leading');">"_javascript_:TrShuttleProxy._moveAllItems('content:shuttle1:trailing','content:shuttle1:leading');"><img src="" width="16" height="16" border="0" style="display:block" title="Remove all items from list" alt="Remove all items from list"></a><a href=<
a class="moz-txt-link-rfc2396E" href="">"_javascript_:TrShuttleProxy._moveAllItems('content:shuttle1:trailing','content:shuttle1:leading');" class="xi" title="Remove all items from list">Remove All</a></td>
              
            <td><!--Start: org.apache.myfaces.trinidad.SelectOrder["shuttle1"]--><table class="af_selectOrderShuttle_box" style="width:100%" cellpadding="0" cellspacing="0" border="0" summary=""><tbody><tr>
                    <td class="af_selectOrderShuttle_box-top-start"></td>
                      
                    <td class="af_selectOrderShuttle_box-top"></td>
                      
                    <td class="af_selectOrderShuttle_box-top-end"></td>

                  </tr><tr>
                    <td class="af_selectOrderShuttle_box-start"></td>
                      
                    <td class="x59"><div class="x55"><table cellpadding="0" border="0" summary=""><tr>
                            <td nowrap valign="middle"><!--Start: org.apache.myfaces.trinidad.SelectOrder["shuttle1"]--><span class="x1i">
                                <select multiple id="content:shuttle1:trailing" name="content:shuttle1:trailing" title="Selected values:"   class="x1y" size="10">
                                  <option value="">_______________</option>
                                </select>
                                <!--Start: org.apache.myfaces.trinidad.SelectOrder["shuttle1"]--><label for="" class="x8v">Selected values:</label></span></td>

                              
                            <td align="center" valign="middle"><a href="" class="moz-txt-link-rfc2396E" href="_javascript_:TrShuttleProxy._orderTopBottomList(0,'content:shuttle1:trailing');">"_javascript_:TrShuttleProxy._orderTopBottomList(0,'content:shuttle1:trailing');"><img src="" width="16" height="16" border="0" title="Move selected items to top of list" alt="Move selected items to top of list"></a><br><a href="" class="moz-txt-link-rfc2396E" href="_javascript_:TrShuttleProxy._orderList(0,'content:shuttle1:trailing');">"_javascript_:TrShuttleProxy._orderList(0,'content:shuttle1:trailing');"><img src="" width="16" height="16" border="0" title="Move selected items up one in list" alt="Move selected items up one in list"></a><img src="" alt="" width="1" height="15"><br><a href="" class="moz-
txt-link-rfc2396E" href="_javascript_:TrShuttleProxy._orderList(1,'content:shuttle1:trailing');">"_javascript_:TrShuttleProxy._orderList(1,'content:shuttle1:trailing');"><img src="" width="16" height="16" border="0" title="Move selected items down one in list" alt="Move selected items down one in list"></a><br><a href="" class="moz-txt-link-rfc2396E" href="_javascript_:TrShuttleProxy._orderTopBottomList(1,'content:shuttle1:trailing');">"_javascript_:TrShuttleProxy._orderTopBottomList(1,'content:shuttle1:trailing');"><img src="" width="16" height="16" border="0" title="Move selected items to bottom of list" alt="Move selected items to bottom of list"></a></td>
                              
                            <td></td>
                          </tr><tr>
                            <td nowrap valign="middle"></td>
                              
                            <td><img src="" alt="" width="1" height="8"></td>
                          </tr><tr>
                            <td nowrap valign="middle" colspan="3"><span class="x0">Description</span><div></div>
                              <textarea rows="2" id="content:shuttle1:trailing:desc" name="content:shuttle1:trailing:desc" readonly cols="18" wrap="soft"></textarea>

                              <!--Start: org.apache.myfaces.trinidad.SelectOrder["shuttle1"]--><label for="" class="x8v">Description</label></td>
                              
                            <td><img src="" alt="" width="1" height="68"></td>
                          </tr></table></div></td>
                      
                    <td class="af_selectOrderShuttle_box-end"></td>
                  </tr><tr>
                    <td class="af_selectOrderShuttle_box-bottom-start"></td>
                      
                    <td class="af_selectOrderShuttle_box-bottom"></td>
                      
                    <td class="af_selectOrderShuttle_box-bottom-end"></td>

                  </tr></tbody></table><input type="hidden" name="content:shuttle1:leading:items" value="0;1;2;"><input type="hidden" name="content:shuttle1:trailing:items" value=""><script>content_shuttle1_leading_desc=new Array('The First Item Desc','The Second Item Desc','The Third Item Desc','');content_shuttle1_trailing_desc=new Array('');window["_content_j_id_jsp_709084578_0pc4_content_shuttle1_orig"]=TrShuttleProxy._copyLists('content_shuttle1','content_j_id_jsp_709084578_0pc4');</script></td>
          </tr></table><!--Start: org.apache.myfaces.trinidad.SelectOrder["shuttle1"]--><label for="" class="x8v">Selected Values</label><div><!--Start: org.apache.myfaces.trinidad.Object["j_id_jsp_709084578_2pc4"]-->
          <hr class="af_separator">
        </div><!--Start: org.apache.myfaces.trinidad.Message["j_id_jsp_709084578_8pc4"]--><span class="x89"><span id="content:shuttle1::msg" style="display:none;" class="x8e"></span></span><div><!--Start: org.apache.myfaces.trinidad.Object["j_id_jsp_709084578_2pc4"]-->
          <hr class="af_separator">
        </div><!--Start: org.apache.myfaces.trinidad.Command["j_id_jsp_709084578_9pc4"]-->
        <button type="button"  class="x6l">Submit</button>

      </div><input type="hidden" name="org.apache.myfaces.trinidad.faces.FORM" value="content:j_id_jsp_709084578_0pc4"><span id="_content:j_id_jsp_709084578_0pc4_Postscript"><input type="hidden" name="javax.faces.ViewState" value="!7dd856e8"><script>function _content_j_id_jsp_709084578_0pc4Validator(){return true;}var content_j_id_jsp_709084578_0pc4_SF={};</script><script>var _content_j_id_jsp_709084578_0pc4_Reset=['_resetItems(\'content_shuttle1\',\'content_j_id_jsp_709084578_0pc4\');'];</script></span><script>_submitFormCheck();</script>
   </form>
   ...

I have not included the generated Trinidad _javascript_, but I have
confirmed that it is generated at
http://localhost:8080/myWebApp/adf/jsLibs/DebugCommon1_2_1.js where
_javascript_ debug output from Trinidad is turned on.

I noticed that the live demo does work for the SelectManyShuttle when
you turn on the leading and trailingDescShown attributes using the
embedded attribute editor. I also noticed that the generated live demo
_javascript_ code appears to be different than the generated code that I
am seeing in my HTML.

I can see that there is a hidden input element with its onchange
attribute set to:

	

and that there is inline _javascript_ generated as:

	<script>content_shuttle1_leading_desc=new Array('The First Item Desc',
							'The Second Item Desc',
							'The Third Item Desc','');
		content_shuttle1_trailing_desc=new Array('');
		window["_content_j_id_jsp_709084578_0pc4_content_shuttle1_orig"]=
			TrShuttleProxy._copyLists('content_shuttle1','content_j_id_jsp_709084578_0pc4');
	</script>


I could grab the generated source and the generated _javascript_ and put
the two together, but I'm hesitant to go to them much reverse
engineering effort, if someone can see the problem and offer a solution
or offer a simple example first.

Has anyone else succeeded in getting the SelectOrderShuttle leading or
trailingDescShown textarea working? If so, can you see what I have
failed to do or alternatively post a "small" example that works with
Trinidad v1.2.1?

I have also tried a SelectManyShuttle and everything works with it as
well except, of course, displaying the description in the text area.

                                                  -=> Gregg <=-



  

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to