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
}
}