package de.flower.rmt.ui.page.venues.manager.map;
import de.flower.common.util.geo.LatLng;
import org.apache.wicket.markup.Markup;
import org.apache.wicket.markup.html.form.FormComponentPanel;
import org.apache.wicket.model.IModel;
/**
* @author flowerrrr
*/
public class VenueMapFormComponent extends FormComponentPanel<LatLng> {
private IModel<LatLng> mapModel;
public VenueMapFormComponent(String id, final IModel<LatLng> model, final LatLng defaultPosition) {
super(id, model);
setOutputMarkupId(true);
mapModel = new IModel<LatLng>() {
private LatLng latLng;
@Override
public LatLng getObject() {
if (latLng == null) {
return model.getObject() != null ? model.getObject() : defaultPosition;
} else {
return latLng;
}
}
@Override
public void setObject(final LatLng object) {
latLng = object;
}
@Override
public void detach() {
}
};
add(new VenueMapPanel(mapModel));
}
@Override
protected void convertInput() {
setConvertedInput(mapModel.getObject());
}
@Override
protected void onModelChanged() {
// necessary when updating model value from outside (like selecting a geocoding result)
mapModel.setObject(getModelObject());
}
@Override
public Markup getAssociatedMarkup() {
String markup = "<wicket:panel><div wicket:id='venueMapPanel' class='venue-map'/></wicket:panel>";
return Markup.of(markup);
}
}