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

Dan Haywood updated ISIS-674:
-----------------------------

    Description: 
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) {


  was:
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.


> 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, Viewer: Wicket
>    Affects Versions: viewer-wicket-1.3.1, core-1.3.0
>            Reporter: Dan Haywood
>            Assignee: Dan Haywood
>            Priority: Minor
>             Fix For: viewer-wicket-1.5.0, core-1.5.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
(v6.1.5#6160)

Reply via email to