package fr.openwide.core.wicket.more.markup.html.list; import java.io.Serializable; import org.apache.wicket.AttributeModifier; import org.apache.wicket.MarkupContainer; import org.apache.wicket.behavior.AttributeAppender; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.model.IModel; import fr.openwide.core.wicket.markup.html.panel.GenericPanel; public abstract class AbstractGenericItemListActionButtons<T extends Serializable> extends GenericPanel<T> { private static final long serialVersionUID = 7007771250037945470L; private WebMarkupContainer editLinkHidden; private WebMarkupContainer deleteLinkHidden; private WebMarkupContainer actionLinkHidden; public AbstractGenericItemListActionButtons(final String id, final IModel<? extends T> itemModel) { super(id, itemModel); actionLinkHidden = new WebMarkupContainer("actionLinkHidden"); editLinkHidden = new WebMarkupContainer("editLinkHidden"); deleteLinkHidden = new WebMarkupContainer("deleteLinkHidden"); add(actionLinkHidden, editLinkHidden, deleteLinkHidden); MarkupContainer actionLink = getActionLink("actionLink", itemModel); actionLink.add(new AttributeModifier("alt", getActionText(itemModel))); actionLink.add(new AttributeModifier("title", getActionText(itemModel))); actionLink.add(new AttributeAppender("class", getActionBootstrapColorClass(itemModel), " ")); WebMarkupContainer actionIcon = new WebMarkupContainer("actionIcon"); actionIcon.add(new AttributeAppender("class", getActionBootstrapIconColorClass(itemModel), " ")); actionIcon.add(new AttributeAppender("class", getActionBootstrapIconClass(itemModel), " ")); actionLink.add(actionIcon); add(actionLink); MarkupContainer editLink = getEditLink("editLink", itemModel); editLink.add(new AttributeModifier("alt", getEditText(itemModel))); editLink.add(new AttributeModifier("title", getEditText(itemModel))); editLink.add(new AttributeAppender("class", getEditBootstrapColorClass(itemModel), " ")); WebMarkupContainer editIcon = new WebMarkupContainer("editIcon"); editIcon.add(new AttributeAppender("class", getEditBootstrapIconColorClass(itemModel), " ")); editIcon.add(new AttributeAppender("class", getEditBootstrapIconClass(itemModel), " ")); editLink.add(editIcon); add(editLink); MarkupContainer deleteLink = getDeleteLink("deleteLink", itemModel); deleteLink.add(new AttributeModifier("alt", getDeleteText(itemModel))); deleteLink.add(new AttributeModifier("title", getDeleteText(itemModel))); deleteLink.add(new AttributeAppender("class", getDeleteBootstrapColorClass(itemModel), " ")); WebMarkupContainer deleteIcon = new WebMarkupContainer("deleteIcon"); deleteIcon.add(new AttributeAppender("class", getDeleteBootstrapIconColorClass(itemModel), " ")); deleteIcon.add(new AttributeAppender("class", getDeleteBootstrapIconClass(itemModel), " ")); deleteLink.add(deleteIcon); add(deleteLink); } // Action link methods protected abstract IModel<String> getActionBootstrapIconClass(final IModel<? extends T> itemModel); protected abstract IModel<String> getActionBootstrapIconColorClass(final IModel<? extends T> itemModel); protected abstract IModel<String> getActionBootstrapColorClass(final IModel<? extends T> itemModel); protected abstract IModel<String> getActionText(final IModel<? extends T> itemModel); protected abstract MarkupContainer getActionLink(final String id, final IModel<? extends T> itemModel); // Edit link methods protected abstract IModel<String> getEditBootstrapIconClass(final IModel<? extends T> itemModel); protected abstract IModel<String> getEditBootstrapIconColorClass(final IModel<? extends T> itemModel); protected abstract IModel<String> getEditBootstrapColorClass(final IModel<? extends T> itemModel); protected abstract IModel<String> getEditText(final IModel<? extends T> itemModel); protected abstract MarkupContainer getEditLink(String id, final IModel<? extends T> itemModel); // Delete link methods protected abstract IModel<String> getDeleteBootstrapIconClass(final IModel<? extends T> itemModel); protected abstract IModel<String> getDeleteBootstrapIconColorClass(final IModel<? extends T> itemModel); protected abstract IModel<String> getDeleteBootstrapColorClass(final IModel<? extends T> itemModel); protected abstract IModel<String> getDeleteText(final IModel<? extends T> itemModel); protected abstract MarkupContainer getDeleteLink(String id, final IModel<? extends T> itemModel); public WebMarkupContainer getEditLinkHidden() { return editLinkHidden; } public WebMarkupContainer getDeleteLinkHidden() { return deleteLinkHidden; } public WebMarkupContainer getActionLinkHidden() { return actionLinkHidden; } }