package atmosphere.chat; import java.util.Date; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink; import org.apache.wicket.atmosphere.EventBus; import org.apache.wicket.atmosphere.Subscribe; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.model.Model; import org.apache.wicket.request.mapper.parameter.PageParameters; public class HomePage extends WebPage { private static final long serialVersionUID = 1L; private Component timeLabel; private Component messageLabel; private TextField<String> receiver; private TextField<String> input; public HomePage(final PageParameters parameters) { super(parameters); add(timeLabel = new Label("time", Model.of("start")).setOutputMarkupId(true)); add(messageLabel = new Label("message", Model.of("-")).setOutputMarkupId(true)); Form<Void> form = new Form<Void>("form"); add(form); form.add(receiver = new TextField<String>("receiver", Model.of(""))); form.add(input = new TextField<String>("input", Model.of(""))); form.add(new AjaxSubmitLink("send", form) { private static final long serialVersionUID = 1L; @Override protected void onError(AjaxRequestTarget target, Form<?> form) { } @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { EventBus.get() .post(new ChatMessage(receiver.getModelObject(), input.getModelObject())); } }); setVersioned(false); } @Subscribe(contextAwareFilter = ReceiverFilter.class) public void receiveMessage(AjaxRequestTarget target, ChatMessage message) { messageLabel.setDefaultModelObject(message.getMessage()); target.add(messageLabel); } @Subscribe public void updateTime(AjaxRequestTarget target, Date event) { timeLabel.setDefaultModelObject(event.toString()); target.add(timeLabel); } }