org.apache.openmeetings.web.room.menu.ActionsSubMenu.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.openmeetings.web.room.menu.ActionsSubMenu.java

Source

/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License") +  you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
package org.apache.openmeetings.web.room.menu;

import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF;
import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PNG;
import static org.apache.openmeetings.util.OpenmeetingsVariables.isSipEnabled;

import java.io.Serializable;

import org.apache.openmeetings.db.entity.room.Room;
import org.apache.openmeetings.db.entity.room.Room.RoomElement;
import org.apache.openmeetings.web.common.InvitationDialog;
import org.apache.openmeetings.web.common.menu.RoomMenuItem;
import org.apache.openmeetings.web.room.RoomPanel;
import org.apache.wicket.ajax.AjaxRequestTarget;

public class ActionsSubMenu implements Serializable {
    private static final long serialVersionUID = 1L;
    private final InvitationDialog invite;
    private final SipDialerDialog sipDialer;
    private final RoomPanel room;
    private final RoomMenuPanel mp;
    private RoomMenuItem actionsMenu;
    private RoomMenuItem inviteMenuItem;
    private RoomMenuItem shareMenuItem;
    private RoomMenuItem applyModerMenuItem;
    private RoomMenuItem applyWbMenuItem;
    private RoomMenuItem applyAvMenuItem;
    private RoomMenuItem sipDialerMenuItem;
    private RoomMenuItem downloadPngMenuItem;
    private RoomMenuItem downloadPdfMenuItem;
    private final boolean visible;

    public ActionsSubMenu(final RoomPanel room, final RoomMenuPanel mp) {
        this.room = room;
        this.mp = mp;
        RoomInvitationForm rif = new RoomInvitationForm("form", room.getRoom().getId());
        mp.add(invite = new InvitationDialog("invite", rif));
        rif.setDialog(invite);
        mp.add(sipDialer = new SipDialerDialog("sipDialer", room));
        visible = !room.getRoom().isHidden(RoomElement.ActionMenu);
    }

    public void init() {
        actionsMenu = new RoomMenuItem(mp.getString("635"), null, false);
        inviteMenuItem = new RoomMenuItem(mp.getString("213"), mp.getString("1489"), false) {
            private static final long serialVersionUID = 1L;

            @Override
            public void onClick(AjaxRequestTarget target) {
                invite.updateModel(target);
                invite.open(target);
            }
        };
        shareMenuItem = new RoomMenuItem(mp.getString("239"), mp.getString("1480"), false) {
            private static final long serialVersionUID = 1L;

            @Override
            public void onClick(AjaxRequestTarget target) {
                target.appendJavaScript("Sharer.open();");
            }
        };
        applyModerMenuItem = new RoomMenuItem(mp.getString("784"), mp.getString("1481"), false) {
            private static final long serialVersionUID = 1L;

            @Override
            public void onClick(AjaxRequestTarget target) {
                room.requestRight(Room.Right.moderator, target);
            }
        };
        applyWbMenuItem = new RoomMenuItem(mp.getString("785"), mp.getString("1492"), false) {
            private static final long serialVersionUID = 1L;

            @Override
            public void onClick(AjaxRequestTarget target) {
                room.requestRight(Room.Right.whiteBoard, target);
            }
        };
        applyAvMenuItem = new RoomMenuItem(mp.getString("786"), mp.getString("1482"), false) {
            private static final long serialVersionUID = 1L;

            @Override
            public void onClick(AjaxRequestTarget target) {
                room.requestRight(Room.Right.video, target);
            }
        };
        sipDialerMenuItem = new RoomMenuItem(mp.getString("1447"), mp.getString("1488"), false) {
            private static final long serialVersionUID = 1L;

            @Override
            public void onClick(AjaxRequestTarget target) {
                sipDialer.open(target);
            }
        };
        downloadPngMenuItem = new RoomMenuItem(mp.getString("download.png"), mp.getString("download.png")) {
            private static final long serialVersionUID = 1L;

            @Override
            public void onClick(AjaxRequestTarget target) {
                download(target, EXTENSION_PNG);
            }
        };
        downloadPdfMenuItem = new RoomMenuItem(mp.getString("download.pdf"), mp.getString("download.pdf")) {
            private static final long serialVersionUID = 1L;

            @Override
            public void onClick(AjaxRequestTarget target) {
                download(target, EXTENSION_PDF);
            }
        };
    }

    RoomMenuItem getMenu() {
        actionsMenu.setTop(true);
        actionsMenu.getItems().add(inviteMenuItem);
        actionsMenu.getItems().add(shareMenuItem);
        actionsMenu.getItems().add(applyModerMenuItem);
        actionsMenu.getItems().add(applyWbMenuItem);
        actionsMenu.getItems().add(applyAvMenuItem);
        actionsMenu.getItems().add(sipDialerMenuItem);
        actionsMenu.getItems().add(downloadPngMenuItem);
        actionsMenu.getItems().add(downloadPdfMenuItem);
        return actionsMenu;
    }

    public void update(final boolean moder, final boolean notExternalUser, final Room r) {
        if (!visible) {
            return;
        }
        boolean isInterview = Room.Type.interview == r.getType();
        downloadPngMenuItem.setEnabled(!isInterview);
        downloadPdfMenuItem.setEnabled(!isInterview);
        actionsMenu.setEnabled(moder || r.isAllowUserQuestions());
        inviteMenuItem.setEnabled(notExternalUser && moder);
        boolean shareVisible = room.screenShareAllowed();
        shareMenuItem.setEnabled(shareVisible);
        applyModerMenuItem.setEnabled(!moder);
        applyWbMenuItem.setEnabled(!room.getClient().hasRight(Room.Right.whiteBoard));
        applyAvMenuItem.setEnabled(
                !room.getClient().hasRight(Room.Right.audio) || !room.getClient().hasRight(Room.Right.video));
        sipDialerMenuItem.setEnabled(r.isSipEnabled() && isSipEnabled());
    }

    private static void download(AjaxRequestTarget target, String type) {
        target.appendJavaScript(String.format("WbArea.download('%s');", type));
    }

    public boolean isVisible() {
        return visible;
    }
}