package org.openbakery.racecontrol.web;
import java.io.IOException;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.PasswordTextField;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.model.PropertyModel;
import org.openbakery.racecontrol.JInSimClient;
import org.openbakery.racecontrol.RaceControl;
import org.openbakery.racecontrol.web.bean.InSimSettings;
import org.openbakery.racecontrol.web.bean.Visibility;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SettingsPage extends RaceControlProtectedPage {
private Logger log = LoggerFactory.getLogger(SettingsPage.class);
private transient JInSimClient client;
public SettingsPage(PageParameters parameters) {
super(parameters);
Form<InSimSettings> form = new Form<InSimSettings>("form");
add(form);
final InSimSettings settings = getClient().getSettings();
String message;
if (getClient().isConnected()) {
message = "Client is connected";
} else {
message = "No client connection";
}
add(new Label("serverStatus", message));
form.add(new TextField("name", new PropertyModel(settings, "name")));
form.add(new TextField("hostname", new PropertyModel(settings, "hostname")));
form.add(new TextField("port", new PropertyModel(settings, "port")));
form.add(new PasswordTextField("adminPassword", new PropertyModel(settings, "adminPassword")).setRequired(false));
form.add(new Link("stop") {
@Override
public void onClick() {
try {
getRaceControl().stop();
} catch (IOException e) {
error("Cannot disconnect to the host!");
log.error("Cannot disconnect to the host!", e);
}
setResponsePage(SettingsPage.class);
}
});
form.add(new Button("start") {
/**
*
*/
private static final long serialVersionUID = 3800975831949933746L;
@Override
public void onSubmit() {
try {
log.debug("settings: {}", getClient().getSettings());
getRaceControl().start();
} catch (IOException e) {
error("Cannot connect to the host!");
log.error("Cannot connect to the host!", e);
}
setResponsePage(SettingsPage.class);
}
});
}
@Override
public String getPageTitle() {
return "Settings";
}
private JInSimClient getClient() {
return getSession().getServiceLocator().getRaceService().getClient();
}
private RaceControl getRaceControl() {
return getSession().getServiceLocator().getRaceService().getRaceControl();
}
@Override
public Visibility getVisibility() {
return Visibility.AUTHENTICATED;
}
}