package org.orienteer.core.component.command; import java.util.List; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.event.Broadcast; import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable; import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.model.IModel; import org.apache.wicket.model.ResourceModel; import org.orienteer.core.component.BootstrapType; import org.orienteer.core.component.FAIconType; import org.orienteer.core.component.table.CheckBoxColumn; import org.orienteer.core.component.table.DataTableCommandsToolbar; import org.orienteer.core.component.table.OrienteerDataTable; import com.orientechnologies.orient.core.record.impl.ODocument; /** * {@link AjaxFormCommand} that require checking of a set of entities for execution * * @param <T> the type of an entity to which this command can be applied */ public class AbstractCheckBoxEnabledCommand<T> extends AjaxFormCommand<T> { private static final long serialVersionUID = 1L; private DataTable<T, ?> table; private CheckBoxColumn<T, ?, ?> checkboxColumn; public AbstractCheckBoxEnabledCommand(IModel<?> labelModel, OrienteerDataTable<T, ?> table) { super(labelModel, table); this.table=table; } @SuppressWarnings("unchecked") @Override protected void onConfigure() { super.onConfigure(); if(checkboxColumn==null) { for (IColumn<T, ?> column : table.getColumns()) { if(column instanceof CheckBoxColumn) { checkboxColumn=(CheckBoxColumn<T, ?, ?>) column; break; } } } setVisible(checkboxColumn!=null); } @Override public void onSubmit(AjaxRequestTarget target, Form<?> form) { performMultiAction(target, getSelected()); resetSelection(); } public DataTable<T, ?> getTable() { return table; } public List<T> getSelected() { return checkboxColumn.getSelected(); } public void resetSelection() { checkboxColumn.resetSelection(); } protected void performMultiAction(AjaxRequestTarget target, List<T> objects) { for (T object : objects) { perfromSingleAction(target, object); } } protected void perfromSingleAction(AjaxRequestTarget target, T object) { //NOP } }