public ChatForm()

in openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatForm.java [75:151]


	public ChatForm(String id) {
		super(id);
		final ChatToolbar toolbar = new ChatToolbar("toolbarContainer", this);
		final WysiwygEditor chatMessage = new WysiwygEditor("chatMessage", Model.of(""), toolbar);
		add(toolbar
			, activeTab.add(new AjaxFormSubmitBehavior(this, "change") {
				private static final long serialVersionUID = 1L;

				@Override
				protected void onSubmit(AjaxRequestTarget target) {
					toolbar.update(target);
				}
			})
			, chatMessage.setOutputMarkupId(true)
			, new AjaxButton("send") {
				private static final long serialVersionUID = 1L;

				@Override
				protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
					super.updateAjaxAttributes(attributes);
					attributes.getAjaxCallListeners().add(new IAjaxCallListener() {
						@Override
						public CharSequence getPrecondition(Component component) {
							return "return Chat.validate();";
						}
					});
				}

				private Chat getChat() {
					return findParent(Chat.class);
				}

				@Override
				protected void onSubmit(AjaxRequestTarget target) {
					final String txt = chatMessage.getDefaultModelObjectAsString();
					if (Strings.isEmpty(txt)) {
						return;
					}
					final ChatMessage m = new ChatMessage();
					m.setMessage(txt);
					m.setSent(new Date());
					m.setFromUser(userDao.get(getUserId()));
					m.setFromName(getClient().getUser().getDisplayName());
					if (!process(
							() -> getChat().isShowDashboardChat()
							, r -> {
								if (cm.isInRoom(r.getId(), getUserId())) {
									m.setToRoom(r);
								} else {
									log.error("It seems like we are being hacked!!!!");
									return false;
								}
								m.setNeedModeration(r.isChatModerated() && !isModerator(cm, m.getFromUser().getId(), r.getId()));
								return true;
							}, u -> {
								m.setToUser(u);
								return true;
							}))
					{
						return;
					}
					chatDao.update(m);
					JSONObject msg = getChat().getMessage(List.of(m));
					if (m.getToRoom() != null) {
						ChatWebSocketHelper.sendRoom(m, msg);
					} else if (m.getToUser() != null) {
						ChatWebSocketHelper.sendUser(getUserId(), m, msg);
						msg = Chat.getMessage(m.getToUser(), List.of(m));
						ChatWebSocketHelper.sendUser(m.getToUser().getId(), m, msg);
					} else {
						ChatWebSocketHelper.sendAll(m, msg);
					}
					chatMessage.setDefaultModelObject("");
					target.appendJavaScript("Chat.clean();");
				}
			});
	}