package org.orienteer.core.component.command; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.model.StringResourceModel; import org.orienteer.core.component.BootstrapType; import org.orienteer.core.component.FAIconType; import org.orienteer.core.component.table.OrienteerDataTable; import com.orientechnologies.orient.core.metadata.schema.OClass; /** * {@link Command} to trigger something * * @param <T> the type of an entity to which this command can be applied */ public class TriggerCommand<T> extends AjaxCommand<T> { private static final long serialVersionUID = 1L; private IModel<Boolean> triggerModel; public TriggerCommand(OrienteerDataTable<T, ?> table, IModel<Boolean> triggerModel) { this(null, table, triggerModel); } public TriggerCommand(String resourceKey, OrienteerDataTable<T, ?> table, IModel<Boolean> triggerModel) { super(new StringResourceModel( resourceKey!=null ? resourceKey.endsWith(".${}")?resourceKey:resourceKey+".${}" : "command.showhide.${}", triggerModel), table); this.triggerModel = triggerModel!=null?triggerModel:Model.of(true); setIcon(FAIconType.reorder); setBootstrapType(BootstrapType.INFO); } @Override public void onClick(AjaxRequestTarget target) { Boolean current = triggerModel.getObject(); current = current!=null?!current:true; triggerModel.setObject(current); } public IModel<Boolean> getTriggerModel() { return triggerModel; } @Override public void detachModels() { super.detachModels(); triggerModel.detach(); } }