On Oct 11, 2010, at 4:58 PM, David Avendasora wrote:

> 
> On Oct 11, 2010, at 4:48 PM, Ramsey Gurley wrote:
> 
>> 
>> On Oct 11, 2010, at 4:28 PM, David Avendasora wrote:
>> 
>>> Hey Ramsey,
>>> 
>>> I'm using the branch delegate in other places where the user is given a 
>>> choice of what the next page should be, but I thought that since I'm 
>>> figuring it out on-the-fly during the request that nextPageDelegate was the 
>>> way to go. I've revised my NPD and here's what it looks like now:
>>> 
>>>  public WOComponent nextPage(WOComponent sender) {
>>>      WOComponent nextPage;
>>>      if (((ERD2WQueryPage) sender).queryDataSource()
>>>                .fetchObjects()
>>>                .count() == 1) {
>>>          InspectPageInterface ipi = 
>>> D2W.factory().inspectPageForEntityNamed(Student.ENTITY_NAME, 
>>> sender.session());
>>>          ((ERD2WInspectPage) ipi).setObject((Student) ((ERD2WQueryPage) 
>>> sender).queryDataSource().fetchObjects().lastObject());
>> 
>> You may want to consider getting your object first, then using 
>> object.entityName() in your factory method to make this more generally 
>> reusable.
> 
> See, now that's just genius. This can be a delegate that works for any EO, 
> not just Student. Brilliant!

One rule:

100 : pageConfiguration like 'Query*' => nextPageDelegate = 
com.my.application.delegates.QueryToListOrInspectNextPageDelegate 
[er.directtoweb.ERDDelayedObjectCreationAssignment]

Applies this logic to all searches, for any Entity.

D2W is awesome!

Dave


> 
>>>          nextPage = (WOComponent) ipi;
>>>      } else {
>>>          nextPage = ((ERD2WQueryPage) sender).nextPage();
>> 
>> Does that last line work?  I would have thought the logic in your original 
>> would be required.
> 
> Yep! Works great. :-) When I wrote it I was worried that it would end up in 
> an endless loop with sender.nextPage() simply calling this delegate, but it 
> works perfectly. Maybe I'm just lucky.
> 
> Dave
> 
>> 
>> Ramsey
>> 
>>>      }
>>>      return nextPage;
>>>  }
>>> 
>>> 
>>> Dave
>>> 
>>> On Oct 11, 2010, at 9:55 AM, Ramsey Gurley wrote:
>>> 
>>>> Looks good to me Dave. I think any "better" way than something that works 
>>>> will be a matter of opinion (^_^)  Personally I like branch delegates, but 
>>>> in this case, the next page delegate is only called by the queryAction. So 
>>>> you know the call to next page comes from the find button.
>>>> 
>>>> Ramsey
>>>> 
>>>> On Oct 11, 2010, at 6:57 AM, David Avendasora wrote:
>>>> 
>>>>> Okay, after a nights sleep, I got it working, but how I did it seems 
>>>>> hackish (shocking, I know). Is the nextPage() method below from my 
>>>>> delegate the best way to do this?
>>>>> 
>>>>> public WOComponent nextPage(WOComponent sender) {
>>>>>    WOComponent nextPage;
>>>>>    if (((ERD2WQueryPage) sender).queryDataSource()
>>>>>              .fetchObjects()
>>>>>              .count() == 1) {
>>>>>        InspectPageInterface ipi = D2W.factory()
>>>>>                                      
>>>>> .inspectPageForEntityNamed(Student.ENTITY_NAME,
>>>>>                                                                 
>>>>> sender.session());
>>>>>        ((ERD2WInspectPage) ipi).setObject((EOEnterpriseObject) 
>>>>> ((ERD2WQueryPage) sender).queryDataSource()
>>>>>                                                                           
>>>>>               .fetchObjects()
>>>>>                                                                           
>>>>>               .lastObject());
>>>>>        nextPage = (WOComponent) ipi;
>>>>>    } else {
>>>>>        ListPageInterface lpi = D2W.factory()
>>>>>                                   
>>>>> .listPageForEntityNamed(Student.ENTITY_NAME,
>>>>>                                                           
>>>>> sender.session());
>>>>>        ((ERD2WListPage) lpi).setDataSource(((ERD2WQueryPage) 
>>>>> sender).queryDataSource());
>>>>>        nextPage = (WOComponent) lpi;
>>>>> 
>>>>>    }
>>>>>    return nextPage;
>>>>> }
>>>>> 
>>>>> On Oct 10, 2010, at 8:39 PM, David Avendasora wrote:
>>>>> 
>>>>>> Hi All,
>>>>>> 
>>>>>> When a user performs a query, if the results contain exactly one object 
>>>>>> I want to return an Inspect page for that object instead of a List page.
>>>>>> 
>>>>>> I assume I'm going to want to implement a NextPageDelegate, but I'm not 
>>>>>> sure how to do that. I've looked around but I can't seem to find a good 
>>>>>> example. Does anyone have an example NextPageDelegate that I can use as 
>>>>>> a starting point?
>>>>>> 
>>>>>> I promise to create a Wiki page documenting how to do this for future 
>>>>>> mes.
>>>>>> 
>>>>>> Thanks!
>>>>>> 
>>>>>> Dave _______________________________________________
>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>> Webobjects-dev mailing list      ([email protected])
>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>> http://lists.apple.com/mailman/options/webobjects-dev/webobjects%40avendasora.com
>>>>>> 
>>>>>> This email sent to [email protected]
>>>>>> 
>>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> Do not post admin requests to the list. They will be ignored.
>>>>> Webobjects-dev mailing list      ([email protected])
>>>>> Help/Unsubscribe/Update your Subscription:
>>>>> http://lists.apple.com/mailman/options/webobjects-dev/ramsey%40xeotech.com
>>>>> 
>>>>> This email sent to [email protected]
>>>>> 
>>>> 
>>>> 
>>>> 
>>> 
>>> 
>> 
>> 
>> 
> 
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      ([email protected])
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/webobjects-dev/webobjects%40avendasora.com
> 
> This email sent to [email protected]
> 
> 

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to