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
>>>>>