Bit of a delay on this, but anyway... the good news is that it IS possible to suppress a contributed action on one parameter but not another.
I've updated the kitchen sink app [1] to show how In the "contrib" package there are three entities: * Person [2] * Preference [3] * FoodStuff [4] eg Mary LIKEs Apple, Mungo HATEs Banana, Midge LOVEs Oranges Neither Person nor FoodStuff knows about Preferences; the Preference is the tuple that associates the two together. The PreferenceContributions [5] service provides: * "likes" - contributed collection to Person * "firstLove" - contributed property to Person * "addPreference" - contributed action to both Person and FoodStuff - "removePreference" - contributed action to both Person and FoodStuff However, although "addPreference" and "removePreference" *are* contributed to all parameter types, this can be hidden using the .layout.json file. In FoodStuff,layout.json [6] we have: "actions": { ... "removePreference": { "actionLayout": { "cssClass": "btn-warn", "hidden": "EVERYWHERE" } } } which means that the "removePreference" action cannot be seen when viewing a FoodStuff entity. I'll add this stuff to our website for future reference. Cheers Dan [1] https://github.com/isisaddons/isis-app-kitchensink [2] https://github.com/isisaddons/isis-app-kitchensink/blob/master/dom/src/main/java/org/isisaddons/app/kitchensink/dom/contrib/contributee/Person.java#L41-41 [3] https://github.com/isisaddons/isis-app-kitchensink/blob/master/dom/src/main/java/org/isisaddons/app/kitchensink/dom/contrib/contributed/Preference.java#L42-42 [4] https://github.com/isisaddons/isis-app-kitchensink/blob/master/dom/src/main/java/org/isisaddons/app/kitchensink/dom/contrib/contributee/FoodStuff.java#L41-41 [5] https://github.com/isisaddons/isis-app-kitchensink/blob/master/dom/src/main/java/org/isisaddons/app/kitchensink/dom/contrib/contributed/PreferenceContributions.java#L31-31 [6] https://github.com/isisaddons/isis-app-kitchensink/blob/master/dom/src/main/java/org/isisaddons/app/kitchensink/dom/contrib/contributee/FoodStuff.layout.json#L57-57 https://github.com/isisaddons/isis-app-kitchensink/blob/master/dom/src/main/java/org/isisaddons/app/kitchensink/dom/contrib/contributed/PreferenceContributions.java#L62-62 On 19 November 2014 at 15:27, Jeroen van der Wal <jer...@stromboli.it> wrote: > As to your question if you prevent something being contributed on only one > of the parameter classes: In the metamodel there's no way to specify that > but you could try to hide the contribution in the layout.json file. > > something like > > "actions":{ > "yourAction": { > "hidden":{} > } > } > > or > > "actions":{ > "yourAction": { > "hidden":{"where":"ALWAYS" } > } > } > > Can you check if this works? > > On Wed, Nov 19, 2014 at 4:15 PM, Jeroen van der Wal <jer...@stromboli.it> > wrote: > > > Hi Erik, > > > > You have to repeat the same parameters on the hideXxx method as the > method > > that you're trying to hide. > > > > HTH > > > > On Wed, Nov 19, 2014 at 4:09 PM, Erik de Hair <e...@pocos.nl> wrote: > > > >> Hi, > >> > >> The method in my entity class is as follows: > >> > >> public boolean hideAddPhoneNumbers(PortalCompany owningCompany, > >> AbstractArticle phoneNumberArticle, > >> PhoneNumberGrid gridNumber, AbstractSelectableNumberElement > >> numberElement) > >> { > >> return true; > >> } > >> > >> I also tried > >> > >> public boolean hideAddPhoneNumbers() > >> { > >> return true; > >> } > >> > >> The signature of the method in the service is > >> > >> public FixedPhoneNumberSubscription addPhoneNumbers(PortalCompany > >> owningCompany, > >> AbstractArticle phoneNumberArticle, > >> PhoneNumberGrid gridNumber, > >> AbstractSelectableNumberElement numberElement) > >> > >> > >> Erik > >> > >> <mailto:serviced...@pocos.nl> > >> > >> On 11/19/2014 03:37 PM, Martin Grigorov wrote: > >> > >>> Hi, > >>> > >>> On Wed, Nov 19, 2014 at 4:20 PM, Erik de Hair <e...@pocos.nl> wrote: > >>> > >>> Hi Martin, > >>>> > >>>> I think you need to add method hideXyz() as explained at > >>>> > >>>>> http://isis.apache.org/how-tos/how-to-02-030-How-to-hide- > >>>>> an-action.html > >>>>> > >>>>> By adding a hide to the repository I can only hide it everywhere or > >>>> nowhere but I can't choose to pop up at certain entities only. At > >>>> least, I > >>>> don't know how to do that. > >>>> > >>>> When I add a hideXXX() to the entity where I want to hide the action, > >>>> Isis > >>>> complains about an orphaned method because the method doesn't exist at > >>>> the > >>>> entity itself. > >>>> > >>> > >>> Please share the method's code. The log is misleading. Most probably > the > >>> method signature is not correct. > >>> > >>> it should be : > >>> - public > >>> - returning boolean > >>> - the name should be hide[TheCamelCasedActionName](the, same, > >>> parameters, > >>> as, the, action, method) > >>> - the impl should use all available information to decide whether to > >>> return > >>> true or false > >>> > >>> > >>> > >>>> Erik > >>>> > >>>> > >>>> > >>>> > >>>> > >> > > >