in openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java [129:294]
protected void onInitialize() {
super.onInitialize();
add(new OmWebSocketPanel("ws-panel") {
private static final long serialVersionUID = 1L;
@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
StringBuilder handlers = new StringBuilder()
.append("Wicket.Event.subscribe(Wicket.Event.Topic.AJAX_CALL_FAILURE, hideBusyIndicator);")
.append("Wicket.Event.subscribe(Wicket.Event.Topic.AJAX_CALL_BEFORE, showBusyIndicator);")
.append("Wicket.Event.subscribe(Wicket.Event.Topic.AJAX_CALL_SUCCESS, hideBusyIndicator);")
.append("Wicket.Event.subscribe(Wicket.Event.Topic.AJAX_CALL_COMPLETE, hideBusyIndicator);")
.append("Wicket.Event.subscribe(Wicket.Event.Topic.WebSocket.Opened, function() { Wicket.WebSocket.send('socketConnected'); });");
response.render(OnDomReadyHeaderItem.forScript(handlers));
}
@Override
protected void onConnect(ConnectedMessage msg) {
ExtendedClientProperties cp = WebSession.get().getExtendedProperties();
final User u = userDao.get(getUserId());
final Client client = new Client(
getSession().getId()
, msg.getKey().hashCode()
, u
, ProfileImageResourceReference.getUrl(getRequestCycle(), u));
uid = client.getUid();
cm.add(cp.update(client));
log.debug("WebSocketBehavior::onConnect [uid: {}, session: {}, key: {}]", client.getUid(), msg.getSessionId(), msg.getKey());
}
@Override
protected void onConnect(WebSocketRequestHandler handler) {
if (curPanel != null) {
updateContents(curPanel, handler);
}
}
@Override
protected void onMessage(WebSocketRequestHandler handler, JSONObject m) throws IOException {
BasePanel p = getCurrentPanel();
if (p != null) {
p.process(handler, m);
}
}
@Override
protected void closeHandler(AbstractClientMessage msg) {
log.debug("WebSocketBehavior::closeHandler uid - {}", uid);
super.closeHandler(msg);
if (uid != null) {
cm.exit(getClient());
uid = null;
}
}
@Override
protected IWsClient getWsClient() {
return getClient();
}
});
menu = new MenuPanel("menu", getMainMenu());
add(topControls.setOutputMarkupPlaceholderTag(true).setMarkupId("topControls"));
add(contents.add(getClient() == null || curPanel == null ? empty : curPanel).setOutputMarkupId(true).setMarkupId("contents"));
topControls.add(menu.setVisible(false), topLinks.setVisible(false).setOutputMarkupPlaceholderTag(true).setMarkupId("topLinks"));
final AboutDialog about = new AboutDialog("aboutDialog");
topLinks.add(new AjaxLink<Void>("about") {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
about.show(target);
}
});
if (getApplication().getDebugSettings().isDevelopmentUtilitiesEnabled()) {
add(new DebugBar("dev")
.positionBottom()
.add(AttributeModifier.append("class", "end-0"))
.setOutputMarkupId(true));
} else {
add(new EmptyPanel("dev").setVisible(false));
}
add(new OmAjaxClientInfoBehavior());
add(about, chat = new ChatPanel("chatPanel"));
add(newMessage = new MessageDialog("newMessageDialog", new CompoundPropertyModel<>(new PrivateMessage())) {
private static final long serialVersionUID = 1L;
@Override
public void onSend(IPartialPageRequestHandler handler) {
BasePanel bp = getCurrentPanel();
if (bp != null) {
bp.onNewMessageClose(handler);
}
}
});
add(userInfo = new UserInfoDialog("userInfoDialog", newMessage));
add(new AbstractDefaultAjaxBehavior() {
private static final long serialVersionUID = 1L;
@Override
protected void respond(AjaxRequestTarget target) {
userInfo.show(target, getParam(getComponent(), PARAM_USER_ID).toLong());
}
@Override
public void renderHead(Component component, IHeaderResponse response) {
super.renderHead(component, response);
response.render(new PriorityHeaderItem(getNamedFunction("showUserInfo", this, explicit(PARAM_USER_ID))));
}
});
add(new AbstractDefaultAjaxBehavior() {
private static final long serialVersionUID = 1L;
@Override
protected void respond(AjaxRequestTarget target) {
ContactsHelper.addUserToContactList(getParam(getComponent(), PARAM_USER_ID).toLong());
}
@Override
public void renderHead(Component component, IHeaderResponse response) {
super.renderHead(component, response);
response.render(new PriorityHeaderItem(getNamedFunction("addContact", this, explicit(PARAM_USER_ID))));
}
});
add(new AbstractDefaultAjaxBehavior() {
private static final long serialVersionUID = 1L;
@Override
protected void respond(AjaxRequestTarget target) {
newMessage.reset(true).show(target, getParam(getComponent(), PARAM_USER_ID).toOptionalLong());
}
@Override
public void renderHead(Component component, IHeaderResponse response) {
super.renderHead(component, response);
response.render(new PriorityHeaderItem(getNamedFunction("privateMessage", this, explicit(PARAM_USER_ID))));
}
});
add(inviteUser = new InviteUserToRoomDialog("invite-to-room"));
add(new AbstractDefaultAjaxBehavior() {
private static final long serialVersionUID = 1L;
@Override
protected void respond(AjaxRequestTarget target) {
inviteUser.show(target, getParam(getComponent(), PARAM_USER_ID).toLong());
}
@Override
public void renderHead(Component component, IHeaderResponse response) {
super.renderHead(component, response);
response.render(new PriorityHeaderItem(getNamedFunction("inviteUser", this, explicit(PARAM_USER_ID))));
}
});
AjaxLink<Void> logout = new AjaxLink<>("logout") {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
getSession().invalidate();
setResponsePage(Application.get().getSignInPageClass());
}
};
logout.add(newOkCancelConfirm(this, getString("634")));
topLinks.add(logout);
}