Search in sources :

Example 11 with IPartialPageRequestHandler

use of org.apache.wicket.core.request.handler.IPartialPageRequestHandler in project openmeetings by apache.

the class RoomPanel method onEvent.

@Override
public void onEvent(IEvent<?> event) {
    Client _c = getClient();
    if (_c != null && event.getPayload() instanceof WebSocketPushPayload) {
        WebSocketPushPayload wsEvent = (WebSocketPushPayload) event.getPayload();
        if (wsEvent.getMessage() instanceof RoomMessage) {
            RoomMessage m = (RoomMessage) wsEvent.getMessage();
            IPartialPageRequestHandler handler = wsEvent.getHandler();
            switch(m.getType()) {
                case pollCreated:
                    menu.updatePoll(handler, m.getUserId());
                    break;
                case pollUpdated:
                    menu.updatePoll(handler, null);
                    break;
                case recordingStoped:
                    {
                        String uid = ((TextRoomMessage) m).getText();
                        Client c = cm.getBySid(uid);
                        if (c == null) {
                            log.error("Not existing/BAD user has stopped recording {} != {} !!!!", uid);
                            return;
                        }
                        recordingUser = null;
                        cm.update(c.remove(Client.Activity.record));
                        menu.update(handler);
                        updateInterviewRecordingButtons(handler);
                    }
                    break;
                case recordingStarted:
                    {
                        JSONObject obj = new JSONObject(((TextRoomMessage) m).getText());
                        String sid = obj.getString("sid");
                        Client c = cm.getBySid(sid);
                        if (c == null) {
                            log.error("Not existing user has started recording {} !!!!", sid);
                            return;
                        }
                        recordingUser = sid;
                        cm.update(c.set(Client.Activity.record));
                        menu.update(handler);
                        updateInterviewRecordingButtons(handler);
                    }
                    break;
                case sharingStoped:
                    {
                        JSONObject obj = new JSONObject(((TextRoomMessage) m).getText());
                        String uid = obj.getString("uid");
                        Client c = cm.getBySid(obj.getString("sid"));
                        if (c == null) {
                            log.error("Not existing user has started sharing {} !!!!", obj);
                            return;
                        }
                        handler.appendJavaScript(String.format("VideoManager.close('%s', true);", uid));
                        sharingUser = null;
                        cm.update(c.removeStream(uid).remove(Client.Activity.share));
                        menu.update(handler);
                    }
                    break;
                case sharingStarted:
                    {
                        String uid = ((TextRoomMessage) m).getText();
                        Client c = cm.get(uid);
                        if (c == null) {
                            log.error("Not existing user has started sharing {} !!!!", uid);
                            return;
                        }
                        sharingUser = uid;
                        cm.update(c.set(Client.Activity.share));
                        menu.update(handler);
                    }
                    break;
                case rightUpdated:
                    {
                        String uid = ((TextRoomMessage) m).getText();
                        Client c = cm.get(uid);
                        if (c == null) {
                            log.error("Not existing user in rightUpdated {} !!!!", uid);
                            return;
                        }
                        boolean self = _c.getUid().equals(c.getUid());
                        handler.appendJavaScript(String.format("VideoManager.update(%s);", c.streamJson(_c.getSid(), self, scm).toString(new NullStringer())));
                        sidebar.update(handler);
                        menu.update(handler);
                        wb.update(handler);
                        updateInterviewRecordingButtons(handler);
                    }
                    break;
                case newStream:
                    {
                        JSONObject obj = new JSONObject(((TextRoomMessage) m).getText());
                        String uid = obj.getString("uid");
                        Client c = cm.get(uid);
                        if (c == null) {
                            // screen client, ext video stream
                            c = cm.getBySid(obj.getString("sid"));
                        }
                        if (c == null) {
                            log.error("Not existing user in newStream {} !!!!", uid);
                            return;
                        }
                        boolean self = _c.getSid().equals(c.getSid());
                        if (!self || Client.Type.room != scm.get(uid).getType()) {
                            // stream from others or self external video
                            JSONObject jo = videoJson(c, _c.getSid(), uid);
                            handler.appendJavaScript(String.format("VideoManager.play(%s);", jo));
                        }
                        if (self) {
                            cm.update(c.addStream(uid));
                        }
                        updateInterviewRecordingButtons(handler);
                    }
                    break;
                case closeStream:
                    {
                        JSONObject obj = new JSONObject(((TextRoomMessage) m).getText());
                        String uid = obj.getString("uid");
                        Client c = cm.getBySid(obj.getString("sid"));
                        if (c != null) {
                            // c == null means client exits the room
                            if (_c.getUid().equals(c.getUid())) {
                                cm.update(c.removeStream(uid));
                            }
                        }
                        handler.appendJavaScript(String.format("VideoManager.close('%s');", uid));
                        updateInterviewRecordingButtons(handler);
                    }
                    break;
                case roomEnter:
                    sidebar.update(handler);
                    menu.update(handler);
                    sidebar.addActivity(new Activity(m, Activity.Type.roomEnter), handler);
                    break;
                case roomExit:
                    sidebar.update(handler);
                    sidebar.addActivity(new Activity(m, Activity.Type.roomExit), handler);
                    break;
                case roomClosed:
                    handler.add(room.setVisible(false));
                    roomClosed.open(handler);
                    break;
                case requestRightModerator:
                    sidebar.addActivity(new Activity((TextRoomMessage) m, Activity.Type.reqRightModerator), handler);
                    break;
                case requestRightPresenter:
                    sidebar.addActivity(new Activity((TextRoomMessage) m, Activity.Type.reqRightPresenter), handler);
                    break;
                case requestRightWb:
                    sidebar.addActivity(new Activity((TextRoomMessage) m, Activity.Type.reqRightWb), handler);
                    break;
                case requestRightShare:
                    sidebar.addActivity(new Activity((TextRoomMessage) m, Activity.Type.reqRightShare), handler);
                    break;
                case requestRightRemote:
                    sidebar.addActivity(new Activity((TextRoomMessage) m, Activity.Type.reqRightRemote), handler);
                    break;
                case requestRightA:
                    sidebar.addActivity(new Activity((TextRoomMessage) m, Activity.Type.reqRightA), handler);
                    break;
                case requestRightAv:
                    sidebar.addActivity(new Activity((TextRoomMessage) m, Activity.Type.reqRightAv), handler);
                    break;
                case requestRightMute:
                    sidebar.addActivity(new Activity((TextRoomMessage) m, Activity.Type.reqRightMute), handler);
                    break;
                case requestRightExclusive:
                    sidebar.addActivity(new Activity((TextRoomMessage) m, Activity.Type.reqRightExclusive), handler);
                    break;
                case activityRemove:
                    sidebar.removeActivity(((TextRoomMessage) m).getText(), handler);
                    break;
                case haveQuestion:
                    if (_c.hasRight(Room.Right.moderator) || getUserId().equals(m.getUserId())) {
                        sidebar.addActivity(new Activity((TextRoomMessage) m, Activity.Type.haveQuestion), handler);
                    }
                    break;
                case kick:
                    {
                        String uid = ((TextRoomMessage) m).getText();
                        if (_c.getUid().equals(uid)) {
                            handler.add(room.setVisible(false));
                            getMainPanel().getChat().toggle(handler, false);
                            clientKicked.open(handler);
                            cm.exitRoom(_c);
                        }
                    }
                    break;
                case mute:
                    {
                        JSONObject obj = new JSONObject(((TextRoomMessage) m).getText());
                        Client c = cm.getBySid(obj.getString("sid"));
                        if (c == null) {
                            log.error("Not existing user in mute {} !!!!", obj);
                            return;
                        }
                        if (!_c.getUid().equals(c.getUid())) {
                            handler.appendJavaScript(String.format("if (typeof(VideoManager) !== 'undefined') {VideoManager.mute('%s', %s);}", obj.getString("uid"), obj.getBoolean("mute")));
                        }
                    }
                    break;
                case exclusive:
                    {
                        String uid = ((TextRoomMessage) m).getText();
                        Client c = cm.get(uid);
                        if (c == null) {
                            // no luck
                            return;
                        }
                        handler.appendJavaScript(String.format("if (typeof(VideoManager) !== 'undefined') {VideoManager.exclusive('%s');}", uid));
                    }
                    break;
                case quickPollUpdated:
                    {
                        menu.update(handler);
                        handler.appendJavaScript(getQuickPollJs());
                    }
                    break;
            }
        }
    }
    super.onEvent(event);
}
Also used : JSONObject(com.github.openjson.JSONObject) TextRoomMessage(org.apache.openmeetings.db.util.ws.TextRoomMessage) RoomMessage(org.apache.openmeetings.db.util.ws.RoomMessage) IPartialPageRequestHandler(org.apache.wicket.core.request.handler.IPartialPageRequestHandler) Activity(org.apache.openmeetings.web.room.activities.Activity) WebSocketPushPayload(org.apache.wicket.protocol.ws.api.event.WebSocketPushPayload) Client(org.apache.openmeetings.db.entity.basic.Client) TextRoomMessage(org.apache.openmeetings.db.util.ws.TextRoomMessage) NullStringer(org.apache.openmeetings.util.NullStringer)

Example 12 with IPartialPageRequestHandler

use of org.apache.wicket.core.request.handler.IPartialPageRequestHandler in project openmeetings by apache.

the class MainPanel method onInitialize.

@Override
protected void onInitialize() {
    menu = new MenuPanel("menu", getMainMenu());
    add(topControls.setOutputMarkupPlaceholderTag(true).setMarkupId("topControls"));
    add(contents.add(getClient() == null || panel == null ? EMPTY : panel).setOutputMarkupId(true).setMarkupId("contents"));
    topControls.add(menu.setVisible(false), topLinks.setVisible(false).setOutputMarkupPlaceholderTag(true).setMarkupId("topLinks"));
    topLinks.add(new AjaxLink<Void>("messages") {

        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            updateContents(PROFILE_MESSAGES, target);
        }
    });
    topLinks.add(new AjaxLink<Void>("profile") {

        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            updateContents(PROFILE_EDIT, target);
        }
    });
    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.open(target);
        }
    });
    if (getApplication().getDebugSettings().isDevelopmentUtilitiesEnabled()) {
        add(new DebugBar("dev").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 onClose(IPartialPageRequestHandler handler, DialogButton button) {
            BasePanel bp = getCurrentPanel();
            if (send.equals(button) && 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.open(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).open(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.open(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))));
        }
    });
    topLinks.add(new ConfirmableAjaxBorder("logout", getString("310"), getString("634")) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target) {
            getSession().invalidate();
            setResponsePage(Application.get().getSignInPageClass());
        }
    });
    super.onInitialize();
}
Also used : DebugBar(org.apache.wicket.devutils.debugbar.DebugBar) DialogButton(com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton) AboutDialog(org.apache.openmeetings.web.user.AboutDialog) EmptyPanel(org.apache.wicket.markup.html.panel.EmptyPanel) IPartialPageRequestHandler(org.apache.wicket.core.request.handler.IPartialPageRequestHandler) ChatPanel(org.apache.openmeetings.web.user.chat.ChatPanel) InviteUserToRoomDialog(org.apache.openmeetings.web.user.InviteUserToRoomDialog) MenuPanel(org.apache.openmeetings.web.common.menu.MenuPanel) AjaxRequestTarget(org.apache.wicket.ajax.AjaxRequestTarget) UserInfoDialog(org.apache.openmeetings.web.user.UserInfoDialog) PriorityHeaderItem(org.apache.wicket.markup.head.PriorityHeaderItem) AbstractDefaultAjaxBehavior(org.apache.wicket.ajax.AbstractDefaultAjaxBehavior) IHeaderResponse(org.apache.wicket.markup.head.IHeaderResponse) MessageDialog(org.apache.openmeetings.web.user.MessageDialog) PrivateMessage(org.apache.openmeetings.db.entity.user.PrivateMessage) Component(org.apache.wicket.Component)

Aggregations

IPartialPageRequestHandler (org.apache.wicket.core.request.handler.IPartialPageRequestHandler)12 DialogButton (com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton)10 MessageDialog (com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog)6 NonClosableMessageDialog (org.apache.openmeetings.web.util.NonClosableMessageDialog)3 AjaxRequestTarget (org.apache.wicket.ajax.AjaxRequestTarget)3 JSONObject (com.github.openjson.JSONObject)2 JQueryBehavior (com.googlecode.wicket.jquery.core.JQueryBehavior)2 GroupUser (org.apache.openmeetings.db.entity.user.GroupUser)2 User (org.apache.openmeetings.db.entity.user.User)2 RoomMessage (org.apache.openmeetings.db.util.ws.RoomMessage)2 Component (org.apache.wicket.Component)2 EmptyPanel (org.apache.wicket.markup.html.panel.EmptyPanel)2 Droppable (com.googlecode.wicket.jquery.ui.interaction.droppable.Droppable)1 AjaxDatePicker (com.googlecode.wicket.kendo.ui.form.datetime.local.AjaxDatePicker)1 Calendar (java.util.Calendar)1 FastDateFormat (org.apache.commons.lang3.time.FastDateFormat)1 Client (org.apache.openmeetings.db.entity.basic.Client)1 IWsClient (org.apache.openmeetings.db.entity.basic.IWsClient)1 WsClient (org.apache.openmeetings.db.entity.basic.WsClient)1 Appointment (org.apache.openmeetings.db.entity.calendar.Appointment)1