Did you use it in a parented collection? It currently only works in standalone collections [1].
[1] https://issues.apache.org/jira/browse/ISIS-1035 On 24 September 2015 at 09:38, Stephen Cameron <steve.cameron...@gmail.com> wrote: > Hi, > > I am trying to copy the 'bulk' action example in the kitchen sink app, but > I don't see the check boxes on the left hand column in my collection. What > can I be missing? > > I am assuming that the annotation as follows is what gives the magic! > > @Action(invokeOn = InvokeOn.OBJECT_AND_COLLECTION) > > but maybe not alone? > > My Attended class is as follows. > > package au.com.scds.chats.dom.module.attendance; > > import java.util.List; > > import javax.jdo.annotations.Column; > import javax.jdo.annotations.IdentityType; > import javax.jdo.annotations.PersistenceCapable; > > import org.apache.isis.applib.Identifier; > import org.apache.isis.applib.annotation.Action; > import org.apache.isis.applib.annotation.BookmarkPolicy; > import org.apache.isis.applib.annotation.DomainObjectLayout; > import org.apache.isis.applib.annotation.Editing; > import org.apache.isis.applib.annotation.InvokeOn; > import org.apache.isis.applib.annotation.InvokedOn; > import org.apache.isis.applib.annotation.LabelPosition; > import org.apache.isis.applib.annotation.MemberGroupLayout; > import org.apache.isis.applib.annotation.MemberOrder; > import org.apache.isis.applib.annotation.Property; > import org.apache.isis.applib.annotation.PropertyLayout; > import org.apache.isis.applib.annotation.Where; > import org.apache.isis.applib.services.actinvoc.ActionInvocationContext; > import org.apache.isis.applib.services.eventbus.ActionDomainEvent; > import org.apache.isis.applib.services.eventbus.EventBusService; > > import au.com.scds.chats.dom.AbstractChatsDomainEntity; > import au.com.scds.chats.dom.module.activity.ActivityEvent; > import au.com.scds.chats.dom.module.participant.Participant; > > @PersistenceCapable(identityType = IdentityType.DATASTORE) > @DomainObjectLayout(bookmarking = BookmarkPolicy.NEVER) > @MemberGroupLayout(columnSpans = { 6, 3, 0, 3 }, left = "General", middle = > { "Admin" }) > public class Attended extends AbstractChatsDomainEntity implements > Comparable<Attended>{ > > public String title(){ > return getParticipant().getFullName() + (getAttended() ? " did > attend " : " did NOT attend ") + getActivity().getName() + " on " + > getActivity().getStartDateTime().toString("dd MMMM yyyy"); > } > > // {{ Activity (property) > private ActivityEvent activity; > > @Column(allowsNull = "false") > @Property(editing = Editing.DISABLED, editingDisabledReason = "This is > a non-modifiable property") > @PropertyLayout(hidden=Where.ALL_TABLES) > @MemberOrder(sequence = "1") > public ActivityEvent getActivity() { > return activity; > } > > void setActivity(final ActivityEvent activity) { > if (activity == null || this.activity != null) > return; > this.activity = activity; > } > > // }} > > // {{ Participant (property) > private Participant participant; > > @Column(allowsNull = "false") > @Property(editing = Editing.DISABLED, editingDisabledReason = "This is > a non-modifiable property") > @MemberOrder(sequence = "2") > public Participant getParticipant() { > return participant; > } > > void setParticipant(final Participant participant) { > this.participant = participant; > } > > // }} > > // {{ Attended (property) > private Boolean attended = false; > > @Column(allowsNull = "false") > @MemberOrder(sequence = "3") > public Boolean getAttended() { > return attended; > } > > void setAttended(final Boolean attended) { > this.attended = attended; > } > // }} > > // {{ Content (property) > private String comments; > > @Column(allowsNull = "true") > @MemberOrder(sequence = "4") > @PropertyLayout(multiLine = 20, labelPosition = LabelPosition.TOP, > hidden = Where.ALL_TABLES) > public String getComments() { > return comments; > } > > public void setComments(final String contents) { > this.comments = contents; > } > > @Override > public int compareTo(Attended o) { > return > getParticipant().getPerson().compareTo(o.getParticipant().getPerson()); > } > > // }} > > //region > previous (action) > @Action(invokeOn = InvokeOn.OBJECT_AND_COLLECTION) > public Attended Attended() { > if(!getAttended()) > setAttended(true); > return actionInvocationContext.getInvokedOn().isCollection()? null: > this; > } > > @Action(invokeOn = InvokeOn.OBJECT_AND_COLLECTION) > public Attended NotAttended() { > if(getAttended()) > setAttended(false); > return actionInvocationContext.getInvokedOn().isCollection()? null: > this; > } > > @Action(invokeOn = InvokeOn.OBJECT_AND_COLLECTION) > public AttendanceList Delete() { > AttendanceList attendances = getActivity().getAttendances(); > attendances.removeAttended(this); > return actionInvocationContext.getInvokedOn().isCollection()? null: > attendances; > } > > @javax.inject.Inject > private ActionInvocationContext actionInvocationContext; > > } > > TFYH >