Merge pull request #502 from capilkey/090-accessibility-fixes

First pass of accessibility fixes for 0.9.0
This commit is contained in:
Richard Alam 2015-01-30 11:11:10 -05:00
commit 63d586bf77
16 changed files with 123 additions and 71 deletions

View File

@ -128,6 +128,7 @@ bbb.users.settings.muteAllExcept = Mute All Users Except Presenter
bbb.users.settings.unmuteAll = Unmute All Users
bbb.users.settings.lowerAllHands = Lower All Hands
bbb.users.raiseHandBtn.toolTip = Raise Hand
bbb.users.raiseHandBtn.toolTip2 = Lower Hand
bbb.users.roomMuted.text = Viewers Muted
bbb.users.roomLocked.text = Viewers Locked
bbb.users.pushToTalk.toolTip = Talk
@ -221,7 +222,7 @@ bbb.chat.optionsTabName = Options
bbb.chat.privateChatSelect = Select a person to chat with privately
bbb.chat.private.userLeft = The user has left.
bbb.chat.private.userJoined = The user has joined.
bbb.chat.usersList.toolTip = Click User To Open Private Chat
bbb.chat.usersList.toolTip = Select User To Open Private Chat
bbb.chat.chatOptions = Chat Options
bbb.chat.fontSize = Chat Message Font Size
bbb.chat.cmbFontSize.toolTip = Select Chat Message Font Size

View File

@ -28,7 +28,8 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
width="100%" height="100%"
horizontalScrollPolicy="off"
verticalScrollPolicy="off"
creationComplete="init()">
creationComplete="init()"
addedToStage="onAddedToStage()">
<mx:Script>
<![CDATA[
@ -81,10 +82,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
ShortcutOptions.initialize();
}
private function appComplete():void{
hotkeyCapture();
}
private var api:ExternalApiCallbacks;
private function setupAPI():void {
@ -124,6 +121,10 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
* Shortcut Keys
*/
private function onAddedToStage():void {
hotkeyCapture();
}
private function localeChanged(e:Event):void{
loadKeyCombos(globalModifier);
}

View File

@ -309,12 +309,9 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
]]>
</mx:Script>
<mx:VBox id="webcamDisplay" width="100%" height="100%" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5" styleName="cameraDisplaySettingsWindowBackground">
<mx:HBox width="100%" horizontalAlign="left">
<mx:TextArea width="100%" wordWrap="false" borderSkin="{null}" editable="false" text="{ResourceUtil.getInstance().getString('bbb.users.settings.webcamSettings')}"
<mx:VBox id="webcamDisplay" width="100%" height="100%" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5" styleName="cameraDisplaySettingsWindowBackground">
<mx:TextArea width="100%" borderSkin="{null}" editable="false" text="{ResourceUtil.getInstance().getString('bbb.users.settings.webcamSettings')}"
styleName="webcamSettingsWindowTitleStyle" tabIndex="{baseIndex}"/>
</mx:HBox>
<mx:HRule width="100%"/>
<mx:Spacer height="1"/>
@ -342,5 +339,5 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
label="{ResourceUtil.getInstance().getString('bbb.video.publish.closeBtn.label')}"
accessibilityName="{ResourceUtil.getInstance().getString('bbb.video.publish.closeBtn.accessName')}"/>
</mx:HBox>
</mx:VBox>
</mx:VBox>
</mx:TitleWindow>

View File

@ -335,15 +335,17 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
</mx:HBox>
<mx:HRule width="100%"/>
<mx:HBox width="100%" horizontalAlign="right" horizontalGap="18" paddingTop="10">
<mx:Text width="100%" text="{ResourceUtil.getInstance().getString('bbb.micSettings.echoTestMicPrompt')}"
styleName="micSettingsWindowSpeakIntoMicLabelStyle" />
<mx:TextArea editable="false" textAlign="left" borderSkin="{null}"
width="100%" height="{yesButton.height}" tabIndex="{baseIndex+5}"
text="{ResourceUtil.getInstance().getString('bbb.micSettings.echoTestMicPrompt')}"
styleName="micSettingsWindowSpeakIntoMicLabelStyle" />
<mx:Button id="yesButton" label="{ResourceUtil.getInstance().getString('bbb.micSettings.echoTestAudioYes')}"
click="yesButtonClicked()" styleName="micSettingsWindowPlaySoundButtonStyle"
toolTip=""/>
toolTip="" tabIndex="{baseIndex+6}"/>
<mx:Button id="noButton" label="{ResourceUtil.getInstance().getString('bbb.micSettings.echoTestAudioNo')}"
styleName="micSettingsWindowPlaySoundButtonStyle"
click="noButtonClicked()"
toolTip=""/>
toolTip="" tabIndex="{baseIndex+7}"/>
</mx:HBox>
</mx:VBox>
</mx:AddChild>
@ -379,7 +381,13 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:State name="{FLASH_MIC_TEST_FAILED_STATE}">
<mx:AddChild relativeTo="displayMicNextToThis" position="after" >
<mx:HBox width="100%" height="100%" verticalAlign="middle" horizontalAlign="center">
<mx:Label width="100%" text="{ResourceUtil.getInstance().getString('bbb.micSettings.connectingtoecho.error')}" textAlign="center" styleName="micSettingsWindowHearFromHeadsetLabelStyle" />
<mx:TextArea editable="false" textAlign="center" borderSkin="{null}"
width="100%" height="{txtErrorMessageMock.height}"
text="{ResourceUtil.getInstance().getString('bbb.micSettings.connectingtoecho.error')}"
styleName="micSettingsWindowHearFromHeadsetLabelStyle" />
<mx:Text id="txtErrorMessageMock" width="100%" text="{ResourceUtil.getInstance().getString('bbb.micSettings.connectingtoecho.error')}"
textAlign="center" styleName="micSettingsWindowHearFromHeadsetLabelStyle"
visible="false" includeInLayout="false" />
</mx:HBox>
</mx:AddChild>
</mx:State>
@ -401,7 +409,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:TextArea borderSkin="{null}"
text="{ResourceUtil.getInstance().getString('bbb.users.settings.audioSettings')}"
editable="false" styleName="micSettingsWindowTitleStyle" tabIndex="{baseIndex}"
width="400" left="0"/>
width="400" left="0" />
<mx:LinkButton toolTip="{ResourceUtil.getInstance().getString('bbb.mainToolbar.helpBtn')}"
label="?" styleName="micSettingsWindowHelpButtonStyle" right="0"
height="22" click="onHelpButtonClicked()" tabIndex="{baseIndex+1}"
@ -419,18 +427,19 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:HBox width="100%" horizontalAlign="right" horizontalGap="18" paddingTop="10">
<mx:Button id="echoTestButton" label="{ResourceUtil.getInstance().getString('bbb.micSettings.nextButton')}"
click="echoTestButtonClickHandler()" styleName="micSettingsWindowPlaySoundButtonStyle"
toolTip="{ResourceUtil.getInstance().getString('bbb.micSettings.nextButton')}"/>
toolTip="{ResourceUtil.getInstance().getString('bbb.micSettings.nextButton')}"
tabIndex="{baseIndex+8}"/>
<mx:Button id="playButton" label="{ResourceUtil.getInstance().getString('bbb.micSettings.playSound')}"
click="playButtonClickHandler()" toggle="true" styleName="micSettingsWindowPlaySoundButtonStyle"
toolTip="{ResourceUtil.getInstance().getString('bbb.micSettings.playSound.toolTip')}"
tabIndex="{baseIndex+7}" />
tabIndex="{baseIndex+9}" />
<mx:Button id="cancelBtn" label="{ResourceUtil.getInstance().getString('bbb.micSettings.cancel')}"
styleName="micSettingsWindowCancelButtonStyle"
click="onCancelClicked()" tabIndex="{baseIndex+9}"
click="onCancelClicked()" tabIndex="{baseIndex+10}"
toolTip="{ResourceUtil.getInstance().getString('bbb.micSettings.cancel.toolTip')}"/>
</mx:HBox>
</mx:VBox>
</mx:VBox>
</mx:TitleWindow>

View File

@ -369,7 +369,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:LinkButton id="helpBtn" visible="{showHelpBtn}" label="?" click="onHelpButtonClicked()" height="22"
styleName="helpLinkButtonStyle" tabIndex="{baseIndex+numButtons+14}"
toolTip="{ResourceUtil.getInstance().getString('bbb.mainToolbar.helpBtn')}"
accessibilityDescription="{ResourceUtil.getInstance().getString('bbb.mainToolbar.helpBtn')}"/>
accessibilityName="{ResourceUtil.getInstance().getString('bbb.micSettings.access.helpButton')}"/>
<mx:Button label="" id="btnLogout" styleName="logoutButtonStyle"
toolTip="{ResourceUtil.getInstance().getString('bbb.mainToolbar.logoutBtn.toolTip')}" right="10" click="confirmLogout()" height="22"
tabIndex="{baseIndex+numButtons+15}" />

View File

@ -231,8 +231,10 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
</mx:HBox>
<mx:HRule width="100%"/>
<mx:HBox width="100%" horizontalAlign="right" horizontalGap="18" paddingTop="10">
<mx:Text width="100%" text="{ResourceUtil.getInstance().getString('bbb.micSettings.echoTestMicPrompt')}"
styleName="micSettingsWindowSpeakIntoMicLabelStyle" />
<mx:TextArea editable="false" textAlign="left" borderSkin="{null}"
width="100%" height="{yesButton.height}"
text="{ResourceUtil.getInstance().getString('bbb.micSettings.echoTestMicPrompt')}"
styleName="micSettingsWindowSpeakIntoMicLabelStyle" />
<mx:Button id="yesButton" label="{ResourceUtil.getInstance().getString('bbb.micSettings.echoTestAudioYes')}"
click="yesButtonClicked()" styleName="micSettingsWindowPlaySoundButtonStyle"
toolTip=""/>

View File

@ -54,6 +54,9 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
[Bindable] public var chatOptions:ChatOptions = new ChatOptions();
[Bindable]
public var baseIndex:int;
private function onCreationComplete():void{
users = UserManager.getInstance().getConference().users;
if (fontSizes.indexOf(chatOptions.fontSize) != -1) {
@ -122,12 +125,15 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:List id="usersList" height="100%" width="100%" dataProvider="{users}" dragEnabled="false"
visible="{chatOptions.privateEnabled}" includeInLayout="{chatOptions.privateEnabled}"
itemRenderer="org.bigbluebutton.modules.chat.views.UserRenderer"
itemClick="openPrivateChat(event)" toolTip="{ResourceUtil.getInstance().getString('bbb.chat.usersList.toolTip')}"/>
itemClick="openPrivateChat(event)" toolTip="{ResourceUtil.getInstance().getString('bbb.chat.usersList.toolTip')}"
tabIndex="{baseIndex}"/>
<mx:VBox id="optionsBox" height="100%" width="50%" >
<mx:Label text="{ResourceUtil.getInstance().getString('bbb.chat.chatOptions')}" />
<mx:HBox width="100%">
<mx:Label text="{ResourceUtil.getInstance().getString('bbb.chat.fontSize')}" />
<mx:ComboBox width="60" id="cmbFontSize" dataProvider="{fontSizes}" change="changeFontSize()" selectedIndex="1" toolTip="{ResourceUtil.getInstance().getString('bbb.chat.cmbFontSize.toolTip')}"/>
<mx:ComboBox width="60" id="cmbFontSize" dataProvider="{fontSizes}" change="changeFontSize()"
selectedIndex="1" toolTip="{ResourceUtil.getInstance().getString('bbb.chat.cmbFontSize.toolTip')}"
tabIndex="{baseIndex+1}"/>
</mx:HBox>
</mx:VBox>
</mx:VBox>

View File

@ -269,7 +269,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
chatBox.id = chatWithUserID;
chatBox.name = chatWithUserID;
chatBox.chatWithUserID = chatWithUserID;
chatBox.baseIndex = baseIndex;
chatBox.baseIndex = baseIndex+10;
if (publicChat) {
chatBox.label = PUBLIC_CHAT_USERNAME
@ -301,7 +301,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
tabBox.label = OPTION_TAB_ID;
tabBox.name = OPTION_TAB_ID;
tabBox.chatOptions = chatOptions;
tabBox.baseIndex = baseIndex + 10;
tabBox.addEventListener(KeyboardEvent.KEY_DOWN, tabBox.accessibleClick);
chatTabs.addChild(tabBox);

View File

@ -20,13 +20,11 @@ package org.bigbluebutton.modules.present.model
public var widthRatio: Number;
public var heightRatio: Number
private var _pageLoadedListener:Function;
private var _swfLoader:URLLoader;
private var _swfLoaded:Boolean = false;
private var _swfLoadedListener:Function;
private var _txtLoader:URLLoader;
private var _txtLoaded:Boolean = false;
private var _txtLoadedListener:Function;
private var _preloadCount:uint = 0;
@ -75,49 +73,58 @@ package org.bigbluebutton.modules.present.model
return _txtUri;
}
public function loadPage(pageLoadedListener:Function, preloadCount:uint):void {
if (_swfLoaded && _txtLoaded) {
pageLoadedListener(_id, preloadCount);
return;
}
_pageLoadedListener = pageLoadedListener;
_preloadCount = preloadCount;
if (!_swfLoaded) loadSwf();
if (!_txtLoaded) loadTxt();
}
public function get swfData():ByteArray {
if (_swfLoaded) return _swfLoader.data;
return null;
}
public function loadSwf(swfLoadedListener:Function, preloadCount:uint):void {
if (_swfLoaded) {
swfLoadedListener(_id, preloadCount);
} else {
_swfLoadedListener = swfLoadedListener;
_preloadCount = preloadCount;
private function loadSwf():void {
if (!_swfLoaded) {
_swfLoader.load(new URLRequest(_swfUri));
}
}
private function handleSwfLoadingComplete(e:Event):void{
_swfLoaded = true;
if (_swfLoadedListener != null) {
_swfLoadedListener(_id, _preloadCount);
}
_preloadCount = 0;
if (_txtLoaded) {
if (_pageLoadedListener != null) {
_pageLoadedListener(_id, _preloadCount);
}
_preloadCount = 0;
}
}
public function get txtData():String {
if (_txtLoaded) {
return _txtLoader.data;
}
if (_txtLoaded) return _txtLoader.data;
return null;
}
public function loadTxt(txtLoadedListener:Function):void {
if (_txtLoaded) {
txtLoadedListener(_id);
} else {
_txtLoadedListener = txtLoadedListener;
private function loadTxt():void {
if (!_txtLoaded) {
_txtLoader.load(new URLRequest(_txtUri));
}
}
private function handleTextLoadingComplete(e:Event):void{
_txtLoaded = true;
if (_txtLoadedListener != null) {
_txtLoadedListener(_id);
if (_swfLoaded) {
if (_pageLoadedListener != null) {
_pageLoadedListener(_id, _preloadCount);
}
_preloadCount = 0;
}
}

View File

@ -16,7 +16,7 @@ package org.bigbluebutton.modules.present.services
var page:Page = PresentationModel.getInstance().getPage(cmd.pageId);
if (page != null) {
trace(LOG + "Loading page [" + cmd.pageId + "]");
page.loadSwf(pageLoadedListener, cmd.preloadCount);
page.loadPage(pageLoadedListener, cmd.preloadCount);
}
}

View File

@ -22,7 +22,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:mate="http://mate.asfusion.com/"
layout="absolute" width="580" height="400" styleName="presentationFileUploadWindowStyle"
layout="absolute" width="580" height="410" styleName="presentationFileUploadWindowStyle"
initialize="initData();">
<mate:Dispatcher id="globalDispatch" />
@ -293,7 +293,10 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
</mx:Script>
<mx:VBox width="100%" height="100%" verticalAlign="top">
<mx:Label text="{ResourceUtil.getInstance().getString('bbb.fileupload.title')}" styleName="presentationUploadTitleStyle" paddingBottom="0"/>
<mx:TextArea borderSkin="{null}"
text="{ResourceUtil.getInstance().getString('bbb.fileupload.title')}"
editable="false" styleName="presentationUploadTitleStyle"
width="400" left="0"/>
<mx:HBox id="fileUploadBox" width="100%" paddingLeft="5" paddingTop="0" verticalAlign="middle">
<mx:Label id="lblFileName" width="{fileUploadBox.width-selectBtn.width-uploadBtn.width-30}" selectable="false" click="selectFile()" text="{ResourceUtil.getInstance().getString('bbb.fileupload.lblFileName.defaultText')}" />
<mx:Button id="selectBtn" label="{ResourceUtil.getInstance().getString('bbb.fileupload.selectBtn.label')}"

View File

@ -455,6 +455,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
private function displaySlideNumber(currentSlide:int):void {
disableSlideNavigationButtons(currentSlide);
btnSlideNum.label = "" + currentSlide + '/' + PresentationModel.getInstance().getNumberOfPages();
btnSlideNum.accessibilityName = ResourceUtil.getInstance().getString('bbb.presentation.btnSlideNum.accessibilityName', [currentSlide, PresentationModel.getInstance().getNumberOfPages()])
}

View File

@ -331,12 +331,10 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
// positionPage(page);
//slideLoader.accessibilityProperties.description = "Slide text start: " + e.slideText + " Slide text end";
// slideLoader.accessibilityDescription = ResourceUtil.getInstance().getString("bbb.presentation.slideloader.starttext") +
// page.txtData + ResourceUtil.getInstance().getString("bbb.presentation.slideloader.endtext");
// slideLoader.accessibilityName = ResourceUtil.getInstance().getString("bbb.presentation.slideloader.starttext") +
// page.txtData + ResourceUtil.getInstance().getString("bbb.presentation.slideloader.endtext");
slideLoader.accessibilityDescription = ResourceUtil.getInstance().getString("bbb.presentation.slideloader.starttext") +
page.txtData + ResourceUtil.getInstance().getString("bbb.presentation.slideloader.endtext");
slideLoader.accessibilityName = ResourceUtil.getInstance().getString("bbb.presentation.slideloader.starttext") +
page.txtData + ResourceUtil.getInstance().getString("bbb.presentation.slideloader.endtext");
}
}

View File

@ -203,7 +203,13 @@
private function raiseHand():void{
var e:RaiseHandEvent = new RaiseHandEvent(RaiseHandEvent.RAISE_HAND);
e.raised = !UserManager.getInstance().getConference().isMyHandRaised;
if (UserManager.getInstance().getConference().isMyHandRaised) {
e.raised = false;
raiseHandBtn.accessibilityName = ResourceUtil.getInstance().getString('bbb.users.raiseHandBtn.toolTip2');
} else {
e.raised = true;
raiseHandBtn.accessibilityName = ResourceUtil.getInstance().getString('bbb.users.raiseHandBtn.toolTip');
}
dispatchEvent(e);
}
@ -231,7 +237,7 @@
myMenu.variableRowHeight = true;
myMenu.show(this.x + settingsBtn.x + settingsBtn.width + 2, this.y + this.height);
myMenu.addEventListener(MenuEvent.ITEM_CLICK, menuClickHandler);
myMenu.setFocus();
myMenu.addEventListener(MenuEvent.MENU_SHOW, menuShowHandler);
}
private function menuClickHandler(e:MenuEvent):void {
@ -240,6 +246,10 @@
}
}
private function menuShowHandler(e:MenuEvent):void {
myMenu.setFocus();
}
private function handleChangedLockSettingsEvent(e:LockControlEvent):void {
var lockSettings:LockSettingsVO = UserManager.getInstance().getConference().getLockSettings();
roomLocked = lockSettings.getDisableCam() || lockSettings.getDisableMic() || lockSettings.getDisablePrivateChat()
@ -346,6 +356,14 @@
maximizeRestoreBtn.toolTip = ResourceUtil.getInstance().getString("bbb.window.maximizeRestoreBtn.toolTip");
maximizeRestoreBtn.accessibilityName = ResourceUtil.getInstance().getString("bbb.users.maximizeRestoreBtn.accessibilityName");
}
if (raiseHandBtn) {
if (UserManager.getInstance().getConference().isMyHandRaised) {
raiseHandBtn.accessibilityName = ResourceUtil.getInstance().getString('bbb.users.raiseHandBtn.toolTip2');
} else {
raiseHandBtn.accessibilityName = ResourceUtil.getInstance().getString('bbb.users.raiseHandBtn.toolTip');
}
}
}
private function loadKeyCombos(modifier:String):void {
@ -454,7 +472,7 @@
usersGrid.drawFocus(true);
}
private function remoteMuteAllButPres():void{
private function remoteMuteAllButPres(e:ShortcutEvent):void{
muteAlmostAll();
}
@ -480,9 +498,9 @@
<mx:ControlBar width="100%">
<mx:Button id="raiseHandBtn" toggle="true" icon="{images.hand_new}" selected="{UserManager.getInstance().getConference().isMyHandRaised}"
width="30" height="30" toolTip="{ResourceUtil.getInstance().getString('bbb.users.raiseHandBtn.toolTip')}" click="raiseHand()"
visible="true" tabIndex="{partOptions.baseTabIndex+15}" />
visible="true" tabIndex="{partOptions.baseTabIndex+10}" />
<mx:Button id="settingsBtn" icon="{images.users_settings}" width="30" height="30"
toolTip="{ResourceUtil.getInstance().getString('bbb.users.settings.buttonTooltip')}" click="openSettings()" visible="true" tabIndex="{partOptions.baseTabIndex+10}" />
toolTip="{ResourceUtil.getInstance().getString('bbb.users.settings.buttonTooltip')}" click="openSettings()" visible="true" tabIndex="{partOptions.baseTabIndex+15}" />
<mx:VBox>
<mx:Label text="{ResourceUtil.getInstance().getString('bbb.users.roomMuted.text')}" visible="{roomMuted}" includeInLayout="{roomMuted}" />
<mx:Label text="{ResourceUtil.getInstance().getString('bbb.users.roomLocked.text')}" visible="{roomLocked}" includeInLayout="{roomLocked}" />

View File

@ -78,6 +78,13 @@ package org.bigbluebutton.modules.videoconf.business
protected var videoConfOptions:VideoConfOptions = new VideoConfOptions();
public function VideoWindowItf() {
super();
accessibilityEnabled = false;
titleBarOverlay.accessibilityEnabled = false;
closeBtn.accessibilityEnabled = false;
}
public function getWindowType():String {
return windowType;
}

View File

@ -109,6 +109,8 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
dispatcher = new Dispatcher();
hotkeyCapture();
resourcesChanged();
titleBarOverlay.tabIndex = baseIndex;
minimizeBtn.tabIndex = baseIndex+1;