* CellCall and CellReturn

The Manage example could be implemented in a different way as well:

<span jwcid="@Cell">
<span jwcid="[EMAIL PROTECTED]:Table" source="ognl:source" columns="..., !edit">
    ...
    <span jwcid="[EMAIL PROTECTED]">
        <span jwcid="@CellCall" go="EditValue"
call:valueParam="ognl: components.table.tableValue">Edit</span>
    </span>
</span>
</span>

Here, CellLink is replaced with CellCall and everything else is (almost) the same. The implementation of the EditValue component is different however. In the original example, EditValue must have a CellLink that returns to the core Manage component and therefore it will be tied to Manage. With CellCall invocation it will have a CellReturn instead of a CellLink in its template which will return it to the place that invoked it. As such, it will not be tied to Manage at all -- other places in the application can use that component as well.

Perhaps other parameters to CellCall will be useful as well, such as 'returnListener' and 'returnGo', for example -- a listener that will be invoked when the call is returned and a target that will transitioned to under the same circumstances.

-mb


Mind Bridge wrote:
Hi,

Since values can be stored on the client (in URLs or hidden fields) T4 allows some rather nifty things to be implemented. I had been planning to create a library of components that provide some of the features for many months now, but unfortunately I simple lack the time to concentrate on the development.

Some of the topics discussed in this forum are related to what I would like to do, so I will describe my suggestions here in the hope that they may be useful.


* Local links

Currently it is not natural to create complex components that consist of several screens. For example, one should be able to easily create a component that provides CRUD functionality for editing the contents of the list:

<span jwcid="@Manage" source="ognl: objects" createType="org.mb.manage.Example"/>

The idea is that the Manage component should have several screens:
   - list elements
   - create new element
   - edit element
   - confirm delete
Trails provides a similar ability (plus storing the data into a database), but its implementation (not its use) has to jump through hoops to achieve it -- it is certainly possible, but not straight-forward.

One simple reason that links in Tapestry operate on the level of the page, but there are no standard link components that operate on the level of a section of the page. If it is possible to use this ability (which I termed in my work "Cell"), one could implement Manage like this:

<span jwcid="@Cell">
<span jwcid="[EMAIL PROTECTED]:Table" source="ognl:source" columns="name:toString(), !edit">
     ...
     <span jwcid="[EMAIL PROTECTED]">
         <span jwcid="@CellLink" go="editValue"
link:valueParam="ognl: components.table.tableValue">Edit</span>
     </span>
 </span>
</span>

There are several things to note in this example:
- CellLink is similar to a DirectLink, but it only operates on the Cell in which it is placed (or on another Cell which can be passed as a parameter). Everything else outside the Cell remains the same -- there are no page changes. - If CellLink has a listener (like a DirectLink), then the listener will be invoked and it can change the component displayed in the selected Cell. In this case, however, the 'go' parameter is used instead which is analogous to the listener returning a given value. Basically the 'go' parameter in here says to go to the 'editValue' component (or Block). - The "link:valueParam" essentially says that the current table value must be passed to the valueParam parameter of the component. In this case this allows the editValue component to be rendered correctly with the provided table value. The combination of "go" and "link:<param>" allow the user to perform functions that would otherwise require code to complete. (Note that "link:<param>" requires the value to be stored using client-side property)

There are a number of other items that I want to mention in relation to Cell, such as the CellCall and the CellReturn components, page flow (and no, the current solutions are fundamentally limited I believe), page parameters, etc, but I will write about them later.

A part of this functionality is strongly related to Ajax and is already implemented in Tacos. This approach must be able to operate correctly w/o JavaScript as well, however. So Ajax is not the core, but simply a way to help the operation.

Since I do not have the ability to work on the ideas at the moment, please feel free to implement the above if the ideas seem reasonable and useful to you...

Best regards,
- mb



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to