package fr.openwide.core.basicapp.web.application.common.renderer;
import java.util.Locale;
import fr.openwide.core.basicapp.core.business.common.model.IHierarchicalListItem;
import fr.openwide.core.basicapp.core.business.common.model.LocalizedGenericListItem;
import fr.openwide.core.wicket.more.rendering.LocalizedTextRenderer;
import fr.openwide.core.wicket.more.rendering.Renderer;
public abstract class LocalizedGenericListItemRenderer extends Renderer<LocalizedGenericListItem<?>> {
private static final long serialVersionUID = -3042035624376063917L;
private static final Renderer<LocalizedGenericListItem<?>> INSTANCE = new LocalizedGenericListItemRenderer() {
private static final long serialVersionUID = 1L;
@Override
public String render(LocalizedGenericListItem<?> value, Locale locale) {
return LocalizedTextRenderer.get().render(value.getLabel(), locale);
}
}.nullsAsNull();
private static final Renderer<LocalizedGenericListItem<?>> CODE_LABEL = new LocalizedGenericListItemRenderer() {
private static final long serialVersionUID = 1L;
@Override
public String render(LocalizedGenericListItem<?> value, Locale locale) {
String code = value.getCode();
return (code != null ? code + " - " : "") + LocalizedTextRenderer.get().render(value.getLabel(), locale);
}
}.nullsAsNull();
private static final Renderer<LocalizedGenericListItem<?>> WITH_PARENT_LABEL = new LocalizedGenericListItemRenderer() {
private static final long serialVersionUID = 1L;
@Override
public String render(LocalizedGenericListItem<?> value, Locale locale) {
StringBuilder sb = new StringBuilder();
if (value instanceof IHierarchicalListItem<?>) {
LocalizedGenericListItem<?> parent = ((IHierarchicalListItem<?>) value).getParent();
if (parent != null) {
sb.append(LocalizedTextRenderer.get().render(parent.getLabel(), locale))
.append(" - ");
}
}
sb.append(LocalizedTextRenderer.get().render(value.getLabel(), locale));
return sb.toString();
}
}.nullsAsNull();
public static final Renderer<LocalizedGenericListItem<?>> get() {
return INSTANCE;
}
public static final Renderer<LocalizedGenericListItem<?>> codeLabel() {
return CODE_LABEL;
}
/**
* Should be used only with {@link IHierarchicalListItem} objects. Fallback to a simple label display.
* @return
*/
public static final Renderer<LocalizedGenericListItem<?>> withParentLabel() {
return WITH_PARENT_LABEL;
}
/**
* @deprecated Use {@link #get()} instead.
*/
@Deprecated
protected LocalizedGenericListItemRenderer() {
}
}