package nl.topicus.konijn.web.components.modal;
import java.util.Date;
import nl.topicus.konijn.data.dao.hibernate.EventDao;
import nl.topicus.konijn.data.dao.hibernate.EventSettingDao;
import nl.topicus.konijn.data.dao.hibernate.NabaztagDao;
import nl.topicus.konijn.data.entity.Event;
import nl.topicus.konijn.data.entity.EventSetting;
import nl.topicus.konijn.data.entity.Nabaztag;
import nl.topicus.konijn.models.PersistenceModel;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.HiddenField;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.Model;
import org.odlabs.wiquery.ui.button.ButtonBehavior;
import org.odlabs.wiquery.ui.core.DefaultJsScopeUiEvent;
import org.odlabs.wiquery.ui.dialog.Dialog;
import org.odlabs.wiquery.ui.slider.Slider;
import com.google.inject.Inject;
public class ConfigureRandomSpeechPanel extends Panel {
private static String EVENT_CLASS = "RandomSpeech";
private static String EVENT_SETTING = "frequency";
private static final long serialVersionUID = 1L;
@Inject
NabaztagDao nabDao;
@Inject
private EventDao eventDao;
@Inject
private EventSettingDao eventSettingDao;
private PersistenceModel<Event> event;
private Slider slider;
private HiddenField<String> hiddenField;
private PersistenceModel<EventSetting> eSetting;
private Form<String> form;
public ConfigureRandomSpeechPanel(String id,
PersistenceModel<Nabaztag> nabaztag) {
super(id);
setEventClass(nabaztag);
form = new Form<String>("form");
slider = new Slider("slider", 0, 3);
slider.setOutputMarkupId(true);
slider.setMarkupId("slider");
slider.setChangeEvent(new DefaultJsScopeUiEvent(
"$('#sliderval').val($( \"#slider\" ).slider( \"option\", \"value\" ));"));
eSetting = new PersistenceModel<EventSetting>(
eventSettingDao.getEventSetting(EVENT_SETTING,
event.getObject()));
if (eSetting.getId() != null) {
slider.setValue(Integer.parseInt(eSetting.getObject().getValue()));
hiddenField = new HiddenField<String>("sliderval",
new Model<String>(eSetting.getObject().getValue()));
} else {
hiddenField = new HiddenField<String>("sliderval",
new Model<String>("0"));
}
hiddenField.setOutputMarkupId(true);
hiddenField.setMarkupId("sliderval");
form.add(hiddenField);
form.add(new AjaxButton("submit") {
private static final long serialVersionUID = 1L;
@Inject
private EventSettingDao esDao;
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
String value = hiddenField.getModelObject();
if (value != null && Integer.valueOf(value) >= 0
&& Integer.valueOf(value) <= 3) {
EventSetting tmpE = esDao.find(eSetting.getId());
tmpE.setValue(value);
esDao.save(tmpE);
}
((Dialog)getParent().getParent().getParent()).close(target);
//setResponsePage(UserHomePage.class);
}
@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
((Dialog)getParent().getParent().getParent()).close(target);
}
}.add(new ButtonBehavior()));
form.add(slider);
form.setOutputMarkupId(true);
add(form);
// eventDao.getEvent()
}
private void setEventClass(PersistenceModel<Nabaztag> nabaztag) {
Event tmpEvent = eventDao.getEvent(EVENT_CLASS, nabaztag.getObject());
if (tmpEvent == null) {
tmpEvent = new Event();
tmpEvent.setChangedAt(new Date());
tmpEvent.setCreatedAt(new Date());
tmpEvent.setEventClass(EVENT_CLASS);
tmpEvent.setNabaztag(nabDao.find(nabaztag.getId()));
eventDao.save(tmpEvent);
EventSetting eventSetting = new EventSetting();
eventSetting.setValue("0");
eventSetting.setEvent(tmpEvent);
eventSetting.setName(EVENT_SETTING);
eventSettingDao.save(eventSetting);
}
event = new PersistenceModel<Event>(tmpEvent);
}
/*
* List<Message> messages = new ArrayList<Message>();
*
* messages.add(new Message("ID", "12626205")); messages.add(new
* Message("CL", "16711680"));
*
* switch (new Random().nextInt(3)) { case 0: messages.add(new Message("MU",
* "broadcast/broad/test.mp3")); break; case 1: messages.add(new
* Message("MU", "broadcast/broad/killallhumans.mp3")); break; case 2:
* messages.add(new Message("MU", "broadcast/broad/agressie.mp3")); break; }
*
* messages.add(new Message("MW", null));
*
* MessagePacketFactory.sendMessage(nabaztag.getObject().getUid() ,
* messages);
*/
}