Hi Karam,
Ken is at O'Reilly Open Source Convention this week. Not sure if he
will be able to address this till next week.
Anissa.
Karam Singh Badesha wrote:
> Ken,
> Any update?
>
> thanks
> Karam
>
> Ken Paulsen wrote:
>>
>> Hi Karam,
>>
>> I'm sorry I haven't made any progress. I will make an effort to get
>> something for you to look at this week.
>>
>> Ken
>>
>> Karam.Badesha_at_Sun.COM wrote:
>>> Ken,
>>> Any updates?
>>>
>>> thanks
>>> -Karam
>>>
>>> Ken Paulsen wrote:
>>>
>>>>
>>>> The foreach that I currently have is a component itself. So it
>>>> won't create multiple TableColumn components. Also the tree doesn't
>>>> allow non-tree UIComponents inside it.
>>>>
>>>> If we add a foreach that is executed during the creation time, then
>>>> yes... it would work. In JSFT, it wouldn't be too hard to do this
>>>> since the descriptors (LayoutElement) already exist for looping,
>>>> they'd just have to be used during the tree creation... which
>>>> amounts to 1 extra condition. We'd probably need a flag indicating
>>>> that it is intended for tree-creation time... or perhaps a subclass
>>>> of the existing while/foreach layoutelements.
>>>>
>>>> Ken
>>>>
>>>> Imre Oßwald wrote:
>>>>
>>>>> Couldn't that be done with some kind of foreach? (I think i have
>>>>> done that in facelets that way)
>>>>>
>>>>> Imre
>>>>>
>>>>> On 04.07.2007, at 03:17, Karam Singh Badesha wrote:
>>>>>
>>>>>> Ok great.
>>>>>>
>>>>>> thanks
>>>>>> Karam
>>>>>>
>>>>>> Ken Paulsen wrote:
>>>>>>
>>>>>>>
>>>>>>> I think I have enough to go on. I'm going to try to make this
>>>>>>> generic and put it in the JSFT code. Although when I get into
>>>>>>> it, I may change my mind. ;)
>>>>>>>
>>>>>>> Thanks!
>>>>>>>
>>>>>>> Ken
>>>>>>>
>>>>>>> Karam Singh Badesha wrote:
>>>>>>>
>>>>>>>> Ken,
>>>>>>>> This should be fine. Let me know if you are going to deliver
>>>>>>>> this directly to the jsftemplating repository or release as
>>>>>>>> separate jar file. I am out of the office until July11 so might
>>>>>>>> not be able to respond any questions that you send later. If
>>>>>>>> there is anything else you want to know, please let me know now.
>>>>>>>>
>>>>>>>> thanks
>>>>>>>> Karam
>>>>>>>>
>>>>>>>> Ken Paulsen wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Hi Karam,
>>>>>>>>>
>>>>>>>>> Supporting the attributes you need on the column could look
>>>>>>>>> something like this:
>>>>>>>>>
>>>>>>>>> <sun:table ...>
>>>>>>>>> <sun:dynamicColumnTableRowGroup data="#{dataOnly}"
>>>>>>>>> columnId="#{listOfIds}"
>>>>>>>>> columnHeaderText="#{listOfHeaderText}"
>>>>>>>>> columnFooterText="#{listOfFooterText}"
>>>>>>>>> columnRowHeader="#{listOf...}"
>>>>>>>>> columnSort="#{listOf...}"
>>>>>>>>> columnAlign="#{listOf...}"
>>>>>>>>> columnWidth="#{listOf...}"
>>>>>>>>> columnSpacerColumn="#{listOf...}"
>>>>>>>>> [TableRowGroup properties here]
>>>>>>>>> />
>>>>>>>>> </sun:table>
>>>>>>>>>
>>>>>>>>> It is necessary to pass in a List of values because each
>>>>>>>>> column needs a value for each of these properties.
>>>>>>>>>
>>>>>>>>> There are other ways (including passing in a data structure
>>>>>>>>> that contains all the info in one EL expression), I'd like to
>>>>>>>>> know what you'd prefer. I'd also probably want to support all
>>>>>>>>> the other TRG properties to make it generally useful.
>>>>>>>>>
>>>>>>>>> Ken
>>>>>>>>>
>>>>>>>>> Karam Singh Badesha wrote:
>>>>>>>>>
>>>>>>>>>> Ken,
>>>>>>>>>> Actually TableRowGroup is ok to stay on the jsf page, all I
>>>>>>>>>> need is a way to pass the various columns (tableColumn) to
>>>>>>>>>> the page. Currently on tableColumn I only use following
>>>>>>>>>> properties:
>>>>>>>>>> id headerText
>>>>>>>>>> footerText
>>>>>>>>>> rowHeader
>>>>>>>>>> sort
>>>>>>>>>> align
>>>>>>>>>> width
>>>>>>>>>> spacerColumn
>>>>>>>>>>
>>>>>>>>>> In the following example:
>>>>>>>>>> <sun:table ...>
>>>>>>>>>> <sun:dynamicColumnTableRowGroup data="#{dataOnly}"
>>>>>>>>>> columnVisible="#{listOfVisibleValuesOneForEachColumn}"
>>>>>>>>>> columnSortIcon="#{listOfSortIconValuesOneForEachColumn}"
>>>>>>>>>> ...
>>>>>>>>>> [TableRowGroup properties here] />
>>>>>>>>>> </sun:table>
>>>>>>>>>>
>>>>>>>>>> What does columnVisible and columnSortIcon do? In this
>>>>>>>>>> approach where do I specify the columnHeaders? If this
>>>>>>>>>> approach is straight forward and I can get the column headers
>>>>>>>>>> etc from a resource file, its fine with me.
>>>>>>>>>>
>>>>>>>>>> thanks
>>>>>>>>>> Karam
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Ken Paulsen wrote:
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Hi Karam,
>>>>>>>>>>>
>>>>>>>>>>> We need to work out what tableData's data structure looks
>>>>>>>>>>> like. The table component could have all it's properties as
>>>>>>>>>>> as it normally does (no need to worry about them). However,
>>>>>>>>>>> you're hiding the tableRowGroup and tableColumn
>>>>>>>>>>> components... so they'll need to be created from the data.
>>>>>>>>>>>
>>>>>>>>>>> TableRowGroup supports the following properties:
>>>>>>>>>>>
>>>>>>>>>>> tableDataSorter
>>>>>>>>>>> onDblClick
>>>>>>>>>>> onKeyPress
>>>>>>>>>>> sourceData
>>>>>>>>>>> aboveColumnFooter
>>>>>>>>>>> extraFooterHtml
>>>>>>>>>>> onKeyUp
>>>>>>>>>>> onMouseUp
>>>>>>>>>>> extraHeaderHtml
>>>>>>>>>>> footerText
>>>>>>>>>>> align
>>>>>>>>>>> selectMultipleToggleButton
>>>>>>>>>>> onClick
>>>>>>>>>>> groupToggleButton
>>>>>>>>>>> toolTip
>>>>>>>>>>> onMouseDown
>>>>>>>>>>> tableDataFilter
>>>>>>>>>>> multipleColumnFooters
>>>>>>>>>>> rows
>>>>>>>>>>> sourceVar
>>>>>>>>>>> valign
>>>>>>>>>>> first
>>>>>>>>>>> onMouseOut
>>>>>>>>>>> multipleTableColumnFooters
>>>>>>>>>>> onMouseOver
>>>>>>>>>>> onMouseMove
>>>>>>>>>>> emptyDataMsg
>>>>>>>>>>> selected
>>>>>>>>>>> collapsed
>>>>>>>>>>> visible
>>>>>>>>>>> aboveColumnHeader
>>>>>>>>>>> onKeyDown
>>>>>>>>>>> headerText
>>>>>>>>>>> styleClasses
>>>>>>>>>>> aboveColumnHeader
>>>>>>>>>>> onKeyDown
>>>>>>>>>>> headerText
>>>>>>>>>>> styleClasses
>>>>>>>>>>>
>>>>>>>>>>> TableRowGroup also supports these facets:
>>>>>>>>>>>
>>>>>>>>>>> header
>>>>>>>>>>> footer
>>>>>>>>>>>
>>>>>>>>>>> TableColumn supports these properties:
>>>>>>>>>>>
>>>>>>>>>>> spacerColumn
>>>>>>>>>>> width
>>>>>>>>>>> onDblClick
>>>>>>>>>>> sort
>>>>>>>>>>> selectedId
>>>>>>>>>>> onKeyPress
>>>>>>>>>>> severity
>>>>>>>>>>> rendered
>>>>>>>>>>> rowHeader
>>>>>>>>>>> extraTableFooterHtml
>>>>>>>>>>> extraFooterHtml
>>>>>>>>>>> onKeyUp
>>>>>>>>>>> onMouseUp
>>>>>>>>>>> styleClass
>>>>>>>>>>> descending
>>>>>>>>>>> embeddedActions
>>>>>>>>>>> height
>>>>>>>>>>> extraHeaderHtml
>>>>>>>>>>> align
>>>>>>>>>>> footerText
>>>>>>>>>>> scope
>>>>>>>>>>> style
>>>>>>>>>>> sortImageURL
>>>>>>>>>>> onClick
>>>>>>>>>>> sortIcon
>>>>>>>>>>> toolTip
>>>>>>>>>>> onMouseDown
>>>>>>>>>>> alignKey
>>>>>>>>>>> tableFooterText
>>>>>>>>>>> valign
>>>>>>>>>>> noWrap
>>>>>>>>>>> onMouseOut
>>>>>>>>>>> onMouseOver
>>>>>>>>>>> emptyCell
>>>>>>>>>>> visible
>>>>>>>>>>> onMouseOut
>>>>>>>>>>> onMouseOver
>>>>>>>>>>> onMouseMove
>>>>>>>>>>> emptyCell
>>>>>>>>>>> visible
>>>>>>>>>>> onKeyDown
>>>>>>>>>>> headerText
>>>>>>>>>>>
>>>>>>>>>>> TableColumn defines these facets:
>>>>>>>>>>>
>>>>>>>>>>> footer
>>>>>>>>>>> header
>>>>>>>>>>> tableFooter
>>>>>>>>>>>
>>>>>>>>>>> So as you can see, the data structure is non-trivial.
>>>>>>>>>>> However, it may not be as bad as it seems either. If we can
>>>>>>>>>>> agree to not try to generate TableRowGroup, we can leave its
>>>>>>>>>>> definition in the .jsf file. I don't think it adds a lot of
>>>>>>>>>>> value to try to eliminate it. As for all the properties on
>>>>>>>>>>> TableColumn... we could decide to support only a subset.
>>>>>>>>>>> And/or we could create a naming pattern to cause the factory
>>>>>>>>>>> to apply the values correctly -- this is made more
>>>>>>>>>>> difficult, however, b/c there are multiple TableColumns and
>>>>>>>>>>> the values may vary between the TableColumns.
>>>>>>>>>>>
>>>>>>>>>>> So we need to know what properties will be supported
>>>>>>>>>>> directly by your proposed "data" property (if any), and
>>>>>>>>>>> which will require additional properties in the jsf file
>>>>>>>>>>> delegate. For example:
>>>>>>>>>>>
>>>>>>>>>>> <sun:table ...>
>>>>>>>>>>> <sun:dynamicColumnTableRowGroup
>>>>>>>>>>> data="#{dataPlusPropertiesForAllTableColumns}"
>>>>>>>>>>> [tableRowGroup properties here] />
>>>>>>>>>>> </sun:table>
>>>>>>>>>>>
>>>>>>>>>>> OR:
>>>>>>>>>>>
>>>>>>>>>>> <sun:table ...>
>>>>>>>>>>> <sun:dynamicColumnTableRowGroup data="#{dataOnly}"
>>>>>>>>>>> columnVisible="#{listOfVisibleValuesOneForEachColumn}"
>>>>>>>>>>> columnSortIcon="#{listOfSortIconValuesOneForEachColumn}"
>>>>>>>>>>> ...
>>>>>>>>>>> [TableRowGroup properties here] />
>>>>>>>>>>> </sun:table>
>>>>>>>>>>>
>>>>>>>>>>> As you can see, the first approach requires a complex data
>>>>>>>>>>> structure that you must populate. The 2nd approach requires
>>>>>>>>>>> you to create the same order of complexity, however, it is
>>>>>>>>>>> distributed among multiple List objects which contain the
>>>>>>>>>>> properties to set for each column.
>>>>>>>>>>>
>>>>>>>>>>> What do you think?
>>>>>>>>>>>
>>>>>>>>>>> A 1-off solution wouldn't have to be so generic and could be
>>>>>>>>>>> more specific to your data and needs. You could use either
>>>>>>>>>>> the "binding" attribute, or a custom factory (like above),
>>>>>>>>>>> but it would allow to only do the work you need for your use
>>>>>>>>>>> case.
>>>>>>>>>>>
>>>>>>>>>>> Ken
>>>>>>>>>>>
>>>>>>>>>>> Karam Singh Badesha wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Here is example of how it might look like in .jsf file:
>>>>>>>>>>>>
>>>>>>>>>>>> <sun:table data="#{pageSession.tableData}"
>>>>>>>>>>>>
>>>>>>>>>>>> .../>
>>>>>>>>>>>>
>>>>>>>>>>>> tableData will have all the column tag information and in
>>>>>>>>>>>> the .jsf page there will be no column tags. Please suggest
>>>>>>>>>>>> a way to take care of this. It is not really my app
>>>>>>>>>>>> specific, it can be used by anyone.
>>>>>>>>>>>>
>>>>>>>>>>>> thanks
>>>>>>>>>>>> Karam
>>>>>>>>>>>>
>>>>>>>>>>>> Karam Singh Badesha wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Ken,
>>>>>>>>>>>>> Here is an example of what I am trying to do:
>>>>>>>>>>>>>
>>>>>>>>>>>>> Right now in the .jsf page I have to list the column tag
>>>>>>>>>>>>> with header etc. I have the situation where I have drop
>>>>>>>>>>>>> down boxes and depending upon different selections, number
>>>>>>>>>>>>> of columns and column headers could change. And I want the
>>>>>>>>>>>>> control to be defined in the Resources file, etc number of
>>>>>>>>>>>>> columns, column headers etc. I am not sure how it will
>>>>>>>>>>>>> work myself, as the jsf code is changing (when number of
>>>>>>>>>>>>> columns change). I think when we talked last time, you
>>>>>>>>>>>>> suggested that I somehow create the table object in java
>>>>>>>>>>>>> code (handler) and pass it to the page. What do you
>>>>>>>>>>>>> suggest? Let me know if this is clear or not.
>>>>>>>>>>>>>
>>>>>>>>>>>>> thanks
>>>>>>>>>>>>> Karam
>>>>>>>>>>>>>
>>>>>>>>>>>>> Ken Paulsen wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi Karam,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I can look into doing this... however, after reading the
>>>>>>>>>>>>>> issue more closely, I need some more information from
>>>>>>>>>>>>>> you. How do you want to specify the table columns from
>>>>>>>>>>>>>> the page?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> TableColumns typically have children, so they'd also have
>>>>>>>>>>>>>> to be created. Do you want those to just be staticText?
>>>>>>>>>>>>>> Or do you want control over what type they are also?
>>>>>>>>>>>>>> Which TableColumn attribute do you want control over?
>>>>>>>>>>>>>> Perhaps you can provide an example of what you'd like it
>>>>>>>>>>>>>> to look like in the .jsf file?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> After looking at this more closely, I suspect this may
>>>>>>>>>>>>>> end up being custom for your needs. However, if I can
>>>>>>>>>>>>>> keep it generic and useful for others as well, I will.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Ken
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Karam Singh Badesha wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi Ken,
>>>>>>>>>>>>>>> Is it possible to get a solution for issue #10 in
>>>>>>>>>>>>>>> jsftemplating? I really need some solution for this so
>>>>>>>>>>>>>>> that create dynamic tables. Please let me know.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> thanks
>>>>>>>>>>>>>>> Karam
>>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>