I think that there are some good things to think about and talk about here. I just don't have time at the moment to really dive into this. Just wanted to respond so as not to look like I am ignoring the response.
-A On Fri, May 16, 2008 at 11:08 AM, Blake Sullivan <[EMAIL PROTECTED]> wrote: > OK, looking at the rest of the JIRA issues: > > https://issues.apache.org/jira/browse/TRINIDAD-664 > > Is a request for a component to add partial trigger functionality to > non-Trinidad components. The supplied code is uncommented, so some of the > proposed functionality is unclear, however this raises the general issue of > whether there is additional Trinidad functionality that we would like to add > to an adapter component. On the implementation side, now that we have > FlattenedComponents, all behavior-only components should be implemented as > flattened components. > > https://issues.apache.org/jira/browse/TRINIDAD-663 > > As noted in the JIRA, this is actually three different issues: > > It is not currently possible out of the box to control when in the JSF > lifecycle a Trinidad component triggers its partial notification outside of > actually changing the phase ID of the events, which is not always possible. > > Also, it is very difficult to have a component listen to many components. > For example, someone may want to say, re-render component x when any child > of y is triggered. > > There is also no functionality for a push type of PPR. Meaning that right > now components specify that they want to be triggered, but there is no way > to say for a component to target other components (for example, specify on a > button to re-render a text box, instead of specifying on a text-box to > re-render on that button). > > Of these, Adam clearly doubted whether the first was necessary or desirable: > > On 8/28/07, Andrew Robinson <[EMAIL PROTECTED]> wrote: >> I got it to work with a custom component. I created a component that >> doesn't render, that simply houses children. In the queueEvent method >> of that component, if the type of the event is ActionEvent, I then use >> it to add components as partial targets. >> >> It just would be nice to have this supported by Trinidad out of the >> box. A4J creates AjaxEvents that have their phase ID set to ANY, so >> they fire almost immediately, and thus work regardless of what phases >> are run. >> >> I'm just wondering if there would be any harm to moving the code from >> the broadcast method to the queue method. > « [hide part of quote] > Yes, there would be! It'd break the semantics of partialTriggers. > > If you want your action event to fire in the "ANY" phase, just set > immediate="true". > > -- Adam > > The second of these--PPRing a container when children fire a PPR-triggering > event, is interesting but one of those cases where it would be nice to > collect up the possible use cases (is it any descendant or only children, > would we need additional filtering controls--for example by type of > component or type of triggering event, etc.) but the bigger issue is that if > we were to add this functionality to Trinidad itself, wouldn't it be more > natural to do so by adding a real partial trigger object and then allowing > page authors who need a more specialized trigger to use an > <af:partialTrigger> tag to add it declaratively (if we do need the > functionality from the first item, this behavior could also be specified on > the PartialTrigger object) > > The third of these, adding support for partialTargets in addition to > partialTriggers is interesting. When I originally implemented PPR for UIX, > the forerunner of ADF Faces and Trindad, the components had a partialTargets > attribute that specified the components to PPR when the component in > question fired an event. I did this because: > 1) It mapped directly to the implementation, which only cares about which > components need to be PPRed on a particular request > 2) I just didn't think to hard about the fact that I had done things > backwards and that partialTriggers was the right way to do this if we were > only going to have one way, so it was a good thing Adam changed this when he > converted the UIX code to the ADF Faces code. > > Anyway, if we really do need to declaratively support both schemes, the main > question is what is the best way of exposing the functionality. We have a > continuum of page author convenience and discoverability that looks like > this: > > 1) Collection attribute on component exposed as an attribute on the > component tag (partialTargets="foo bar") > 2) Collection attribute on component exposed as an attribute tag > (<af:partialTarget target="foo"/><af:partialTarget target="bar"/>) > 3) Declarative event listener on component (<af:partialTarget targets="foo > bar"/>)(The tricky part here is that components don't fire a PPR event to > listen to) > 4) Wrapper component > > I think that 3) is actually the most architecturally pleasing, but requires > the most change to the component and PPR infrastructure (though not in any > interesting way). 1) and 2) are closest to how partialTriggers are > exposed. 4) requires the least work from the rest of the system, but is the > most different. Which of these we prefer, if we want to go here at all > right now, also depends on how often we think page authors would use this > feature. > > -- Blake Sullivan > > Andrew Robinson said the following On 5/15/2008 2:02 PM PT: > > I would like to get back on track to the original subject and not let > the messaging subject hijack the thread. > > Original topic: > Is there enough interest from the developer community in supporting > non-HTML PPR based components oriented for making PPR more declarative > and extend PPR support for non-Trinidad components. > > I can write such components, but to be any use to the community there > needs to be more than one developer supporting such a set of > components so that the are adequately maintained. > > @Blake - feel free to start a new thread on TRINIDAD-697 if you wish > or if you feel so inclined, provide a patch for the framework fix. > > Thanks, > Andrew > > > > On Thu, May 15, 2008 at 2:52 PM, Blake Sullivan > <[EMAIL PROTECTED]> wrote: > > > Andrew Robinson said the following On 5/15/2008 12:08 PM PT: > > > Taking one use case and putting it at the framework level will not > address all possible use cases. The desire to have something always > rendered does not have to be limited to messages. Furthermore, this > assumes that messages are always shown using the Trinidad framework, > which is a bad assumption. For example, the Tomahawk message component > is much better for customizability than the Trinidad one. > > > > Are you saying that Adam's proposal does completely solve the issue raised > in > > but you have further goals mentioned in Trinidad-663 and Trinidad-664 or not > mentioned in any Jira that you would also like to address. However, even if > Adam's proposal doesn't address all of your issues, it sounds like we would > want to use it to solve Trinidad-697 because it can solve this case without > any page hacking on the part of the page author. > > -- Blake Sullivan > > > > Adding a new components gives users the flexibility to choose the way > they want to implement it and be able to work with non-Trinidad > libraries. IMO this is a much better solution than a small enhancement > for Trinidad messaging and JavaScript. > > -Andrew > > On Thu, May 15, 2008 at 12:24 PM, Blake Sullivan > <[EMAIL PROTECTED]> wrote: > > > > Why doesn't Adam's proposal: > > This all seems like enormous overkill *just* to get messages > sent down. We have Javascript that can insert messages > on the client. All we need to do is lean slightly on that code > to reuse it for inserting server-side messages, and this'll work fine > without any architectural changes at all. > > -- Adam > > Solve > > https://issues.apache.org/jira/browse/TRINIDAD-697 > > at the framework level? > > -- Blake Sullivan > > > Andrew Robinson said the following On 5/15/2008 11:03 AM PT: > > > > He mentioned ways to do it using backing beans and non-declarative > ways. He also didn't like my "always render" functionality of one of > the components. > > Here are the links for just the 2 components that I already did and > bugs and discussions surrounding them (but I think there is room for > more along these lines): > > https://issues.apache.org/jira/browse/TRINIDAD-697 > https://issues.apache.org/jira/browse/TRINIDAD-663 > https://issues.apache.org/jira/browse/TRINIDAD-664 > > > > https://svn.apache.org/repos/asf/myfaces/trinidad/branches/arobinson-ppr-components > > Related discussions: > > http://tinyurl.com/5vdb57 > http://tinyurl.com/5mrm8k > http://tinyurl.com/56zk8f > > -Andrew > > On Thu, May 15, 2008 at 11:25 AM, Blake Sullivan > <[EMAIL PROTECTED]> wrote: > > > > > Andrew Robinson said the following On 5/14/2008 6:40 PM PT: > > > > > In the past, I created 2 new components to make PPR easier from a > declarative stand point. At the time, Adam Winer disagreed with their > inclusion. Now, I wanted to see if there would be any objections to > such > components. > > > > > Adam is pretty reasonable about these kinds of things. What were his > objections? > > -- Blake Sullivan > > > > > > I was thinking that that they would go in the sandbox first, then if > they > seem to be acceptible, move them into a new tag namespace (like tra: > for > AJAX or trp: for ppr). > > I won't be working on this right away probably as I am still working > on > the new demo when I have the time and energy, but I wanted to get a > feel > for > what people think. > > An example component is one that can trigger a PPR re-rendering if any > children components either (1) queue an event (immedate) or (2) > broadcast an > event. > > -Andrew > > Sent from my iPod > > > > > > > > > >