package fr.openwide.maven.artifact.notifier.web.application.notification.component; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.link.ExternalLink; import org.apache.wicket.model.IModel; import org.apache.wicket.model.ResourceModel; import fr.openwide.maven.artifact.notifier.core.business.user.model.EmailAddress; import fr.openwide.maven.artifact.notifier.web.application.notification.behavior.StyleAttributeAppender; public abstract class AbstractRegisteredEmailHtmlNotificationPanel<T> extends AbstractHtmlNotificationPanel<T> { private static final long serialVersionUID = 537218611209529287L; private IModel<EmailAddress> emailAddressModel; public AbstractRegisteredEmailHtmlNotificationPanel(String id, IModel<T> model, IModel<EmailAddress> emailAddressModel) { super(id, model); this.emailAddressModel = emailAddressModel; WebMarkupContainer unsubscribe = new WebMarkupContainer("unsubscribe"); unsubscribe.add(new StyleAttributeAppender(STYLE_UNSUBSCRIBE)); add(unsubscribe); unsubscribe.add(new Label("unsubscribeText", getUnsubscribeText())); ExternalLink unsubscribeLink = new ExternalLink("unsubscribeLink", getUnsubscribeUrl()); unsubscribeLink.add(new StyleAttributeAppender(STYLE_LINK_FOOTER)); unsubscribe.add(unsubscribeLink); } private IModel<String> getUnsubscribeText() { if (Mode.LINKED_EMAIL_ADDRESS.equals(getRegisteredMode())) { return new ResourceModel("notification.panel.unsubscribe.deleteEmail"); } return new ResourceModel("notification.panel.unsubscribe.changeSettings"); } private String getUnsubscribeUrl() { if (Mode.LINKED_EMAIL_ADDRESS.equals(getRegisteredMode())) { return notificationUrlBuilderService.getDeleteEmailUrl(emailAddressModel.getObject()); } return notificationUrlBuilderService.getProfileUrl(); } private Mode getRegisteredMode() { if (emailAddressModel != null && emailAddressModel.getObject() != null) { return Mode.LINKED_EMAIL_ADDRESS; } return Mode.REGISTERED_USER; } private enum Mode { REGISTERED_USER, LINKED_EMAIL_ADDRESS } }