[ 
https://issues.apache.org/jira/browse/ISIS-674?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dan Haywood updated ISIS-674:
-----------------------------
    Fix Version/s:     (was: 2.4.0)
                   1.19.0

> Allow action parameters to be defaulted based on the (change of) value of 
> other parameters.
> -------------------------------------------------------------------------------------------
>
>                 Key: ISIS-674
>                 URL: https://issues.apache.org/jira/browse/ISIS-674
>             Project: Isis
>          Issue Type: New Feature
>          Components: Core, Core: Viewer: Wicket
>    Affects Versions: viewer-wicket-1.3.1, core-1.3.0
>            Reporter: Dan Haywood
>            Priority: Minor
>             Fix For: 1.19.0
>
>
> For example:
> public void foo(
>    Charge charge,
>    BigDecimal amount,
>    String description) {
>   
> }
> public String default2Foo(Charge charge, BigDecimal amount) {
>     return charge != null && amount != null? amount + " " 
> charge.getDescription() : null;
> }
> Here, the value of the 'description' parameter is defaulted from that of both 
> the preceding 'charge' and 'amount' parameters.  Changing either should cause 
> the default value for the 'description' to be recomputed.
> This is analogous to the way that choices are recomputed for 
> category/subcategory, see ActionParametersFormPanel:
>         @Override
>         public void onUpdate(AjaxRequestTarget target, ScalarModelProvider 
> provider) {
>             final ActionModel actionModel = getActionModel();
>             final ObjectAdapter[] pendingArguments = 
> actionModel.getArgumentsAsArray();
>             try {
>                 final ObjectAction action = 
> actionModel.getActionMemento().getAction();
>                 final int numParams = action.getParameterCount();
>                 for (int i = 0; i < numParams; i++) {
>                     final ScalarPanelAbstract paramPanel = paramPanels.get(i);
>                     if(paramPanel != null) {
>                         // this could throw a ConcurrencyException as we may 
> have to reload the 
>                         // object adapter of the action in order to compute 
> the choices
>                         // (and that object adapter might have changed)
>                         if(paramPanel.updateChoices(pendingArguments)) {      
>                                 <<<<<< THIS LOOKS SIMILAR TO WHAT NEEDS TO BE 
> DONE...
>                             target.add(paramPanel);
>                         }
>                     }
>                 }
>             } catch(ConcurrencyException ex) {



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to