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 ([email protected])
>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>> https://lists.apple.com/mailman/options/webobjects-dev/rgurley%40smarthealth.com
>>>>>>>
>>>>>>> This email sent to [email protected]
>>>>>
>>>>>
>>>>> --
>>>>> Antoine Berry
>>>>
>>>
>>>
>>> --
>>> Antoine Berry
>>
>
>
> --
> Antoine Berry
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list ([email protected])
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/ramseygurley%40gmail.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:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com
This email sent to [email protected]