On Sep 10, 2012, at 7:57 AM, Antoine Berry wrote:

> Hi,
> 
> Well my action methods match this signature... Here's my class : 
> 
> public class ListInvoiceController extends ERDBranchDelegate {
> 
> 
>     private WOComponent sender;
> 
>     private WOComponent sender() {
>         return sender;
>     }
> 
>     private void setSender(WOComponent sender) {
>         this.sender = sender;
>     }j

You don't need a sender ivar. You can delete these.

> 
>     private D2WContext d2wContext() {
>         return (D2WContext) sender().valueForKey("d2wContext");
>     }

ERDBranchDelegate does this for you. Just use d2wContext(sender)

> 
>     private EOEnterpriseObject object() {
>         return (EOEnterpriseObject)d2wContext().valueForKey("object");
>     }

object(sender)

> 
>     public WOComponent copyButton (WOComponent sender){
>         setSender(sender);
>         Invoice invoice = (Invoice)object();
>         EOEnterpriseObject invoiceCopy = invoice.copy(null);
>         EditPageInterface epi = 
> D2W.factory().editPageForNewObjectWithEntityNamed(Invoice.Keys.ENTITY_NAME, 
> sender.session());
>         epi.setObject(invoiceCopy);
>         ((InvoiceWizardPage) epi).isCopy = true;
>         return (WOComponent) epi;
>     }
> 
>     public WOComponent pdfButton(WOComponent sender){
>         setSender(sender);
>         Invoice invoice = (Invoice) object();
>         PDFInvoice pdfPage = (PDFInvoice) 
> WOApplication.application().pageWithName(PDFInvoice.class.getName(), 
> (WOContext) sender.context().clone());
>         pdfPage.setInvoice(invoice);
> 
>         return pdfPage;
>     }
> }
> 
> my rules : 
> 80 : (pageConfiguration like 'List*Invoice' and session.isSubjectAdmin = '1') 
> => actions = {"left" = ("controllerAction"); "right" = ("inspectAction"); } 
> [com.webobjects.directtoweb.Assignment]
> 100 : propertyKey = 'controllerAction' => componentName = 
> "ERDControllerButton" [com.webobjects.directtoweb.Assignment]
> 105 : pageConfiguration like 'List*Invoice' => pageController = 
> "ListInvoiceController" [er.directtoweb.ERDDelayedObjectCreationAssignment]

Noted your followup message. Yes, this last rule needs the fully class name 
with package.

> 
> And when I go to a list page which have this controller, I've noticed that 
> the rules are fired . I must have missed something but I don't know where... 
> Do you maybe have an exemple in which I could search?
> 
> Thanks a lot!

The method signatures look right. You're using ERModern aren't you? I think 
ERModern hides the ERDController button with CSS. Check your page source to see 
if it's really there.

Ramsey

> 
> 
> Le 07/09/12 20:37, Ramsey Gurley a écrit :
>> You probably don't need a rule. The branch delegate will supply the default 
>> branch choices. You just have to make sure your action methods match the 
>> signature
>> 
>> public WOComponent myButton(WOComponent sender)
>> 
>> Ramsey
>> 
>> On Sep 7, 2012, at 7:31 AM, Antoine Berry wrote:
>> 
>>> Hello,
>>> 
>>> Actually I wrote my rules again and now there's no exceptions anymore. I 
>>> don't know why that didn't work before, I must have put something wrong... 
>>> But now that the rules are fired, the buttons which I would want to add in 
>>> my list aren't display. What are the rules to display the custom buttons? 
>>> is it the "branchChoices" rule?
>>> 
>>> All my rules about this pageController :
>>> 
>>> 80 : ((pageConfiguration like 'List*Invoice' or pageConfiguration like 
>>> 'ListCustomer' or pageConfiguration like 'ListBankAccount' or 
>>> pageConfiguration like 'ListCompany') and session.isSubjectAdmin = '1') => 
>>> actions = {"left" = ("inspectAction", "deleteAction"); "right" = 
>>> ("controllerAction"); } [com.webobjects.directtoweb.Assignment]
>>> 
>>> 100 : propertyKey = 'controllerAction' => componentName = 
>>> "ERDControllerButton" [com.webobjects.directtoweb.Assignment]
>>> 
>>> 105 : entity.name = 'Invoice' => pageController = 
>>> "fr.sophiacom.application.ui.delegates.ListInvoiceController" 
>>> [er.directtoweb.ERDDelayedObjectCreationAssignment]
>>> 
>>> 
>>> Le 06/09/12 19:14, Ramsey Gurley a écrit :
>>>> 
>>>> On Sep 6, 2012, at 2:22 AM, Antoine Berry wrote:
>>>> 
>>>>> Hello Ramsey,
>>>>> 
>>>>> Thank you about the quick answer. I understood why you told me not to use 
>>>>> the nextPageDelegate. I tried a couple of things with it, and you were 
>>>>> right, embedded component are already perfectly managed. So I followed 
>>>>> your advice and tried to solve my problem with a pageController, which 
>>>>> seems way easier (and smarter).
>>>>> I found an old email on the web (by Anjo Krank : 
>>>>> http://www.digipedia.pl/usenet/thread/17625/14191/) which explain how to 
>>>>> add a custom button on a list. The rule where I set the pageController is 
>>>>> fired, but my actions rule throws an exception :
>>>>> 
>>>>> Reason: <fr.sophiacom.sophiacture.business.Invoice 0x36cebdbf> 
>>>>> valueForKey(): lookup of unknown key: 'controllerAction'. This class does 
>>>>> not have an instance variable of the name controllerAction or 
>>>>> _controllerAction, nor a method of the name controllerAction, 
>>>>> _controllerAction, getControllerAction, or _getControllerAction 
>>>> 
>>>> What does the stack trace look like?
>>>> 
>>>>> 
>>>>> I kind of understand why this exception occurred but I can't find the 
>>>>> solution. The email is quite old now so I thought that maybe something 
>>>>> has changed since?
>>>>> 
>>>>> my rules for the controller :
>>>>> 
>>>>> 80 : ((pageConfiguration like 'List*Invoice' or pageConfiguration like 
>>>>> 'ListCustomer' or pageConfiguration like 'ListBankAccount' or 
>>>>> pageConfiguration like 'ListCompany') and session.isSubjectAdmin = '1') 
>>>>> => actions = {"left" = ("inspectAction", "controllerAction"); "right" = 
>>>>> ("deleteAction"); } [com.webobjects.directtoweb.Assignment]
>>>>> 
>>>>> 105 : entity.name = 'Invoice' => pageController = 
>>>>> "fr.sophiacom.application.ui.delegates.ListInvoiceController" 
>>>>> [er.directtoweb.ERDDelayedObjectCreationAssignment]
>>>>> 
>>>>> 100 : propertyKey = 'controllerAction' => componentName = 
>>>>> "ERDControllerButton" [com.webobjects.directtoweb.Assignment]
>>>>> 
>>>>> 
>>>>> PS : for a list I set the actions with "left = (...)" and "right = 
>>>>> (...)", but what about an inspect page, or an edit page? I tried a couple 
>>>>> of things like "bottom = (...)" for exemple but it doesn't seem to 
>>>>> work... Do you know which keyword I have to use?
>>>>> 
>>>>> Le 04/09/12 19:12, Ramsey Gurley a écrit :
>>>>>> Hi Antoine,
>>>>>> 
>>>>>> You almost had it. Use the entire class path and use the 
>>>>>> ERDDelayedObjectCreationAssignment instead of Assignment.  That will 
>>>>>> generate the object using the default constructor.  
>>>>>> 
>>>>>> Be aware though... if you are working with embedded D2W pages with a 
>>>>>> bound action binding, you can't set the nextPageDelegate because it is 
>>>>>> already set.  In most cases, I don't use the nextPageDelegate. I use the 
>>>>>> pageController instead.
>>>>>> 
>>>>>> Ramsey
>>>>>> 
>>>>>> 
>>>>>> On Sep 4, 2012, at 9:54 AM, Antoine Berry wrote:
>>>>>> 
>>>>>>> Hello everybody,
>>>>>>> 
>>>>>>> I'm working on a D2W application, and I'm trying to override most of 
>>>>>>> the nextPage default behavior. I've created a delegate which reorient 
>>>>>>> the user on an inspect page of his object after its creation (for 
>>>>>>> exemple), and first i've set it in the code (through the 
>>>>>>> navigationController), and it worked quite well.
>>>>>>> But I would want to do it directly in the rules, cause I don't have 
>>>>>>> direct access on every pages, like the edit pages for exemple. So I 
>>>>>>> tried to add a rule like "100 : pageConfiguration like 'CreateMyObject' 
>>>>>>> => nextPageDelegate <= InspectAfterCreationDelegate". But there is a 
>>>>>>> ClassCastException : "cannot cast from java.lang.String to 
>>>>>>> com.webobjects.directtoweb.NextPageDelegate". And it's the same 
>>>>>>> exception when I put the complete path of my class...
>>>>>>> I've tried different things, but I can't find a solution, and I don't 
>>>>>>> know where to search. I'm new on the mailing list so I'm sorry if this 
>>>>>>> subject has been discussed before (maybe somebody have an archive about 
>>>>>>> a similar discussion).
>>>>>>> 
>>>>>>> Antoine
>>>>>>> 
>>>>>>> 
>>>>>>> _______________________________________________
>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>> https://lists.apple.com/mailman/options/webobjects-dev/rgurley%40smarthealth.com
>>>>>>> 
>>>>>>> This email sent to rgur...@smarthealth.com
>>>>> 
>>>>> 
>>>>> -- 
>>>>> Antoine Berry
>>>> 
>>> 
>>> 
>>> -- 
>>> Antoine Berry
>> 
> 
> 
> -- 
> Antoine Berry
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/ramseygurley%40gmail.com
> 
> This email sent to ramseygur...@gmail.com

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

This email sent to arch...@mail-archive.com

Reply via email to