refs #934 Now the moderator and the presenter can have user status

This commit is contained in:
alexandrekreis 2013-10-02 15:51:08 -03:00
parent fb550226a5
commit ccffb5074c
3 changed files with 218 additions and 196 deletions

View File

@ -24,17 +24,17 @@ package org.bigbluebutton.main.model.users.events
{ {
public static const CHANGE_STATUS:String = "CHANGE_STATUS_EVENT"; public static const CHANGE_STATUS:String = "CHANGE_STATUS_EVENT";
public static const CLEAR_STATUS:String = "clear_status"; public static const CLEAR_STATUS:String = "CLEAR_STATUS";
public static const RAISE_HAND:String = "raise_hand"; public static const RAISE_HAND:String = "RAISE_HAND";
public static const AGREE:String = "agree"; public static const AGREE:String = "AGREE";
public static const DISAGREE:String = "disagree"; public static const DISAGREE:String = "DISAGREE";
public static const SPEAK_LOUDER:String = "speak_louder"; public static const SPEAK_LOUDER:String = "SPEAK_LOUDER";
public static const SPEAK_LOWER:String = "speak_lower"; public static const SPEAK_LOWER:String = "SPEAK_LOWER";
public static const SPEAK_FASTER:String = "speak_faster"; public static const SPEAK_FASTER:String = "SPEAK_FASTER";
public static const SPEAK_SLOWER:String = "speak_slower"; public static const SPEAK_SLOWER:String = "SPEAK_SLOWER";
public static const BE_RIGHT_BACK:String = "be_right_back"; public static const BE_RIGHT_BACK:String = "BE_RIGHT_BACK";
public static const LAUGHTER:String = "laughter"; public static const LAUGHTER:String = "LAUGHTER";
public static const SAD:String = "sad"; public static const SAD:String = "SAD";
private var status:String; private var status:String;
public var userId:String; public var userId:String;

View File

@ -92,116 +92,129 @@
private function updateButton(unneeded:Object = null):void { private function updateButton(unneeded:Object = null):void {
if (data != null) if (data != null)
{ {
if (data.presenter) if (rolledOver) //if i'm moderator and I rolled the mouse
{ {
roleImg.source = images.presenter_new;
roleImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.usersGrid.statusItemRenderer.presenter');
roleImg.visible = true;
roleBtn.visible = false;
roleBtn.enabled = false;
}
else if (rolledOver)
{
roleImg.visible = false;
roleBtn.visible = true;
roleBtn.enabled = true;
if (data.userHasStatus) if (data.userHasStatus)
{ {
roleBtn.setStyle("icon", images.delete_icon); statusBtn.setStyle("icon", images.delete_icon);
roleBtn.toolTip = ResourceUtil.getInstance().getString('bbb.users.usersGrid.statusItemRenderer.clearStatus'); statusBtn.toolTip = ResourceUtil.getInstance().getString('bbb.users.usersGrid.statusItemRenderer.clearStatus');
statusImg.visible = false;
statusBtn.visible = true;
statusBtn.enabled = true;
} }
else if(!data.presenter)
{ {
roleBtn.setStyle("icon", images.presenter_new); roleBtn.setStyle("icon", images.presenter_new);
roleBtn.toolTip = ResourceUtil.getInstance().getString('bbb.users.usersGrid.statusItemRenderer.changePresenter'); roleBtn.toolTip = ResourceUtil.getInstance().getString('bbb.users.usersGrid.statusItemRenderer.changePresenter');
roleImg.visible = false;
roleBtn.visible = true;
roleBtn.enabled = true;
} }
} }
else if (data.role == Role.MODERATOR)
{ else
roleImg.source = images.moderator;
roleImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.usersGrid.statusItemRenderer.moderator');
roleImg.visible = true;
roleBtn.visible = false;
roleBtn.enabled = false;
}
else if (data.userHasStatus)
{ {
//updating which role to show: presenter or moderator
if (data.presenter)
{
roleImg.source = images.presenter_new;
roleImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.usersGrid.statusItemRenderer.presenter')
}
else if(data.role == Role.MODERATOR)
{
roleImg.source = images.moderator;
roleImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.usersGrid.statusItemRenderer.moderator');
}
else
{
roleImg.source = null;
roleImg.toolTip = "";
}
//updating which status to show
switch(data.currentStatus) switch(data.currentStatus)
{ {
case ChangeStatusEvent.RAISE_HAND: case ChangeStatusEvent.RAISE_HAND:
roleImg.source = images.hand_new; statusImg.source = images.hand_new;
roleImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.usersGrid.statusItemRenderer.handRaised'); statusImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.usersGrid.statusItemRenderer.handRaised');
break; break;
case ChangeStatusEvent.AGREE: case ChangeStatusEvent.AGREE:
roleImg.source = images.agree; statusImg.source = images.agree;
roleImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.usersGrid.statusItemRenderer.agree'); statusImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.usersGrid.statusItemRenderer.agree');
break; break;
case ChangeStatusEvent.DISAGREE: case ChangeStatusEvent.DISAGREE:
roleImg.source = images.disagree; statusImg.source = images.disagree;
roleImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.usersGrid.statusItemRenderer.disagree'); statusImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.usersGrid.statusItemRenderer.disagree');
break; break;
case ChangeStatusEvent.SPEAK_LOUDER: case ChangeStatusEvent.SPEAK_LOUDER:
roleImg.source = images.speak_louder; statusImg.source = images.speak_louder;
roleImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.status.speak_louder'); statusImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.status.speak_louder');
break; break;
case ChangeStatusEvent.SPEAK_LOWER: case ChangeStatusEvent.SPEAK_LOWER:
roleImg.source = images.speak_lower; statusImg.source = images.speak_lower;
roleImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.status.speak_lower'); statusImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.status.speak_lower');
break; break;
case ChangeStatusEvent.SPEAK_FASTER: case ChangeStatusEvent.SPEAK_FASTER:
roleImg.source = images.speak_faster; statusImg.source = images.speak_faster;
roleImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.status.speak_faster'); statusImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.status.speak_faster');
break; break;
case ChangeStatusEvent.SPEAK_SLOWER: case ChangeStatusEvent.SPEAK_SLOWER:
roleImg.source = images.speak_slower; statusImg.source = images.speak_slower;
roleImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.status.speak_slower'); statusImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.status.speak_slower');
break; break;
case ChangeStatusEvent.BE_RIGHT_BACK: case ChangeStatusEvent.BE_RIGHT_BACK:
roleImg.source = images.be_right_back; statusImg.source = images.be_right_back;
roleImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.usersGrid.statusItemRenderer.be_right_back'); statusImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.usersGrid.statusItemRenderer.be_right_back');
break; break;
case ChangeStatusEvent.LAUGHTER: case ChangeStatusEvent.LAUGHTER:
roleImg.source = images.laughter; statusImg.source = images.laughter;
roleImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.status.laughter'); statusImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.status.laughter');
break; break;
case ChangeStatusEvent.SAD: case ChangeStatusEvent.SAD:
roleImg.source = images.sad; statusImg.source = images.sad;
roleImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.status.sad'); statusImg.toolTip = ResourceUtil.getInstance().getString('bbb.users.status.sad');
} break;
roleImg.visible = true; default: //user has no status...
statusImg.source = null;
statusImg.toolTip = "";
}
roleImg.visible = true;
statusImg.visible = true;
roleBtn.visible = false; roleBtn.visible = false;
statusBtn.visible = false;
roleBtn.enabled = false; roleBtn.enabled = false;
} statusBtn.enabled = false;
else
{ }
roleImg.source = null; }
roleImg.toolTip = ""; }
roleImg.visible = true;
roleBtn.visible = false;
roleBtn.enabled = false;
}
}
}
private function onRollOver(e:UsersRollEvent):void{ private function onRollOver(e:UsersRollEvent):void{ //descobrir qual botão: role ou status
if (moderator && (e.userID == data.userID) && !data.phoneUser) { if (moderator && (e.userID == data.userID) && !data.phoneUser) {
rolledOver = true; rolledOver = true;
updateButton(); updateButton();
} }
} }
private function onRollOut(e:UsersRollEvent):void{ private function onRollOut(e:UsersRollEvent):void{ //descobrir qual botão: role ou status
if (moderator) { if (moderator) {
rolledOver = false; rolledOver = false;
updateButton(); updateButton();
@ -210,20 +223,15 @@
private function roleBtnClicked():void private function roleBtnClicked():void
{ {
// Ignore if the selected user is already the presenter. var e:RoleChangeEvent = new RoleChangeEvent(RoleChangeEvent.ASSIGN_PRESENTER);
if (data.presenter) return; e.userid = data.userID;
e.username = data.name;
if (data.userHasStatus) dispatchEvent(e);
{ }
dispatchEvent( new ChangeStatusEvent(data.userID, ChangeStatusEvent.CLEAR_STATUS) )
} private function statusBtnClicked():void
else {
{ dispatchEvent( new ChangeStatusEvent(data.userID, ChangeStatusEvent.CLEAR_STATUS) )
var e:RoleChangeEvent = new RoleChangeEvent(RoleChangeEvent.ASSIGN_PRESENTER);
e.userid = data.userID;
e.username = data.name;
dispatchEvent(e);
}
} }
// Need to refresh the roleBtn toolTip text on locale change // Need to refresh the roleBtn toolTip text on locale change
@ -233,7 +241,10 @@
]]> ]]>
</mx:Script> </mx:Script>
<mx:Image id="roleImg" visible="true" width="16" height="16" includeInLayout="{roleImg.visible}" /> <mx:Image id="roleImg" visible="true" width="16" height="16" includeInLayout="{roleImg.visible}" />
<mx:Button id="roleBtn" visible="false" enabled="false" width="20" height="20" click="roleBtnClicked()" includeInLayout="{roleBtn.visible}" /> <mx:Button id="roleBtn" visible="false" enabled="false" width="16" height="16" click="roleBtnClicked()" includeInLayout="{roleBtn.visible}" />
<mx:Image id="statusImg" visible="true" width="16" height="16" includeInLayout="{statusImg.visible}" />
<mx:Button id="statusBtn" visible="false" enabled="false" width="16" height="16" click="statusBtnClicked()" includeInLayout="{statusBtn.visible}" />
<!-- Helper objects because direct bindings to data break when the itemRenderer is recycled --> <!-- Helper objects because direct bindings to data break when the itemRenderer is recycled -->
<mx:Image id="presenterInd" includeInLayout="false" visible="{data.presenter}" /> <mx:Image id="presenterInd" includeInLayout="false" visible="{data.presenter}" />

View File

@ -89,6 +89,7 @@
private var users:ArrayCollection = new ArrayCollection(); private var users:ArrayCollection = new ArrayCollection();
private var amIModerator:Boolean = false; private var amIModerator:Boolean = false;
private var baseIndex:int = 0;
private const FOCUS_USERS_LIST:String = "Focus Users List"; private const FOCUS_USERS_LIST:String = "Focus Users List";
private const MAKE_PRESENTER:String = "Make Presenter"; private const MAKE_PRESENTER:String = "Make Presenter";
@ -104,9 +105,8 @@
users = UserManager.getInstance().getConference().users; users = UserManager.getInstance().getConference().users;
amIModerator = UserManager.getInstance().getConference().amIModerator(); amIModerator = UserManager.getInstance().getConference().amIModerator();
settingsBtn.visible = settingsBtn.includeInLayout = partOptions.enableSettingsButton && amIModerator; //settingsBtn.visible = settingsBtn.includeInLayout = partOptions.enableSettingsButton && amIModerator;
BindingUtils.bindSetter(changeButtons, UserManager.getInstance().getConference(), "amIPresenter");
BindingUtils.bindSetter(updateNumberofUsers, users, "length"); BindingUtils.bindSetter(updateNumberofUsers, users, "length");
this.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown); this.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown);
@ -115,8 +115,6 @@
modifier = ExternalInterface.call("determineModifier"); modifier = ExternalInterface.call("determineModifier");
loadKeyCombos(modifier); loadKeyCombos(modifier);
changeButtons(UserManager.getInstance().getConference().amIPresenter);
resourcesChanged(); resourcesChanged();
titleBarOverlay.tabIndex = partOptions.baseTabIndex; titleBarOverlay.tabIndex = partOptions.baseTabIndex;
@ -142,10 +140,6 @@
resourcesChanged(); resourcesChanged();
} }
private function changeButtons(presenter:Boolean):void {
statusBtn.visible = statusBtn.includeInLayout = partOptions.enableRaiseHand && !(presenter || amIModerator);
}
private function onItemRollOver(event:ListEvent):void{ private function onItemRollOver(event:ListEvent):void{
var item:IListItemRenderer = event.itemRenderer; var item:IListItemRenderer = event.itemRenderer;
var user:BBBUser = item.data as BBBUser; var user:BBBUser = item.data as BBBUser;
@ -168,80 +162,6 @@
} }
} }
private function openParticipantStatus():void {
var menuStatusData:Array = [];
menuStatusData[0] = {label: ResourceUtil.getInstance().getString('bbb.users.status.clearStatus'), icon: images.delete_icon};
menuStatusData[1] = {label: ResourceUtil.getInstance().getString('bbb.shortcutkey.raiseHand.function'), icon: images.hand_new};
menuStatusData[2] = {label: ResourceUtil.getInstance().getString('bbb.users.status.agree'), icon: images.agree};
menuStatusData[3] = {label: ResourceUtil.getInstance().getString('bbb.users.status.disagree'), icon: images.disagree};
menuStatusData[4] = {label: ResourceUtil.getInstance().getString('bbb.users.status.speak_louder'), icon: images.speak_louder};
menuStatusData[5] = {label: ResourceUtil.getInstance().getString('bbb.users.status.speak_lower'), icon: images.speak_lower};
menuStatusData[6] = {label: ResourceUtil.getInstance().getString('bbb.users.status.speak_faster'), icon: images.speak_faster};
menuStatusData[7] = {label: ResourceUtil.getInstance().getString('bbb.users.status.speak_slower'), icon: images.speak_slower};
menuStatusData[8] = {label: ResourceUtil.getInstance().getString('bbb.users.status.be_right_back'), icon: images.be_right_back};
menuStatusData[9] = {label: ResourceUtil.getInstance().getString('bbb.users.status.laughter'), icon: images.laughter};
menuStatusData[10] = {label: ResourceUtil.getInstance().getString('bbb.users.status.sad'), icon: images.sad};
// make sure the previous menu is closed before opening a new one
// This could be improved to include a flag that tells if the menu is open,
// but it would require an extra listener for the MenuCloseEvent.
if (menuStatus) menuStatus.hide();
menuStatus = Menu.createMenu(null, menuStatusData, true);
menuStatus.variableRowHeight = true;
menuStatus.show(this.x + settingsBtn.x + 2, this.y + this.height + 25);
menuStatus.addEventListener(MenuEvent.ITEM_CLICK, menuStatusClickHandler);
menuStatus.setFocus();
}
private function menuStatusClickHandler(e:MenuEvent):void {
switch (e.index) {
case 0:
changeStatus(ChangeStatusEvent.CLEAR_STATUS);
break;
case 1:
changeStatus(ChangeStatusEvent.RAISE_HAND);
break;
case 2:
changeStatus(ChangeStatusEvent.AGREE);
break;
case 3:
changeStatus(ChangeStatusEvent.DISAGREE);
break;
case 4:
changeStatus(ChangeStatusEvent.SPEAK_LOUDER);
break;
case 5:
changeStatus(ChangeStatusEvent.SPEAK_LOWER);
break;
case 6:
changeStatus(ChangeStatusEvent.SPEAK_FASTER);
break;
case 7:
changeStatus(ChangeStatusEvent.SPEAK_SLOWER);
break;
case 8:
changeStatus(ChangeStatusEvent.BE_RIGHT_BACK);
break;
case 9:
changeStatus(ChangeStatusEvent.LAUGHTER);
break;
default:
changeStatus(ChangeStatusEvent.SAD);
}
}
private function changeStatus(whichStatus:String):void{
if (UserManager.getInstance().getConference().getMyRole() == Role.VIEWER) {
var e:ChangeStatusEvent = new ChangeStatusEvent(UserManager.getInstance().getConference().getMyUserId(), whichStatus);
dispatchEvent(e);
}
}
private function clearAllStatus():void { // Pendente: ver clear status do moderador private function clearAllStatus():void { // Pendente: ver clear status do moderador
for (var i:int = 0; i < users.length; i++) { for (var i:int = 0; i < users.length; i++) {
var p:BBBUser = users.getItemAt(i) as BBBUser; var p:BBBUser = users.getItemAt(i) as BBBUser;
@ -253,15 +173,41 @@
private function openSettings():void { private function openSettings():void {
// everyone can see the audio settings // everyone can see the audio settings
var myMenuData:Array = []; var myMenuData:Array = [];
myMenuData[0] = {label: ResourceUtil.getInstance().getString('bbb.users.settings.clearAllStats'), icon: images.delete_icon}; if(amIModerator)
if (!roomMuted) { {
myMenuData[1] = {label: ResourceUtil.getInstance().getString('bbb.users.settings.muteAll'), icon: images.audio_muted}; myMenuData[0] = {label: ResourceUtil.getInstance().getString('bbb.users.settings.clearAllStats'), icon: images.delete_icon};
if (UserManager.getInstance().getConference().getPresenter()) if (!roomMuted)
myMenuData[2] = {label: ResourceUtil.getInstance().getString('bbb.users.settings.muteAllExcept') + ": " + UserManager.getInstance().getConference().getPresenter().name, icon: images.audio_muted}; {
} else myMenuData[1] = {label: ResourceUtil.getInstance().getString('bbb.users.settings.muteAll'), icon: images.audio_muted};
myMenuData[1] = {label: ResourceUtil.getInstance().getString('bbb.users.settings.unmuteAll'), icon: images.audio}; if (UserManager.getInstance().getConference().getPresenter())
myMenuData[2] = {label: ResourceUtil.getInstance().getString('bbb.users.settings.muteAllExcept') + ": " + UserManager.getInstance().getConference().getPresenter().name, icon: images.audio_muted};
baseIndex = 2;
}
else
{
myMenuData[1] = {label: ResourceUtil.getInstance().getString('bbb.users.settings.unmuteAll'), icon: images.audio};
baseIndex = 1;
}
}
if(partOptions.enableRaiseHand)
{
myMenuData[baseIndex+1] = {label: ResourceUtil.getInstance().getString('bbb.users.status.clearStatus'), icon: images.delete_icon};
myMenuData[baseIndex+2] = {label: ResourceUtil.getInstance().getString('bbb.shortcutkey.raiseHand.function'), icon: images.hand_new};
myMenuData[baseIndex+3] = {label: ResourceUtil.getInstance().getString('bbb.users.status.agree'), icon: images.agree};
myMenuData[baseIndex+4] = {label: ResourceUtil.getInstance().getString('bbb.users.status.disagree'), icon: images.disagree};
myMenuData[baseIndex+5] = {label: ResourceUtil.getInstance().getString('bbb.users.status.speak_louder'), icon: images.speak_louder};
myMenuData[baseIndex+6] = {label: ResourceUtil.getInstance().getString('bbb.users.status.speak_lower'), icon: images.speak_lower};
myMenuData[baseIndex+7] = {label: ResourceUtil.getInstance().getString('bbb.users.status.speak_faster'), icon: images.speak_faster};
myMenuData[baseIndex+8] = {label: ResourceUtil.getInstance().getString('bbb.users.status.speak_slower'), icon: images.speak_slower};
myMenuData[baseIndex+9] = {label: ResourceUtil.getInstance().getString('bbb.users.status.be_right_back'), icon: images.be_right_back};
myMenuData[baseIndex+10] = {label: ResourceUtil.getInstance().getString('bbb.users.status.laughter'), icon: images.laughter};
myMenuData[baseIndex+11] = {label: ResourceUtil.getInstance().getString('bbb.users.status.sad'), icon: images.sad};
}
// make sure the previous menu is closed before opening a new one // make sure the previous menu is closed before opening a new one
// This could be improved to include a flag that tells if the menu is open, // This could be improved to include a flag that tells if the menu is open,
// but it would require an extra listener for the MenuCloseEvent. // but it would require an extra listener for the MenuCloseEvent.
@ -276,19 +222,89 @@
} }
private function menuClickHandler(e:MenuEvent):void { private function menuClickHandler(e:MenuEvent):void
// case 1 is the separator and can never get called {
switch (e.index) { if(baseIndex == 0) //not a moderator
case 0: {
clearAllStatus(); changeStatusHandler(e.index)
break; }
case 1:
muteAll(); else if(baseIndex == 1) //i'm a moderator and there is NOT the "mute all except" option
break; {
case 2: switch (e.index) {
muteAlmostAll(); case 0:
clearAllStatus();
break;
case 1:
muteAll();
break;
default:
changeStatusHandler(e.index);
}
}
else //i'm a moderator and the option "mute all except" is enabled
{
switch (e.index) {
case 0:
clearAllStatus();
break;
case 1:
muteAll();
break;
case 2:
muteAlmostAll();
break;
default:
changeStatusHandler(e.index);
}
} }
} }
private function changeStatusHandler(index:int):void {
switch (index) {
case baseIndex+1:
changeStatus(ChangeStatusEvent.CLEAR_STATUS);
break;
case baseIndex+2:
changeStatus(ChangeStatusEvent.RAISE_HAND);
break;
case baseIndex+3:
changeStatus(ChangeStatusEvent.AGREE);
break;
case baseIndex+4:
changeStatus(ChangeStatusEvent.DISAGREE);
break;
case baseIndex+5:
changeStatus(ChangeStatusEvent.SPEAK_LOUDER);
break;
case baseIndex+6:
changeStatus(ChangeStatusEvent.SPEAK_LOWER);
break;
case baseIndex+7:
changeStatus(ChangeStatusEvent.SPEAK_FASTER);
break;
case baseIndex+8:
changeStatus(ChangeStatusEvent.SPEAK_SLOWER);
break;
case baseIndex+9:
changeStatus(ChangeStatusEvent.BE_RIGHT_BACK);
break;
case baseIndex+10:
changeStatus(ChangeStatusEvent.LAUGHTER);
break;
case baseIndex+11:
changeStatus(ChangeStatusEvent.SAD);
}
}
private function changeStatus(whichStatus:String):void
{
var e:ChangeStatusEvent = new ChangeStatusEvent(UserManager.getInstance().getConference().getMyUserId(), whichStatus);
dispatchEvent(e);
}
private function setRoomMute(e:UsersEvent):void { private function setRoomMute(e:UsersEvent):void {
roomMuted = e.mute_state; roomMuted = e.mute_state;
@ -465,7 +481,7 @@
tabIndex="{partOptions.baseTabIndex+5}" tabIndex="{partOptions.baseTabIndex+5}"
accessibilityName="{ResourceUtil.getInstance().getString('bbb.users.usersGrid.accessibilityName')}" > accessibilityName="{ResourceUtil.getInstance().getString('bbb.users.usersGrid.accessibilityName')}" >
<mx:columns> <mx:columns>
<mx:DataGridColumn dataField="userStatus" headerText="{ResourceUtil.getInstance().getString('bbb.users.usersGrid.statusItemRenderer')}" editable="false" width="45" minWidth="45" <mx:DataGridColumn dataField="userStatus" headerText="{ResourceUtil.getInstance().getString('bbb.users.usersGrid.statusItemRenderer')}" editable="false" width="60" minWidth="60"
itemRenderer="org.bigbluebutton.modules.users.views.StatusItemRenderer" sortable="false" /> itemRenderer="org.bigbluebutton.modules.users.views.StatusItemRenderer" sortable="false" />
<mx:DataGridColumn dataField="name" headerText="{ResourceUtil.getInstance().getString('bbb.users.usersGrid.nameItemRenderer')}" editable="false" sortable="false" minWidth="60" <mx:DataGridColumn dataField="name" headerText="{ResourceUtil.getInstance().getString('bbb.users.usersGrid.nameItemRenderer')}" editable="false" sortable="false" minWidth="60"
itemRenderer="org.bigbluebutton.modules.users.views.NameItemRenderer"/> itemRenderer="org.bigbluebutton.modules.users.views.NameItemRenderer"/>
@ -480,11 +496,6 @@
click="openSettings()" visible="true" click="openSettings()" visible="true"
tabIndex="{partOptions.baseTabIndex+10}" /> tabIndex="{partOptions.baseTabIndex+10}" />
<mx:Button id="statusBtn" icon="{images.status}" width="30" height="30"
toolTip="{ResourceUtil.getInstance().getString('bbb.users.statusBtn.toolTip')}"
click="openParticipantStatus()" visible="false"
tabIndex="{partOptions.baseTabIndex+15}" />
<mx:Label id="roomMutedLbl" text="{ResourceUtil.getInstance().getString('bbb.users.settings.muteAll')}" /> <mx:Label id="roomMutedLbl" text="{ResourceUtil.getInstance().getString('bbb.users.settings.muteAll')}" />
<mx:Spacer width="100%"/> <mx:Spacer width="100%"/>
</mx:ControlBar> </mx:ControlBar>