blob: 342bd70d3351bdc7f788963636c9ed4ef03badc7 [file] [log] [blame]
package wicket.examples.cdapp;
import wicket.Component;
import wicket.contrib.data.model.PersistentObjectModel;
import wicket.examples.cdapp.model.CD;
import wicket.model.AbstractDetachableModel;
/**
* Special model for the title header. It returns the CD title if there's a
* loaded object (when the id != null) or it returns a special string in case
* there is no loaded object (if id == null).
*/
public class TitleModel extends AbstractDetachableModel
{
/** decorated model; provides the current id. */
private final PersistentObjectModel cdModel;
/**
* Construct.
*
* @param cdModel the model to decorate
*/
public TitleModel(PersistentObjectModel cdModel)
{
this.cdModel = cdModel;
}
/**
* @see AbstractDetachableModel#onSetObject(Component, Object)
*/
public void onSetObject(final Component component, final Object object)
{
cdModel.setObject(component, object);
}
/**
* @see AbstractDetachableModel#onAttach()
*/
protected void onAttach()
{
cdModel.attach();
}
/**
* @see AbstractDetachableModel#onDetach()
*/
protected void onDetach()
{
cdModel.detach();
}
/**
* @see AbstractDetachableModel#onGetObject(Component)
*/
protected Object onGetObject(final Component component)
{
if (cdModel.getId() != null) // it is allready persistent
{
CD cd = (CD)cdModel.getObject(component);
return cd.getTitle();
}
else // it is a new cd
{
return "<NEW CD>";
}
}
/**
* @see wicket.model.IModel#getNestedModel()
*/
public Object getNestedModel()
{
return cdModel;
}
}