package fr.openwide.core.wicket.markup.html.model;
import org.apache.wicket.Component;
import org.apache.wicket.model.ComponentModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.util.lang.Classes;
/**
* Give translation for a given enum. Resource key is built as in EnumLabel.
*
* This model needs to be wrapped by component to be used.
*
* @deprecated Use fr.openwide.core.wicket.more.rendering.EnumRenderer instead.<ul>
* <li>{@code new EnumLabelModel(enumValueModel)} should become {@code EnumRenderer.get().asModel(enumValueModel)}
* <li>{@code new EnumLabelModel(enumValueModel, nullKeyValue)} should become
* {@code EnumRenderer.get().nullsAsResourceKey(nullKeyValue).asModel(enumValueModel)}
* <li>{@code new EnumLabelModel(enumValue)} should become {@code EnumRenderer.get().asModel(new Model<>(enumValue))}
* <li>{@code new EnumLabelModel(enumValue, nullKeyValue)} should become
* {@code EnumRenderer.get().nullsAsResourceKey(nullKeyValue).asModel(new Model<>(enumValue))}
*/
@Deprecated
public class EnumLabelModel<E extends Enum<?>> extends ComponentModel<String> {
private static final long serialVersionUID = -7290192562513833670L;
private IModel<E> enumValueModel;
private IModel<String> nullKeyModel;
public EnumLabelModel(E enumValue) {
this(Model.of(enumValue), null);
}
public EnumLabelModel(E enumValue, String nullKeyValue) {
this(Model.of(enumValue), Model.of(nullKeyValue));
}
public EnumLabelModel(IModel<E> enumValueModel) {
this(enumValueModel, null);
}
public EnumLabelModel(IModel<E> enumValueModel, IModel<String> nullKeyModel) {
super();
this.enumValueModel = enumValueModel;
this.nullKeyModel = nullKeyModel;
}
@Override
protected String getObject(Component component) {
if (enumValueModel != null && enumValueModel.getObject() != null) {
return component.getString(Classes.simpleName(enumValueModel.getObject().getClass()) + "." + enumValueModel.getObject().name());
} else if (nullKeyModel != null && nullKeyModel.getObject() != null) {
return component.getString(nullKeyModel.getObject());
} else {
return "";
}
}
}