package org.apache.nutch.webui.pages.instances; import org.apache.nutch.webui.model.NutchInstance; import org.apache.nutch.webui.service.NutchInstanceService; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink; 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.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.spring.injection.annot.SpringBean; import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel; import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal; import de.agilecoders.wicket.core.markup.html.bootstrap.form.BootstrapForm; public class InstancePanel extends Modal { private BootstrapForm<NutchInstance> form; private NotificationPanel notificationPanel; @SpringBean private NutchInstanceService instanceService; public InstancePanel(String markupId) { super(markupId); header(Model.of("Instance")); notificationPanel = new NotificationPanel("notificationPanel"); notificationPanel.setOutputMarkupId(true); add(notificationPanel); form = new BootstrapForm<>("instanceForm"); form.add(new TextField<String>("name").setRequired(true)); form.add(new TextField<String>("host").setRequired(true)); form.add(new TextField<Integer>("port").setRequired(true)); form.add(new TextField<String>("username")); form.add(new PasswordTextField("password").setResetPassword(false) .setRequired(false)); addButton(new AjaxSubmitLink("button", form) { @Override protected void onSubmit(AjaxRequestTarget target, Form<?> ajaxForm) { instanceService.saveInstance(form.getModelObject()); target.add(this.getPage()); } protected void onError(AjaxRequestTarget target, Form<?> form) { target.add(notificationPanel); }; }.setBody(Model.of("Save"))); add(form); } public void setModel(IModel<NutchInstance> model) { form.setModel(model); } }