public class QueueMembersController {

    // selected queue whose members to view
    public ID queueId { get; set; }

    // provide queue name to show on page
    public Group selectedQueue {
        get {
            return [
                SELECT
                    id, name
                FROM
                    Group
                WHERE
                    id = :queueId
            ];
        }
    }

    // list of all active queue members
    public List<User> queueMembers {
        get {
            return [
                SELECT
                    id, firstName, lastName, alias, username, email, userRole.name, profile.name
                FROM
                    User
                WHERE
                    id IN ( SELECT userOrGroupId FROM GroupMember WHERE groupId = :queueId )
                    AND
                    isActive = true
            ];
        }
    }

    /**
     * Controller
     */
    public QueueMembersController() {
        queueId = ApexPages.currentPage().getParameters().get('queueId');
    }

    public PageReference refresh() {
        return null;
    }

    // picklist of queues whose members to view
    public List<SelectOption> getQueueOptions() {

        List<SelectOption> options = new List<SelectOption>();

        options.add( new SelectOption( '', '- Select -' ) );
        for ( Group grp : [
            SELECT
                id, name
            FROM
                Group
            WHERE
                type = 'Queue'
           ORDER BY
               name
        ] ) {
            options.add( new SelectOption( grp.id, grp.name ) );
        }

        return options;
    }

}