Merge pull request #712 from riadvice/tab-indexer

Added TabIndexer class for automating tab indexation.
This commit is contained in:
Richard Alam 2015-08-04 11:07:50 -04:00
commit fdfd382a28
17 changed files with 255 additions and 182 deletions

View File

@ -0,0 +1,114 @@
/**
* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/
*
* Copyright (c) 2015 BigBlueButton Inc. and by respective authors (see below).
*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation; either version 3.0 of the License, or (at your option) any later
* version.
*
* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along
* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.common
{
import flash.events.Event;
import flash.events.EventDispatcher;
import mx.core.Container;
import mx.core.IMXMLObject;
import mx.core.UIComponent;
import mx.events.FlexEvent;
public class TabIndexer extends EventDispatcher implements IMXMLObject
{
private var _document:Container;
private var _id:String;
private var _ready:Boolean;
private var _startIndex:int;
private var _tabIndices:Array;
/**
* @inheritDoc
*/
public function initialized(document:Object, id:String):void
{
_id=id;
_document=document as Container;
_document.addEventListener(FlexEvent.CREATION_COMPLETE, documentCreationCompleteHandler, false, 0, true);
}
[Bindable(event="startIndexChange")]
/**
* tabIndex value of the first element.
*/
public function get startIndex():int
{
return _startIndex;
}
public function set startIndex(value:int):void
{
if (_startIndex !== value)
{
_startIndex=value;
dispatchEvent(new Event("startIndexChange"));
indexTabs();
}
}
[Bindable(event="tabIndicesChange")]
/**
* An array containing tab indexable properties to index. Tab indexing will use array order.
*/
public function get tabIndices():Array
{
return _tabIndices;
}
public function set tabIndices(value:Array):void
{
if (_tabIndices !== value)
{
_tabIndices=value;
dispatchEvent(new Event("tabIndicesChange"));
indexTabs();
}
}
/**
* Runs a tab indexation on document components contained in tabIndices Array.
*/
protected function indexTabs():void
{
if (_ready)
{
for (var i:int=0; i < tabIndices.length; i++)
{
if (_tabIndices[i - 1] != null)
{
UIComponent(_tabIndices[i - 1]).tabIndex=startIndex + i;
}
}
}
}
/**
*
* Sets state to ready to index after the document creation is compelete and starts
* the first tab indexation.
* @param event CREATION_COMPLETE event of the document
*
*/
private function documentCreationCompleteHandler(event:FlexEvent):void
{
_document.removeEventListener(FlexEvent.CREATION_COMPLETE, documentCreationCompleteHandler, false);
_ready=true;
indexTabs();
}
}
}

View File

@ -21,6 +21,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:mate="http://mate.asfusion.com/" xmlns:mate="http://mate.asfusion.com/"
xmlns:common="org.bigbluebutton.common.*"
width="700" height="350" width="700" height="350"
initialize="init()" initialize="init()"
styleName="micSettingsWindowStyle" styleName="micSettingsWindowStyle"
@ -50,8 +51,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
private var phoneOptions:PhoneOptions = new PhoneOptions; private var phoneOptions:PhoneOptions = new PhoneOptions;
[Bindable] private var baseIndex:int = 1;
private function init():void { private function init():void {
var conference:Conference = UserManager.getInstance().getConference(); var conference:Conference = UserManager.getInstance().getConference();
@ -111,10 +110,13 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
} }
]]> ]]>
</mx:Script> </mx:Script>
<common:TabIndexer startIndex="1" tabIndices="{[textArea, btnMicrophone, btnListenOnly, cancelBtn]}"/>
<mx:VBox width="100%" height="100%" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5" horizontalAlign="right"> <mx:VBox width="100%" height="100%" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5" horizontalAlign="right">
<mx:HBox width="100%" height="60"> <mx:HBox width="100%" height="60">
<mx:TextArea borderSkin="{null}" verticalScrollPolicy="off" <mx:TextArea borderSkin="{null}" verticalScrollPolicy="off"
editable="false" tabIndex="{baseIndex}" editable="false" id="textArea"
text="{ResourceUtil.getInstance().getString('bbb.audioSelection.title')}" text="{ResourceUtil.getInstance().getString('bbb.audioSelection.title')}"
styleName="micSettingsWindowTitleStyle" styleName="micSettingsWindowTitleStyle"
width="100%" height="100%" /> width="100%" height="100%" />
@ -123,14 +125,14 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:HBox width="100%" height="100%"> <mx:HBox width="100%" height="100%">
<mx:VBox id="vboxMic" height="100%" width="30%" horizontalAlign="center"> <mx:VBox id="vboxMic" height="100%" width="30%" horizontalAlign="center">
<mx:Image source="@Embed('assets/microphone80.png')" /> <mx:Image source="@Embed('assets/microphone80.png')" />
<mx:Button id="btnMicrophone" tabIndex="{baseIndex+1}" click="onMicClick()" <mx:Button id="btnMicrophone" click="onMicClick()"
label="{ResourceUtil.getInstance().getString('bbb.audioSelection.btnMicrophone.label')}" label="{ResourceUtil.getInstance().getString('bbb.audioSelection.btnMicrophone.label')}"
accessibilityName="{ResourceUtil.getInstance().getString('bbb.audioSelection.btnMicrophone.toolTip')}"/> accessibilityName="{ResourceUtil.getInstance().getString('bbb.audioSelection.btnMicrophone.toolTip')}"/>
</mx:VBox> </mx:VBox>
<mx:VRule id="vruleListen" height="100%" width="5%" /> <mx:VRule id="vruleListen" height="100%" width="5%" />
<mx:VBox id="vboxListen" height="100%" width="30%" horizontalAlign="center"> <mx:VBox id="vboxListen" height="100%" width="30%" horizontalAlign="center">
<mx:Image source="@Embed('assets/speaker80.png')" /> <mx:Image source="@Embed('assets/speaker80.png')" />
<mx:Button id="btnListenOnly" tabIndex="{baseIndex+2}" click="onListenClick()" <mx:Button id="btnListenOnly" click="onListenClick()"
label="{ResourceUtil.getInstance().getString('bbb.audioSelection.btnListenOnly.label')}" label="{ResourceUtil.getInstance().getString('bbb.audioSelection.btnListenOnly.label')}"
accessibilityName="{ResourceUtil.getInstance().getString('bbb.audioSelection.btnListenOnly.toolTip')}" /> accessibilityName="{ResourceUtil.getInstance().getString('bbb.audioSelection.btnListenOnly.toolTip')}" />
</mx:VBox> </mx:VBox>
@ -142,6 +144,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
</mx:HBox> </mx:HBox>
<mx:HRule width="100%" /> <mx:HRule width="100%" />
<mx:Button id="cancelBtn" label="{ResourceUtil.getInstance().getString('bbb.micSettings.cancel')}" accessibilityName="{ResourceUtil.getInstance().getString('bbb.micSettings.cancel.toolTip')}" <mx:Button id="cancelBtn" label="{ResourceUtil.getInstance().getString('bbb.micSettings.cancel')}" accessibilityName="{ResourceUtil.getInstance().getString('bbb.micSettings.cancel.toolTip')}"
tabIndex="{baseIndex+3}" click="onCancelClicked()" styleName="micSettingsWindowPlaySoundButtonStyle" /> click="onCancelClicked()" styleName="micSettingsWindowPlaySoundButtonStyle" />
</mx:VBox> </mx:VBox>
</mx:TitleWindow> </mx:TitleWindow>

View File

@ -20,6 +20,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
--> -->
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:view="org.bigbluebutton.main.views.*" xmlns:view="org.bigbluebutton.main.views.*"
xmlns:common="org.bigbluebutton.common.*"
layout="absolute" layout="absolute"
verticalScrollPolicy="off" horizontalScrollPolicy="off" verticalScrollPolicy="off" horizontalScrollPolicy="off"
width="630" height="450" creationComplete="onCreationComplete()" styleName="cameraDisplaySettingsWindowStyle" width="630" height="450" creationComplete="onCreationComplete()" styleName="cameraDisplaySettingsWindowStyle"
@ -64,11 +65,10 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
private var selectedCam:int; private var selectedCam:int;
private var aspectRatio:Number = 1; private var aspectRatio:Number = 1;
[Bindable]private var baseIndex:int; override public function move(x:Number, y:Number):void
override public function move(x:Number, y:Number):void {
{ return;
return; }
}
private function onCreationComplete():void { private function onCreationComplete():void {
tabIndex = 51; tabIndex = 51;
@ -199,10 +199,12 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
]]> ]]>
</mx:Script> </mx:Script>
<common:TabIndexer startIndex="1" tabIndices="{[textArea, cmbCameraSelector, cmbVideoProfile, btnStartPublish, btnClosePublish]}"/>
<mx:VBox id="webcamDisplay" width="100%" height="100%" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5" styleName="cameraDisplaySettingsWindowBackground"> <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')}" <mx:TextArea width="100%" borderSkin="{null}" editable="false" text="{ResourceUtil.getInstance().getString('bbb.users.settings.webcamSettings')}"
styleName="webcamSettingsWindowTitleStyle" tabIndex="{baseIndex}"/> styleName="webcamSettingsWindowTitleStyle" id="textArea"/>
<mx:HRule width="100%"/> <mx:HRule width="100%"/>
<mx:Spacer height="1"/> <mx:Spacer height="1"/>
@ -211,9 +213,9 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
</mx:Box> </mx:Box>
<mx:HBox width="100%" height="10%" horizontalAlign="center" horizontalGap="13" paddingRight="5"> <mx:HBox width="100%" height="10%" horizontalAlign="center" horizontalGap="13" paddingRight="5">
<mx:ComboBox id="cmbCameraSelector" styleName="cameraDisplaySettingsWindowCameraSelector" dataProvider="{camerasAvailable}" width="150" visible="true" labelField="label" change="updateCamera()" tabIndex="{baseIndex+1}" height="30"/> <mx:ComboBox id="cmbCameraSelector" styleName="cameraDisplaySettingsWindowCameraSelector" dataProvider="{camerasAvailable}" width="150" visible="true" labelField="label" change="updateCamera()" height="30"/>
<mx:ComboBox id="cmbVideoProfile" styleName="cameraDisplaySettingsWindowProfileComboStyle" <mx:ComboBox id="cmbVideoProfile" styleName="cameraDisplaySettingsWindowProfileComboStyle"
dataProvider="{_videoProfiles}" visible="false" change="updateCamera()" tabIndex="{baseIndex+2}" dataProvider="{_videoProfiles}" visible="false" change="updateCamera()"
toolTip="{ResourceUtil.getInstance().getString('bbb.publishVideo.cmbResolution.tooltip')}" height="30" /> toolTip="{ResourceUtil.getInstance().getString('bbb.publishVideo.cmbResolution.tooltip')}" height="30" />
</mx:HBox> </mx:HBox>
@ -222,10 +224,10 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:HBox width="100%" height="10%" horizontalAlign="right" horizontalGap="13" paddingRight="5" paddingBottom="5" paddingTop="1"> <mx:HBox width="100%" height="10%" horizontalAlign="right" horizontalGap="13" paddingRight="5" paddingBottom="5" paddingTop="1">
<mx:Button id="btnStartPublish" toolTip="{ResourceUtil.getInstance().getString('bbb.publishVideo.startPublishBtn.toolTip')}" <mx:Button id="btnStartPublish" toolTip="{ResourceUtil.getInstance().getString('bbb.publishVideo.startPublishBtn.toolTip')}"
click="startPublishing()" enabled="false" styleName="cameraDisplaySettingsWindowStartBtn" click="startPublishing()" enabled="false" styleName="cameraDisplaySettingsWindowStartBtn"
label="{ResourceUtil.getInstance().getString('bbb.publishVideo.startPublishBtn.labelText')}" tabIndex="{baseIndex+3}" /> label="{ResourceUtil.getInstance().getString('bbb.publishVideo.startPublishBtn.labelText')}"/>
<mx:Button id="btnClosePublish" <mx:Button id="btnClosePublish"
click="onCancelClicked()" click="onCancelClicked()"
enabled="true" tabIndex="{baseIndex+4}" enabled="true"
label="{ResourceUtil.getInstance().getString('bbb.video.publish.closeBtn.label')}" label="{ResourceUtil.getInstance().getString('bbb.video.publish.closeBtn.label')}"
accessibilityName="{ResourceUtil.getInstance().getString('bbb.video.publish.closeBtn.accessName')}"/> accessibilityName="{ResourceUtil.getInstance().getString('bbb.video.publish.closeBtn.accessName')}"/>
</mx:HBox> </mx:HBox>

View File

@ -20,6 +20,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
--> -->
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:mate="http://mate.asfusion.com/" xmlns:mate="http://mate.asfusion.com/"
xmlns:common="org.bigbluebutton.common.*"
width="600" height="380" width="600" height="380"
creationComplete="onCreationComplete()" creationComplete="onCreationComplete()"
styleName="micSettingsWindowStyle" styleName="micSettingsWindowStyle"
@ -83,7 +84,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
[Bindable] private var cancelIcon:Class = images.cancel; [Bindable] private var cancelIcon:Class = images.cancel;
[Bindable] private var microphoneList:Array; [Bindable] private var microphoneList:Array;
[Bindable] private var baseIndex:int = 1;
private var doingEchoTest:Boolean = false; private var doingEchoTest:Boolean = false;
private var my_nc:NetConnection; private var my_nc:NetConnection;
@ -321,6 +321,9 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
]]> ]]>
</mx:Script> </mx:Script>
<common:TabIndexer startIndex="1"
tabIndices="{[audioSettingText, helpButton, comboMicList, micRecordVolume, micLevel, echoTestText, yesButton, noButton, echoTestButton, playButton, cancelBtn]}"/>
<mx:states> <mx:states>
<mx:State name="{FLASH_ECHO_TEST_STATE}"> <mx:State name="{FLASH_ECHO_TEST_STATE}">
<mx:AddChild relativeTo="displayMicNextToThis" position="after"> <mx:AddChild relativeTo="displayMicNextToThis" position="after">
@ -332,16 +335,16 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:HRule width="100%"/> <mx:HRule width="100%"/>
<mx:HBox width="100%" horizontalAlign="right" horizontalGap="18" paddingTop="10"> <mx:HBox width="100%" horizontalAlign="right" horizontalGap="18" paddingTop="10">
<mx:TextArea editable="false" textAlign="left" borderSkin="{null}" <mx:TextArea editable="false" textAlign="left" borderSkin="{null}"
width="100%" height="60" tabIndex="{baseIndex+5}" width="100%" height="60" id="echoTestText"
text="{ResourceUtil.getInstance().getString('bbb.micSettings.echoTestMicPrompt')}" text="{ResourceUtil.getInstance().getString('bbb.micSettings.echoTestMicPrompt')}"
styleName="micSettingsWindowSpeakIntoMicLabelStyle" /> styleName="micSettingsWindowSpeakIntoMicLabelStyle" />
<mx:Button id="yesButton" label="{ResourceUtil.getInstance().getString('bbb.micSettings.echoTestAudioYes')}" <mx:Button id="yesButton" label="{ResourceUtil.getInstance().getString('bbb.micSettings.echoTestAudioYes')}"
click="yesButtonClicked()" styleName="micSettingsWindowPlaySoundButtonStyle" click="yesButtonClicked()" styleName="micSettingsWindowPlaySoundButtonStyle"
toolTip="" tabIndex="{baseIndex+6}"/> toolTip=""/>
<mx:Button id="noButton" label="{ResourceUtil.getInstance().getString('bbb.micSettings.echoTestAudioNo')}" <mx:Button id="noButton" label="{ResourceUtil.getInstance().getString('bbb.micSettings.echoTestAudioNo')}"
styleName="micSettingsWindowPlaySoundButtonStyle" styleName="micSettingsWindowPlaySoundButtonStyle"
click="noButtonClicked()" click="noButtonClicked()"
toolTip="" tabIndex="{baseIndex+7}"/> toolTip=""/>
</mx:HBox> </mx:HBox>
</mx:VBox> </mx:VBox>
</mx:AddChild> </mx:AddChild>
@ -356,19 +359,18 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:HBox> <mx:HBox>
<mx:ComboBox id="comboMicList" <mx:ComboBox id="comboMicList"
dataProvider="{microphoneList}" change="selectMicrophone(event)" dataProvider="{microphoneList}" change="selectMicrophone(event)"
height="30" dropdownWidth="390" width="390" tabIndex="{baseIndex+2}" height="30" dropdownWidth="390" width="390"
toolTip="{ResourceUtil.getInstance().getString('bbb.micSettings.comboMicList.toolTip')}" /> toolTip="{ResourceUtil.getInstance().getString('bbb.micSettings.comboMicList.toolTip')}" />
<mx:HSlider id="micRecordVolume" <mx:HSlider id="micRecordVolume"
maximum="100" snapInterval="1" maximum="100" snapInterval="1"
labels="[0%,{ResourceUtil.getInstance().getString('bbb.micSettings.micRecordVolume.label')},100%]" labels="[0%,{ResourceUtil.getInstance().getString('bbb.micSettings.micRecordVolume.label')},100%]"
tickInterval="10" liveDragging="true" change="changeRecordVolume(event);" tickInterval="10" liveDragging="true" change="changeRecordVolume(event);"
showTrackHighlight="true" trackColors="[ 0xEEEEEE, 0xFFFFFF ]" showTrackHighlight="true" trackColors="[ 0xEEEEEE, 0xFFFFFF ]"
value="60" tabIndex="{baseIndex+3}" value="60"
toolTip="{ResourceUtil.getInstance().getString('bbb.micSettings.micRecordVolume.toolTip')}" /> toolTip="{ResourceUtil.getInstance().getString('bbb.micSettings.micRecordVolume.toolTip')}" />
</mx:HBox> </mx:HBox>
<mx:ProgressBar id="micLevel" minimum="0" maximum="100" direction="right" label="" <mx:ProgressBar id="micLevel" minimum="0" maximum="100" direction="right" label=""
mode="manual" visible="true" width="100%" height="27" trackHeight="25" verticalGap="-20" mode="manual" visible="true" width="100%" height="27" trackHeight="25" verticalGap="-20"/>
tabIndex="{baseIndex+4}" />
</mx:VBox> </mx:VBox>
</mx:AddChild> </mx:AddChild>
@ -404,11 +406,11 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:Canvas width="100%" id="flashMicSettingsTitle"> <mx:Canvas width="100%" id="flashMicSettingsTitle">
<mx:TextArea borderSkin="{null}" <mx:TextArea borderSkin="{null}"
text="{ResourceUtil.getInstance().getString('bbb.users.settings.audioSettings')}" text="{ResourceUtil.getInstance().getString('bbb.users.settings.audioSettings')}"
editable="false" styleName="micSettingsWindowTitleStyle" tabIndex="{baseIndex}" editable="false" styleName="micSettingsWindowTitleStyle" id="audioSettingText"
width="400" left="0" /> width="400" left="0" />
<mx:LinkButton toolTip="{ResourceUtil.getInstance().getString('bbb.mainToolbar.helpBtn')}" <mx:LinkButton toolTip="{ResourceUtil.getInstance().getString('bbb.mainToolbar.helpBtn')}"
label="?" styleName="micSettingsWindowHelpButtonStyle" right="0" label="?" styleName="micSettingsWindowHelpButtonStyle" right="0"
height="22" click="onHelpButtonClicked()" tabIndex="{baseIndex+1}" height="22" click="onHelpButtonClicked()" id="helpButton"
accessibilityName="{ResourceUtil.getInstance().getString('bbb.micSettings.access.helpButton')}"/> accessibilityName="{ResourceUtil.getInstance().getString('bbb.micSettings.access.helpButton')}"/>
</mx:Canvas> </mx:Canvas>
<mx:HBox width="100%" id="displayMicNextToThis"> <mx:HBox width="100%" id="displayMicNextToThis">
@ -423,15 +425,13 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:HBox width="100%" horizontalAlign="right" horizontalGap="18" paddingTop="10"> <mx:HBox width="100%" horizontalAlign="right" horizontalGap="18" paddingTop="10">
<mx:Button id="echoTestButton" label="{ResourceUtil.getInstance().getString('bbb.micSettings.nextButton')}" <mx:Button id="echoTestButton" label="{ResourceUtil.getInstance().getString('bbb.micSettings.nextButton')}"
click="echoTestButtonClickHandler()" styleName="micSettingsWindowPlaySoundButtonStyle" 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')}" <mx:Button id="playButton" label="{ResourceUtil.getInstance().getString('bbb.micSettings.playSound')}"
click="playButtonClickHandler()" toggle="true" styleName="micSettingsWindowPlaySoundButtonStyle" click="playButtonClickHandler()" toggle="true" styleName="micSettingsWindowPlaySoundButtonStyle"
toolTip="{ResourceUtil.getInstance().getString('bbb.micSettings.playSound.toolTip')}" toolTip="{ResourceUtil.getInstance().getString('bbb.micSettings.playSound.toolTip')}"/>
tabIndex="{baseIndex+9}" />
<mx:Button id="cancelBtn" label="{ResourceUtil.getInstance().getString('bbb.micSettings.cancel')}" <mx:Button id="cancelBtn" label="{ResourceUtil.getInstance().getString('bbb.micSettings.cancel')}"
styleName="micSettingsWindowCancelButtonStyle" styleName="micSettingsWindowCancelButtonStyle"
click="onCancelClicked()" tabIndex="{baseIndex+10}" click="onCancelClicked()"
toolTip="{ResourceUtil.getInstance().getString('bbb.micSettings.cancel.toolTip')}"/> toolTip="{ResourceUtil.getInstance().getString('bbb.micSettings.cancel.toolTip')}"/>
</mx:HBox> </mx:HBox>

View File

@ -20,6 +20,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
--> -->
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:mate="http://mate.asfusion.com/" xmlns:mate="http://mate.asfusion.com/"
xmlns:common="org.bigbluebutton.common.*"
width="300" height="400" width="300" height="400"
creationComplete="creationCompleteHandler(event)" creationComplete="creationCompleteHandler(event)"
styleName="lockSettingsWindowStyle" styleName="lockSettingsWindowStyle"
@ -47,8 +48,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
[Bindable] private var cancelIcon:Class = images.cancel; [Bindable] private var cancelIcon:Class = images.cancel;
[Bindable] private var baseIndex:int = 1;
[Bindable] public var disableCam:Boolean = false; [Bindable] public var disableCam:Boolean = false;
[Bindable] public var disableMic:Boolean = false; [Bindable] public var disableMic:Boolean = false;
[Bindable] public var disablePubChat:Boolean = false; [Bindable] public var disablePubChat:Boolean = false;
@ -87,9 +86,12 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
} }
]]> ]]>
</mx:Script> </mx:Script>
<common:TabIndexer startIndex="1" tabIndices="{[titleText, saveBtn, cancelBtn]}"/>
<mx:VBox width="100%" height="100%" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5"> <mx:VBox width="100%" height="100%" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5">
<mx:TextArea borderSkin="{null}" editable="false" selectable="false" text="{ResourceUtil.getInstance().getString('bbb.lockSettings.title')}" styleName="lockSettingsWindowTitleStyle" <mx:TextArea borderSkin="{null}" editable="false" selectable="false" text="{ResourceUtil.getInstance().getString('bbb.lockSettings.title')}" styleName="lockSettingsWindowTitleStyle"
tabIndex="{baseIndex}" width="100%" left="0"/> id="titleText" width="100%" left="0"/>
<mx:HRule width="100%"/> <mx:HRule width="100%"/>
<mx:HBox verticalAlign="top" width="100%" paddingTop="20"> <mx:HBox verticalAlign="top" width="100%" paddingTop="20">
@ -159,11 +161,11 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:HBox width="100%" horizontalAlign="right" horizontalGap="18" paddingTop="20"> <mx:HBox width="100%" horizontalAlign="right" horizontalGap="18" paddingTop="20">
<mx:Button id="saveBtn" label="{ResourceUtil.getInstance().getString('bbb.lockSettings.save')}" <mx:Button id="saveBtn" label="{ResourceUtil.getInstance().getString('bbb.lockSettings.save')}"
click="onSaveClicked()" tabIndex="{baseIndex+8}" click="onSaveClicked()"
toolTip="{ResourceUtil.getInstance().getString('bbb.lockSettings.save.tooltip')}"/> toolTip="{ResourceUtil.getInstance().getString('bbb.lockSettings.save.tooltip')}"/>
<mx:Button id="cancelBtn" label="{ResourceUtil.getInstance().getString('bbb.lockSettings.cancel')}" <mx:Button id="cancelBtn" label="{ResourceUtil.getInstance().getString('bbb.lockSettings.cancel')}"
click="onCancelClicked()" tabIndex="{baseIndex+9}" click="onCancelClicked()"
toolTip="{ResourceUtil.getInstance().getString('bbb.lockSettings.cancel.toolTip')}"/> toolTip="{ResourceUtil.getInstance().getString('bbb.lockSettings.cancel.toolTip')}"/>
</mx:HBox> </mx:HBox>
</mx:VBox> </mx:VBox>

View File

@ -27,10 +27,10 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
xmlns:mate="http://mate.asfusion.com/" xmlns:mate="http://mate.asfusion.com/"
xmlns:maps="org.bigbluebutton.main.maps.*" xmlns:maps="org.bigbluebutton.main.maps.*"
xmlns:api="org.bigbluebutton.main.api.*" xmlns:api="org.bigbluebutton.main.api.*"
xmlns:common="org.bigbluebutton.common.*"
width="100%" height="100%" width="100%" height="100%"
horizontalScrollPolicy="off" verticalScrollPolicy="off" horizontalScrollPolicy="off" verticalScrollPolicy="off"
creationComplete="initializeShell()" creationComplete="initializeShell()" >
xmlns:common="org.bigbluebutton.common.*">
<mate:Listener type="{OpenWindowEvent.OPEN_WINDOW_EVENT}" method="handleOpenWindowEvent" /> <mate:Listener type="{OpenWindowEvent.OPEN_WINDOW_EVENT}" method="handleOpenWindowEvent" />
<mate:Listener type="{CloseWindowEvent.CLOSE_WINDOW_EVENT}" method="handleCloseWindowEvent"/> <mate:Listener type="{CloseWindowEvent.CLOSE_WINDOW_EVENT}" method="handleCloseWindowEvent"/>
@ -121,8 +121,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
private var logoutWindow:LoggedOutWindow; private var logoutWindow:LoggedOutWindow;
private var connectionLostWindow:ConnectionLostWindow; private var connectionLostWindow:ConnectionLostWindow;
[Bindable] private var baseIndex:int = 100000;
// LIVE or PLAYBACK // LIVE or PLAYBACK
private var _mode:String = 'LIVE'; private var _mode:String = 'LIVE';
[Bindable] public var appVersion:String = ' '; [Bindable] public var appVersion:String = ' ';
@ -567,7 +565,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
private function handleAddToolbarComponent(event:ToolbarButtonEvent):void { private function handleAddToolbarComponent(event:ToolbarButtonEvent):void {
if (event.location == ToolbarButtonEvent.BOTTOM_TOOLBAR) { if (event.location == ToolbarButtonEvent.BOTTOM_TOOLBAR) {
(event.button as UIComponent).tabIndex = baseIndex + addedBtns.numChildren + 10; (event.button as UIComponent).tabIndex = tabIndexer.startIndex + addedBtns.numChildren + 10;
addedBtns.addChild(event.button as UIComponent); addedBtns.addChild(event.button as UIComponent);
//realignButtons(); //realignButtons();
} }
@ -640,6 +638,9 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
} }
]]> ]]>
</mx:Script> </mx:Script>
<common:TabIndexer id="tabIndexer" startIndex="100000"
tabIndices="{[langSelector, logBtn]}"/>
<views:MainToolbar id="toolbar" <views:MainToolbar id="toolbar"
dock="true" dock="true"
@ -686,8 +687,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
height="20" height="20"
width="180" width="180"
accessibilityName="{ResourceUtil.getInstance().getString('bbb.mainToolbar.langSelector')}" accessibilityName="{ResourceUtil.getInstance().getString('bbb.mainToolbar.langSelector')}"
styleName="languageSelectorStyle" styleName="languageSelectorStyle"/>
tabIndex="{baseIndex}"/>
<mx:Button <mx:Button
width="20" width="20"
height="20" height="20"
@ -696,8 +696,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
toolTip="{ResourceUtil.getInstance().getString('bbb.mainshell.logBtn.toolTip')}" toolTip="{ResourceUtil.getInstance().getString('bbb.mainshell.logBtn.toolTip')}"
id="logBtn" id="logBtn"
icon="{logs_icon}" icon="{logs_icon}"
click="openLogWindow()" click="openLogWindow()"/>
tabIndex="{baseIndex+1}"/>
<mx:HBox id="addedBtns" /> <mx:HBox id="addedBtns" />
</mx:ControlBar> </mx:ControlBar>
</mx:VBox> </mx:VBox>

View File

@ -21,9 +21,10 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
--> -->
<mx:ApplicationControlBar xmlns:mx="http://www.adobe.com/2006/mxml" <mx:ApplicationControlBar xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:mate="http://mate.asfusion.com/" visible="{showToolbar}" xmlns:mate="http://mate.asfusion.com/" xmlns:common="org.bigbluebutton.common.*"
enabled="true" xmlns:views="org.bigbluebutton.main.views.*" xmlns:views="org.bigbluebutton.main.views.*"
initialize="init()" creationComplete="onCreationComplete()" > enabled="true" visible="{showToolbar}"
initialize="init()" creationComplete="onCreationComplete()">
<mate:Listener type="{ToolbarButtonEvent.ADD}" method="handleAddToolbarButtonEvent" /> <mate:Listener type="{ToolbarButtonEvent.ADD}" method="handleAddToolbarButtonEvent" />
<mate:Listener type="{ToolbarButtonEvent.REMOVE}" method="handleRemoveToolbarButtonEvent"/> <mate:Listener type="{ToolbarButtonEvent.REMOVE}" method="handleRemoveToolbarButtonEvent"/>
@ -73,7 +74,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
[Bindable] private var showHelpBtn:Boolean = false; [Bindable] private var showHelpBtn:Boolean = false;
[Bindable] private var showToolbar:Boolean = false; [Bindable] private var showToolbar:Boolean = false;
[Bindable] public var toolbarOptions:LayoutOptions = new LayoutOptions(); [Bindable] public var toolbarOptions:LayoutOptions = new LayoutOptions();
[Bindable] private var baseIndex:int;
[Bindable] private var numButtons:int; [Bindable] private var numButtons:int;
/* /*
@ -91,7 +91,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
AlertAccImpl.enableAccessibility(); AlertAccImpl.enableAccessibility();
} }
baseIndex = 101;
numButtons = 0; numButtons = 0;
// Accessibility isn't active till a few second after the client starts to load so we need a delay // Accessibility isn't active till a few second after the client starts to load so we need a delay
@ -251,7 +250,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
for each (var button:UIComponent in addedBtns.getChildren()){ for each (var button:UIComponent in addedBtns.getChildren()){
var toolbarComponent:IBbbToolbarComponent = button as IBbbToolbarComponent; var toolbarComponent:IBbbToolbarComponent = button as IBbbToolbarComponent;
/*if (toolbarComponent.getAlignment() == ALIGN_LEFT){ /*if (toolbarComponent.getAlignment() == ALIGN_LEFT){
addedBtns.setChildIndex(button, 0); addedBtns.setChildIndex(button, 0);
//(addedBtns.getChildAt(0) as Button).tabIndex = 0; //(addedBtns.getChildAt(0) as Button).tabIndex = 0;
@ -260,7 +258,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
addedBtns.setChildIndex(button, addedBtns.numChildren - 1); addedBtns.setChildIndex(button, addedBtns.numChildren - 1);
//(addedBtns.getChildAt(0) as Button).tabIndex = addedBtns.numChildren - 1; //(addedBtns.getChildAt(0) as Button).tabIndex = addedBtns.numChildren - 1;
}*/ }*/
button.tabIndex = baseIndex + 5; button.tabIndex = quickLinksIndexer.startIndex + 5;
//for (var i:int = 0; i < addedBtns.numChildren; i++){ //for (var i:int = 0; i < addedBtns.numChildren; i++){
// (addedBtns.getChildAt(i) as Button).tabIndex = baseIndex + i; // (addedBtns.getChildAt(i) as Button).tabIndex = baseIndex + i;
//} //}
@ -329,25 +327,30 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
]]> ]]>
</mx:Script> </mx:Script>
<common:TabIndexer id="quickLinksIndexer" startIndex="102" tabIndices="{[usersLinkBtn, webcamLinkButton, presentationLinkBtn, chatLinkBtn]}"/>
<common:TabIndexer id="buttonsIndexer" startIndex="{quickLinksIndexer.startIndex + numButtons + 10}"
tabIndices="{[recordBtn, muteMeBtn, shortcutKeysBtn, helpBtn, btnLogout]}"/>
<mx:HBox id="quickLinks" width="1" includeInLayout="false"> <mx:HBox id="quickLinks" width="1" includeInLayout="false">
<mx:LinkButton id="usersLinkBtn" click="onQuickLinkClicked('users')" label="{ResourceUtil.getInstance().getString('bbb.users.quickLink.label')}" <mx:LinkButton id="usersLinkBtn" click="onQuickLinkClicked('users')" label="{ResourceUtil.getInstance().getString('bbb.users.quickLink.label')}"
accessibilityDescription="{usersLinkBtn.label}" toolTip="{usersLinkBtn.label}" accessibilityDescription="{usersLinkBtn.label}" toolTip="{usersLinkBtn.label}"
tabIndex="{baseIndex+1}" height="22" styleName="quickWindowLinkStyle" /> height="22" styleName="quickWindowLinkStyle" />
<mx:LinkButton id="webcamLinkButton" click="onQuickLinkClicked('webcams')" label="{ResourceUtil.getInstance().getString('bbb.videodock.quickLink.label')}" <mx:LinkButton id="webcamLinkButton" click="onQuickLinkClicked('webcams')" label="{ResourceUtil.getInstance().getString('bbb.videodock.quickLink.label')}"
accessibilityDescription="{webcamLinkButton.label}" toolTip="{webcamLinkButton.label}" accessibilityDescription="{webcamLinkButton.label}" toolTip="{webcamLinkButton.label}"
tabIndex="{baseIndex+2}" height="22" styleName="quickWindowLinkStyle" /> height="22" styleName="quickWindowLinkStyle" />
<mx:LinkButton id="presentationLinkBtn" click="onQuickLinkClicked('presentation')" label="{ResourceUtil.getInstance().getString('bbb.presentation.quickLink.label')}" <mx:LinkButton id="presentationLinkBtn" click="onQuickLinkClicked('presentation')" label="{ResourceUtil.getInstance().getString('bbb.presentation.quickLink.label')}"
accessibilityDescription="{presentationLinkBtn.label}" toolTip="{presentationLinkBtn.label}" accessibilityDescription="{presentationLinkBtn.label}" toolTip="{presentationLinkBtn.label}"
tabIndex="{baseIndex+3}" height="22" styleName="quickWindowLinkStyle" /> height="22" styleName="quickWindowLinkStyle" />
<mx:LinkButton id="chatLinkBtn" click="onQuickLinkClicked('chat')" label="{ResourceUtil.getInstance().getString('bbb.chat.quickLink.label')}" <mx:LinkButton id="chatLinkBtn" click="onQuickLinkClicked('chat')" label="{ResourceUtil.getInstance().getString('bbb.chat.quickLink.label')}"
accessibilityDescription="{chatLinkBtn.label}" toolTip="{chatLinkBtn.label}" accessibilityDescription="{chatLinkBtn.label}" toolTip="{chatLinkBtn.label}"
tabIndex="{baseIndex+4}" height="22" styleName="quickWindowLinkStyle" /> height="22" styleName="quickWindowLinkStyle" />
</mx:HBox> </mx:HBox>
<mx:HBox id="addedBtns"/> <mx:HBox id="addedBtns"/>
<views:RecordButton id="recordBtn" tabIndex="{baseIndex+numButtons+10}" /> <views:RecordButton id="recordBtn"/>
<mx:VRule strokeWidth="2" height="100%" visible="{muteMeBtn.visible}" includeInLayout="{muteMeBtn.includeInLayout}"/> <mx:VRule strokeWidth="2" height="100%" visible="{muteMeBtn.visible}" includeInLayout="{muteMeBtn.includeInLayout}"/>
<views:MuteMeButton id="muteMeBtn" height="20" tabIndex="{baseIndex+numButtons+11}"/> <views:MuteMeButton id="muteMeBtn" height="20"/>
<mx:Label id="meetingNameLbl" width="100%" minWidth="1" styleName="meetingNameLabelStyle" /> <mx:Label id="meetingNameLbl" width="100%" minWidth="1" styleName="meetingNameLabelStyle" />
<!-- <!--
@ -355,13 +358,11 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
--> -->
<mx:Button id="shortcutKeysBtn" label="{ResourceUtil.getInstance().getString('bbb.mainToolbar.shortcutBtn')}" styleName="shortcutButtonStyle" <mx:Button id="shortcutKeysBtn" label="{ResourceUtil.getInstance().getString('bbb.mainToolbar.shortcutBtn')}" styleName="shortcutButtonStyle"
click="onShortcutButtonClick()" height="22" click="onShortcutButtonClick()" height="22"
toolTip="{ResourceUtil.getInstance().getString('bbb.mainToolbar.shortcutBtn.toolTip')}" toolTip="{ResourceUtil.getInstance().getString('bbb.mainToolbar.shortcutBtn.toolTip')}"/>
tabIndex="{baseIndex+numButtons+13}" />
<mx:LinkButton id="helpBtn" visible="{showHelpBtn}" includeInLayout="{showHelpBtn}" label="?" click="onHelpButtonClicked()" height="22" <mx:LinkButton id="helpBtn" visible="{showHelpBtn}" includeInLayout="{showHelpBtn}" label="?" click="onHelpButtonClicked()" height="22"
styleName="helpLinkButtonStyle" tabIndex="{baseIndex+numButtons+14}" styleName="helpLinkButtonStyle"
toolTip="{ResourceUtil.getInstance().getString('bbb.mainToolbar.helpBtn')}" toolTip="{ResourceUtil.getInstance().getString('bbb.mainToolbar.helpBtn')}"
accessibilityName="{ResourceUtil.getInstance().getString('bbb.micSettings.access.helpButton')}"/> accessibilityName="{ResourceUtil.getInstance().getString('bbb.micSettings.access.helpButton')}"/>
<mx:Button label="" id="btnLogout" styleName="logoutButtonStyle" <mx:Button label="" id="btnLogout" styleName="logoutButtonStyle"
toolTip="{ResourceUtil.getInstance().getString('bbb.mainToolbar.logoutBtn.toolTip')}" right="10" click="confirmLogout()" height="22" toolTip="{ResourceUtil.getInstance().getString('bbb.mainToolbar.logoutBtn.toolTip')}" right="10" click="confirmLogout()" height="22"/>
tabIndex="{baseIndex+numButtons+15}" />
</mx:ApplicationControlBar> </mx:ApplicationControlBar>

View File

@ -22,7 +22,8 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<CustomMdiWindow xmlns="org.bigbluebutton.common.*" <CustomMdiWindow xmlns="org.bigbluebutton.common.*"
xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:mx="http://www.adobe.com/2006/mxml"
showCloseButton="true" xmlns:common="org.bigbluebutton.common.*"
showCloseButton="true"
initialize="init()" initialize="init()"
creationComplete="onCreationComplete()" creationComplete="onCreationComplete()"
xmlns:mate="http://mate.asfusion.com/" xmlns:mate="http://mate.asfusion.com/"
@ -89,9 +90,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
[Bindable] [Bindable]
private var shownKeys:ArrayCollection; private var shownKeys:ArrayCollection;
[Bindable]
private var baseIndex:int = 100;
private var modifier:String; private var modifier:String;
private var globalModifier:String; private var globalModifier:String;
@ -103,11 +101,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
private function onCreationComplete():void { private function onCreationComplete():void {
localeChanged(); localeChanged();
titleBarOverlay.tabIndex = baseIndex; titleBarOverlay.tabIndex = headerIndexer.startIndex - 1;
minimizeBtn.tabIndex = baseIndex + 1;
maximizeRestoreBtn.tabIndex = baseIndex + 2;
closeBtn.tabIndex = baseIndex + 3;
} }
private function populateModules():void{ private function populateModules():void{
@ -271,10 +265,12 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
]]> ]]>
</mx:Script> </mx:Script>
<common:TabIndexer id="headerIndexer" startIndex="101" tabIndices="{[minimizeBtn, maximizeRestoreBtn, closeBtn]}"/>
<common:TabIndexer startIndex="115" tabIndices="{[categories, keyList]}"/>
<mx:ComboBox id="categories" labelField="Please select an area for which to view shortcut keys: " <mx:ComboBox id="categories" labelField="Please select an area for which to view shortcut keys: "
editable="false" editable="false"
change="changeArray()" change="changeArray()">
tabIndex="{baseIndex + 10}">
<mx:ArrayCollection id="categoryAC"> <mx:ArrayCollection id="categoryAC">
<!-- <!--
<mx:String>{ResourceUtil.getInstance().getString("bbb.shortcuthelp.dropdown.general")}</mx:String> <mx:String>{ResourceUtil.getInstance().getString("bbb.shortcuthelp.dropdown.general")}</mx:String>
@ -286,7 +282,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
--> -->
</mx:ArrayCollection> </mx:ArrayCollection>
</mx:ComboBox> </mx:ComboBox>
<mx:DataGrid id="keyList" draggableColumns="false" dataProvider="{shownKeys}" width="100%" height="100%" tabIndex="{baseIndex + 15}" > <mx:DataGrid id="keyList" draggableColumns="false" dataProvider="{shownKeys}" width="100%" height="100%">
<mx:columns> <mx:columns>
<mx:DataGridColumn dataField="shortcut" headerText="{ResourceUtil.getInstance().getString('bbb.shortcuthelp.headers.shortcut')}"/> <mx:DataGridColumn dataField="shortcut" headerText="{ResourceUtil.getInstance().getString('bbb.shortcuthelp.headers.shortcut')}"/>
<mx:DataGridColumn dataField="func" headerText="{ResourceUtil.getInstance().getString('bbb.shortcuthelp.headers.function')}"/> <mx:DataGridColumn dataField="func" headerText="{ResourceUtil.getInstance().getString('bbb.shortcuthelp.headers.function')}"/>

View File

@ -22,6 +22,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:mate="http://mate.asfusion.com/" xmlns:mate="http://mate.asfusion.com/"
xmlns:common="org.bigbluebutton.common.*"
implements="org.bigbluebutton.modules.chat.views.IChatTab" implements="org.bigbluebutton.modules.chat.views.IChatTab"
creationComplete="onCreationComplete()"> creationComplete="onCreationComplete()">
@ -54,9 +55,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
[Bindable] public var chatOptions:ChatOptions = new ChatOptions(); [Bindable] public var chatOptions:ChatOptions = new ChatOptions();
[Bindable]
public var baseIndex:int;
private function onCreationComplete():void{ private function onCreationComplete():void{
users = UserManager.getInstance().getConference().users; users = UserManager.getInstance().getConference().users;
if (fontSizes.indexOf(chatOptions.fontSize) != -1) { if (fontSizes.indexOf(chatOptions.fontSize) != -1) {
@ -119,21 +117,21 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
]]> ]]>
</mx:Script> </mx:Script>
<mx:HBox width="100%" height="100%"> <common:TabIndexer id="tabIndexer" startIndex="1" tabIndices="{[usersList, cmbFontSize]}"/>
<mx:HBox width="100%" height="100%">
<mx:VBox height="100%" width="50%" enabled="true"> <mx:VBox height="100%" width="50%" enabled="true">
<mx:Label id="lblSelect" text="{ResourceUtil.getInstance().getString('bbb.chat.privateChatSelect')}" visible="{chatOptions.privateEnabled}" includeInLayout="{chatOptions.privateEnabled}"/> <mx:Label id="lblSelect" text="{ResourceUtil.getInstance().getString('bbb.chat.privateChatSelect')}" visible="{chatOptions.privateEnabled}" includeInLayout="{chatOptions.privateEnabled}"/>
<mx:List id="usersList" height="100%" width="100%" dataProvider="{users}" dragEnabled="false" <mx:List id="usersList" height="100%" width="100%" dataProvider="{users}" dragEnabled="false"
visible="{chatOptions.privateEnabled}" includeInLayout="{chatOptions.privateEnabled}" visible="{chatOptions.privateEnabled}" includeInLayout="{chatOptions.privateEnabled}"
itemRenderer="org.bigbluebutton.modules.chat.views.UserRenderer" 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:VBox id="optionsBox" height="100%" width="50%" >
<mx:Label text="{ResourceUtil.getInstance().getString('bbb.chat.chatOptions')}" /> <mx:Label text="{ResourceUtil.getInstance().getString('bbb.chat.chatOptions')}" />
<mx:HBox width="100%"> <mx:HBox width="100%">
<mx:Label text="{ResourceUtil.getInstance().getString('bbb.chat.fontSize')}" /> <mx:Label text="{ResourceUtil.getInstance().getString('bbb.chat.fontSize')}" />
<mx:ComboBox width="60" id="cmbFontSize" dataProvider="{fontSizes}" change="changeFontSize()" <mx:ComboBox width="60" id="cmbFontSize" dataProvider="{fontSizes}" change="changeFontSize()"
selectedIndex="1" toolTip="{ResourceUtil.getInstance().getString('bbb.chat.cmbFontSize.toolTip')}" selectedIndex="1" toolTip="{ResourceUtil.getInstance().getString('bbb.chat.cmbFontSize.toolTip')}" />
tabIndex="{baseIndex+1}"/>
</mx:HBox> </mx:HBox>
</mx:VBox> </mx:VBox>
</mx:VBox> </mx:VBox>

View File

@ -22,8 +22,9 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:mate="http://mate.asfusion.com/" xmlns:mate="http://mate.asfusion.com/"
xmlns:chat="org.bigbluebutton.modules.chat.views.*" xmlns:common="org.bigbluebutton.common.*"
implements="org.bigbluebutton.modules.chat.views.IChatTab" xmlns:chat="org.bigbluebutton.modules.chat.views.*"
implements="org.bigbluebutton.modules.chat.views.IChatTab"
click="setMessageRead()" verticalScrollPolicy="off" click="setMessageRead()" verticalScrollPolicy="off"
creationComplete="onCreationComplete()"> creationComplete="onCreationComplete()">
@ -141,9 +142,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
private var indicatorNeeded:Boolean = false private var indicatorNeeded:Boolean = false
private var repeat:Boolean = false; private var repeat:Boolean = false;
[Bindable]
public var baseIndex:int;
[Bindable] [Bindable]
private var chatListHeight:Number = 100; private var chatListHeight:Number = 100;
@ -674,11 +672,12 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
</mx:Script> </mx:Script>
<common:TabIndexer id="tabIndexer" tabIndices="{[chatMessagesList, txtMsgArea, sendBtn, cmpColorPicker]}"/>
<mx:HBox width="100%" height="{chatListHeight}" verticalScrollPolicy="off"> <mx:HBox width="100%" height="{chatListHeight}" verticalScrollPolicy="off">
<chat:AdvancedList width="100%" height="{chatListHeight}" id="chatMessagesList" selectable="false" variableRowHeight="true" <chat:AdvancedList width="100%" height="{chatListHeight}" id="chatMessagesList" selectable="false" variableRowHeight="true"
itemRenderer="org.bigbluebutton.modules.chat.views.ChatMessageRenderer" verticalScrollPolicy="on" horizontalScrollPolicy="off" wordWrap="true" itemRenderer="org.bigbluebutton.modules.chat.views.ChatMessageRenderer" verticalScrollPolicy="on" horizontalScrollPolicy="off" wordWrap="true"
dataProvider="{chatMessages.messages}" dataProvider="{chatMessages.messages}"
tabIndex="{baseIndex}"
accessibilityName="{ResourceUtil.getInstance().getString('bbb.chat.messageList')}" /> accessibilityName="{ResourceUtil.getInstance().getString('bbb.chat.messageList')}" />
</mx:HBox> </mx:HBox>
@ -687,19 +686,16 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:TextArea id="txtMsgArea" width="100%" height="100%" <mx:TextArea id="txtMsgArea" width="100%" height="100%"
styleName="chatControlBarTextMsgStyle" styleName="chatControlBarTextMsgStyle"
toolTip="{ResourceUtil.getInstance().getString('bbb.accessibility.chat.chatwindow.input')}" toolTip="{ResourceUtil.getInstance().getString('bbb.accessibility.chat.chatwindow.input')}"
tabIndex="{baseIndex+1}"
accessibilityName="{ResourceUtil.getInstance().getString('bbb.chat.input.accessibilityName')}" /> accessibilityName="{ResourceUtil.getInstance().getString('bbb.chat.input.accessibilityName')}" />
<mx:VBox verticalScrollPolicy="off" verticalAlign="middle" height="100%" > <mx:VBox verticalScrollPolicy="off" verticalAlign="middle" height="100%" >
<mx:Button label="{ResourceUtil.getInstance().getString('bbb.chat.sendBtn')}" id="sendBtn" <mx:Button label="{ResourceUtil.getInstance().getString('bbb.chat.sendBtn')}" id="sendBtn"
styleName="chatControlBarSendButtonStyle" styleName="chatControlBarSendButtonStyle"
toolTip="{ResourceUtil.getInstance().getString('bbb.chat.sendBtn.toolTip')}" toolTip="{ResourceUtil.getInstance().getString('bbb.chat.sendBtn.toolTip')}"
click="sendMessages()" click="sendMessages()"
tabIndex="{baseIndex+2}"
accessibilityName="{ResourceUtil.getInstance().getString('bbb.chat.sendBtn.accessibilityName')}"/> accessibilityName="{ResourceUtil.getInstance().getString('bbb.chat.sendBtn.accessibilityName')}"/>
<mx:ColorPicker id="cmpColorPicker" showTextField="false" width="100%" visible="{chatOptions.colorPickerIsVisible}" includeInLayout="{chatOptions.colorPickerIsVisible}" <mx:ColorPicker id="cmpColorPicker" showTextField="false" width="100%" visible="{chatOptions.colorPickerIsVisible}" includeInLayout="{chatOptions.colorPickerIsVisible}"
toolTip="{ResourceUtil.getInstance().getString('bbb.chat.cmpColorPicker.toolTip')}" toolTip="{ResourceUtil.getInstance().getString('bbb.chat.cmpColorPicker.toolTip')}"
selectedColor="0x000000" dataProvider="{colorPickerColours}" swatchPanelStyleName="chatColorPickerStyle" selectedColor="0x000000" dataProvider="{colorPickerColours}" swatchPanelStyleName="chatColorPickerStyle"/>
tabIndex="{baseIndex+3}" />
</mx:VBox> </mx:VBox>
</mx:HBox> </mx:HBox>
</mx:VBox> </mx:VBox>

View File

@ -26,7 +26,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
initialize="init()" initialize="init()"
xmlns:flexlib="http://code.google.com/p/flexlib/" xmlns:flexlib="http://code.google.com/p/flexlib/"
width="100%" height="100%" xmlns:containers="flexlib.containers.*" width="100%" height="100%" xmlns:containers="flexlib.containers.*"
verticalScrollPolicy="off"> verticalScrollPolicy="off" xmlns:common="org.bigbluebutton.common.*">
<mate:Listener type="{PrivateChatMessageEvent.PRIVATE_CHAT_MESSAGE_EVENT}" method="handlePrivateChatMessageEvent"/> <mate:Listener type="{PrivateChatMessageEvent.PRIVATE_CHAT_MESSAGE_EVENT}" method="handlePrivateChatMessageEvent"/>
<mate:Listener type="{PublicChatMessageEvent.PUBLIC_CHAT_MESSAGE_EVENT}" method="handlePublicChatMessageEvent"/> <mate:Listener type="{PublicChatMessageEvent.PUBLIC_CHAT_MESSAGE_EVENT}" method="handlePublicChatMessageEvent"/>
@ -66,8 +66,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
[Bindable] public var chatOptions:ChatOptions; [Bindable] public var chatOptions:ChatOptions;
[Bindable] private var baseIndex:int;
private static const PUBLIC_TAB_NEW:String = ResourceUtil.getInstance().getString("bbb.accessibility.chat.chatView.publicTabNew"); private static const PUBLIC_TAB_NEW:String = ResourceUtil.getInstance().getString("bbb.accessibility.chat.chatView.publicTabNew");
private var publicWaiting:Boolean = false; private var publicWaiting:Boolean = false;
private var publicFocus:Boolean = false; private var publicFocus:Boolean = false;
@ -84,7 +82,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
chatOptions = new ChatOptions(); chatOptions = new ChatOptions();
noticeLabel = ResourceUtil.getInstance().getString('bbb.chat.chatTabs.accessibleNotice'); noticeLabel = ResourceUtil.getInstance().getString('bbb.chat.chatTabs.accessibleNotice');
// Get the base tab index from config, and add four to make up for the min/max/close buttons and title overlay // Get the base tab index from config, and add four to make up for the min/max/close buttons and title overlay
baseIndex = chatOptions.getBaseIndex() + 4;
} }
@ -253,7 +250,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
chatBox.id = chatWithUserID; chatBox.id = chatWithUserID;
chatBox.name = chatWithUserID; chatBox.name = chatWithUserID;
chatBox.chatWithUserID = chatWithUserID; chatBox.chatWithUserID = chatWithUserID;
chatBox.baseIndex = baseIndex+10; chatBox.tabIndexer.startIndex = tabIndexer.startIndex + 10;
if (publicChat) { if (publicChat) {
chatBox.label = PUBLIC_CHAT_USERNAME chatBox.label = PUBLIC_CHAT_USERNAME
@ -285,7 +282,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
tabBox.label = OPTION_TAB_ID; tabBox.label = OPTION_TAB_ID;
tabBox.name = OPTION_TAB_ID; tabBox.name = OPTION_TAB_ID;
tabBox.chatOptions = chatOptions; tabBox.chatOptions = chatOptions;
tabBox.baseIndex = baseIndex + 10; tabBox.tabIndexer.startIndex = tabIndexer.startIndex + 10;
tabBox.addEventListener(KeyboardEvent.KEY_DOWN, tabBox.accessibleClick); tabBox.addEventListener(KeyboardEvent.KEY_DOWN, tabBox.accessibleClick);
chatTabs.addChild(tabBox); chatTabs.addChild(tabBox);
@ -349,9 +346,12 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
]]> ]]>
</mx:Script> </mx:Script>
<common:TabIndexer id="tabIndexer" startIndex="{chatOptions.getBaseIndex() + 4}" tabIndices="{[chatTabs]}"/>
<containers:SuperTabNavigator includeInLayout="false" id="chatTabs" <containers:SuperTabNavigator includeInLayout="false" id="chatTabs"
width="100%" height="100%" change="onTabNavChange()" width="100%" height="100%" change="onTabNavChange()"
tabClose="onTabClose(event)" minTabWidth="20" tabClose="onTabClose(event)" minTabWidth="20"
dragEnabled="false" popUpButtonPolicy="off" tabIndex="{baseIndex}" dragEnabled="false" popUpButtonPolicy="off"
/> />
</mx:VBox> </mx:VBox>

View File

@ -25,7 +25,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
xmlns:chat="org.bigbluebutton.modules.chat.views.components.*" xmlns:chat="org.bigbluebutton.modules.chat.views.components.*"
showCloseButton="false" showCloseButton="false"
implements="org.bigbluebutton.common.IBbbModuleWindow" implements="org.bigbluebutton.common.IBbbModuleWindow"
initialize="init()"
creationComplete="onCreationComplete()" creationComplete="onCreationComplete()"
xmlns:components="org.bigbluebutton.modules.chat.view.components.*" xmlns:components="org.bigbluebutton.modules.chat.view.components.*"
xmlns:mate="http://mate.asfusion.com/" xmlns:mate="http://mate.asfusion.com/"
@ -55,11 +54,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
private var dispState:String; private var dispState:String;
[Bindable] public var chatOptions:ChatOptions; [Bindable] public var chatOptions:ChatOptions;
[Bindable] private var baseIndex:int;
private function init():void{
baseIndex = chatOptions.baseTabIndex;
}
public function getPrefferedPosition():String{ public function getPrefferedPosition():String{
return chatOptions.position; return chatOptions.position;
} }
@ -70,11 +64,11 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
dispState = FlexGlobals.topLevelApplication.stage.displayState; dispState = FlexGlobals.topLevelApplication.stage.displayState;
hotkeyCapture(); hotkeyCapture();
titleBarOverlay.tabIndex = baseIndex; titleBarOverlay.tabIndex = chatOptions.baseTabIndex;
minimizeBtn.tabIndex = baseIndex+1; minimizeBtn.tabIndex = chatOptions.baseTabIndex+1;
maximizeRestoreBtn.tabIndex = baseIndex+2; maximizeRestoreBtn.tabIndex = chatOptions.baseTabIndex+2;
closeBtn.tabIndex = baseIndex+3; closeBtn.tabIndex = chatOptions.baseTabIndex+3;
resourcesChanged(); // update the window controls once they've been created resourcesChanged(); // update the window controls once they've been created
} }

View File

@ -100,14 +100,12 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
private var javaTimer:Timer; private var javaTimer:Timer;
[Bindable] private var cursor:Sprite; [Bindable] private var cursor:Sprite;
[Bindable] private var baseIndex:int;
[Bindable] private var dsOptions:DeskshareOptions; [Bindable] private var dsOptions:DeskshareOptions;
private var calledStopApplet:Boolean = false; private var calledStopApplet:Boolean = false;
private function init():void { private function init():void {
dsOptions = new DeskshareOptions(); dsOptions = new DeskshareOptions();
baseIndex = dsOptions.baseTabIndex;
} }
private function onCreationComplete():void { private function onCreationComplete():void {
@ -135,12 +133,8 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
} }
resourcesChanged(); resourcesChanged();
titleBarOverlay.tabIndex = baseIndex; titleBarOverlay.tabIndex = dsOptions.baseTabIndex;
titleBarOverlay.focusEnabled = true; titleBarOverlay.focusEnabled = true;
minimizeBtn.tabIndex = baseIndex+1;
maximizeRestoreBtn.tabIndex = baseIndex+2;
closeBtn.tabIndex = baseIndex+3;
} }
private function remoteFocus(e:ShortcutEvent):void{ private function remoteFocus(e:ShortcutEvent):void{
@ -423,6 +417,9 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
]]> ]]>
</mx:Script> </mx:Script>
<dspub:TabIndexer startIndex="{dsOptions.baseTabIndex + 1}"
tabIndices="{[minimizeBtn, maximizeRestoreBtn, closeBtn, btnFSPublish, btnClosePublish, btnRegionPublish]}"/>
<!--http://stackoverflow.com/questions/369120/why-does-mxstates-have-trouble-being-resolved-to-a-component-implementation--> <!--http://stackoverflow.com/questions/369120/why-does-mxstates-have-trouble-being-resolved-to-a-component-implementation-->
<mx:VBox id="javaHelpArea" includeInLayout="false" visible="false" height="100%" width="100%" verticalAlign="middle" horizontalAlign="center"> <mx:VBox id="javaHelpArea" includeInLayout="false" visible="false" height="100%" width="100%" verticalAlign="middle" horizontalAlign="center">
<mx:Text width="80%" textAlign="center" styleName="desktopShareTextStyle" text="{ResourceUtil.getInstance().getString('bbb.desktopPublish.chromeHint.title')}" /> <mx:Text width="80%" textAlign="center" styleName="desktopShareTextStyle" text="{ResourceUtil.getInstance().getString('bbb.desktopPublish.chromeHint.title')}" />
@ -440,23 +437,20 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
toolTip="{ResourceUtil.getInstance().getString('bbb.desktopPublish.fullscreen.tooltip')}" toolTip="{ResourceUtil.getInstance().getString('bbb.desktopPublish.fullscreen.tooltip')}"
label="{ResourceUtil.getInstance().getString('bbb.desktopPublish.fullscreen.label')}" label="{ResourceUtil.getInstance().getString('bbb.desktopPublish.fullscreen.label')}"
visible="true" visible="true"
click="shareScreen(true)" click="shareScreen(true)" />
tabIndex="{baseIndex+4}"/>
<mx:Spacer width="100%"/> <mx:Spacer width="100%"/>
<mx:Button id="btnClosePublish" <mx:Button id="btnClosePublish"
toolTip="{ResourceUtil.getInstance().getString('bbb.desktopPublish.stop.tooltip')}" toolTip="{ResourceUtil.getInstance().getString('bbb.desktopPublish.stop.tooltip')}"
label="{ResourceUtil.getInstance().getString('bbb.desktopPublish.stop.label')}" label="{ResourceUtil.getInstance().getString('bbb.desktopPublish.stop.label')}"
visible="true" visible="true"
enabled="false" enabled="false"
click="stopSharing()" click="stopSharing()" />
tabIndex="{baseIndex+5}"/>
<mx:Spacer width="100%"/> <mx:Spacer width="100%"/>
<mx:Button id="btnRegionPublish" <mx:Button id="btnRegionPublish"
toolTip="{ResourceUtil.getInstance().getString('bbb.desktopPublish.region.tooltip')}" toolTip="{ResourceUtil.getInstance().getString('bbb.desktopPublish.region.tooltip')}"
label="{ResourceUtil.getInstance().getString('bbb.desktopPublish.region.label')}" label="{ResourceUtil.getInstance().getString('bbb.desktopPublish.region.label')}"
visible="true" visible="true"
click="shareScreen(false)" click="shareScreen(false)"
tabIndex="{baseIndex+6}"
focusEnabled="false" focusEnabled="false"
tabEnabled="false"/> tabEnabled="false"/>
<mx:Spacer width="100%"/> <mx:Spacer width="100%"/>

View File

@ -22,7 +22,8 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<CustomMdiWindow xmlns="org.bigbluebutton.common.*" <CustomMdiWindow xmlns="org.bigbluebutton.common.*"
xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:mx="http://www.adobe.com/2006/mxml"
width="600" height="400" xmlns:common="org.bigbluebutton.common.*"
width="600" height="400"
initialize="init()" initialize="init()"
creationComplete="onCreationComplete()" creationComplete="onCreationComplete()"
implements="org.bigbluebutton.common.IBbbModuleWindow" implements="org.bigbluebutton.common.IBbbModuleWindow"
@ -85,12 +86,10 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
private var savedY:Number; private var savedY:Number;
private var isMaximized:Boolean = false; private var isMaximized:Boolean = false;
[Bindable] private var baseIndex:int;
[Bindable] private var dsOptions:DeskshareOptions; [Bindable] private var dsOptions:DeskshareOptions;
private function init():void{ private function init():void{
dsOptions = new DeskshareOptions(); dsOptions = new DeskshareOptions();
baseIndex = dsOptions.baseTabIndex;
} }
private function onCreationComplete():void{ private function onCreationComplete():void{
@ -110,10 +109,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
resourcesChanged(); resourcesChanged();
titleBarOverlay.tabIndex = baseIndex; titleBarOverlay.tabIndex = dsOptions.baseTabIndex;
minimizeBtn.tabIndex = baseIndex+1;
maximizeRestoreBtn.tabIndex = baseIndex+2;
closeBtn.tabIndex = baseIndex+3;
} }
private function onResizeEndEvent(event:MDIWindowEvent):void { private function onResizeEndEvent(event:MDIWindowEvent):void {
@ -315,6 +311,9 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
]]> ]]>
</mx:Script> </mx:Script>
<common:TabIndexer startIndex="{dsOptions.baseTabIndex + 1}" tabIndices="{[minimizeBtn, maximizeRestoreBtn, closeBtn, btnActualSize]}"/>
<mx:Move id="cursorMove" target="{cursorImg}"/> <mx:Move id="cursorMove" target="{cursorImg}"/>
<mx:Image id="cursorImg" visible="false" source="@Embed('../../assets/images/cursor4.png')"/> <mx:Image id="cursorImg" visible="false" source="@Embed('../../assets/images/cursor4.png')"/>
@ -325,7 +324,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
selected="false" selected="false"
height="90%" height="90%"
label="{btnActualSize.selected ? ResourceUtil.getInstance().getString('bbb.desktopView.fitToWindow') : ResourceUtil.getInstance().getString('bbb.desktopView.actualSize')}" label="{btnActualSize.selected ? ResourceUtil.getInstance().getString('bbb.desktopView.fitToWindow') : ResourceUtil.getInstance().getString('bbb.desktopView.actualSize')}"
toolTip="{btnActualSize.selected ? ResourceUtil.getInstance().getString('bbb.desktopView.fitToWindow') : ResourceUtil.getInstance().getString('bbb.desktopView.actualSize')}" toolTip="{btnActualSize.selected ? ResourceUtil.getInstance().getString('bbb.desktopView.fitToWindow') : ResourceUtil.getInstance().getString('bbb.desktopView.actualSize')}"/>
tabIndex="{baseIndex+4}"/>
</mx:HBox> </mx:HBox>
</CustomMdiWindow> </CustomMdiWindow>

View File

@ -21,6 +21,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" <mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="init()" visible="{_visibleTools}" creationComplete="init()" visible="{_visibleTools}"
xmlns:mate="http://mate.asfusion.com/" xmlns:mate="http://mate.asfusion.com/"
xmlns:common="org.bigbluebutton.common.*"
xmlns:views="org.bigbluebutton.modules.layout.views.*" xmlns:views="org.bigbluebutton.modules.layout.views.*"
implements="org.bigbluebutton.common.IBbbToolbarComponent"> implements="org.bigbluebutton.common.IBbbToolbarComponent">
@ -37,8 +38,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
[Bindable] private var _enableEdit:Boolean = false; [Bindable] private var _enableEdit:Boolean = false;
[Bindable] private var _visibleTools:Boolean = true; [Bindable] private var _visibleTools:Boolean = true;
[Bindable] private var baseIndex:int = 110000;
private function init():void { private function init():void {
var evt:ViewInitializedEvent = new ViewInitializedEvent(); var evt:ViewInitializedEvent = new ViewInitializedEvent();
evt.canvas = getMdiCanvas(parent) as MDICanvas; evt.canvas = getMdiCanvas(parent) as MDICanvas;
@ -76,25 +75,21 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
]]> ]]>
</mx:Script> </mx:Script>
<views:LayoutsCombo id="comboBox" <common:TabIndexer startIndex="110000" tabIndices="{[comboBox, addButton, saveButton, loadButton, broadcastButton, lockButton]}"/>
tabIndex="{baseIndex}"/>
<views:LayoutsCombo id="comboBox"/>
<views:AddButton id="addButton" <views:AddButton id="addButton"
includeInLayout="{_enableEdit}" includeInLayout="{_enableEdit}"
visible="{_enableEdit}" visible="{_enableEdit}"/>
tabIndex="{baseIndex+1}"/>
<views:SaveButton id="saveButton" <views:SaveButton id="saveButton"
includeInLayout="{_enableEdit}" includeInLayout="{_enableEdit}"
visible="{_enableEdit}" visible="{_enableEdit}"/>
tabIndex="{baseIndex+2}"/>
<views:LoadButton id="loadButton" <views:LoadButton id="loadButton"
includeInLayout="{_enableEdit}" includeInLayout="{_enableEdit}"
visible="{_enableEdit}" visible="{_enableEdit}"/>
tabIndex="{baseIndex+3}"/>
<views:BroadcastButton id="broadcastButton" <views:BroadcastButton id="broadcastButton"
tabIndex="{baseIndex+4}"
enabled="{!lockButton.selected}"/> enabled="{!lockButton.selected}"/>
<views:LockButton id="lockButton" <views:LockButton id="lockButton"
tabIndex="{baseIndex+5}"
visible="false" visible="false"
includeInLayout="false"/> includeInLayout="false"/>
</mx:HBox> </mx:HBox>

View File

@ -134,7 +134,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
[Bindable] private var currentPresentation:String = ""; [Bindable] private var currentPresentation:String = "";
[Bindable] private var baseIndex:int;
[Bindable] private var presentOptions:PresentOptions; [Bindable] private var presentOptions:PresentOptions;
private var keyCombos:Object; private var keyCombos:Object;
@ -145,7 +144,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
private function init():void{ private function init():void{
presentOptions = new PresentOptions(); presentOptions = new PresentOptions();
baseIndex = presentOptions.baseTabIndex;;
} }
private function onCreationComplete():void{ private function onCreationComplete():void{
@ -161,13 +159,8 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
this.addEventListener(MDIWindowEvent.RESIZE_END, onResizeEndEvent); this.addEventListener(MDIWindowEvent.RESIZE_END, onResizeEndEvent);
resourcesChanged(); resourcesChanged();
titleBarOverlay.tabIndex = baseIndex; titleBarOverlay.tabIndex = presentOptions.baseTabIndex;
minimizeBtn.tabIndex = baseIndex+1;
maximizeRestoreBtn.tabIndex = baseIndex+2;
closeBtn.tabIndex = baseIndex+3;
slideView.slideLoader.tabIndex = baseIndex+4;
hotkeyCapture(); hotkeyCapture();
//Necessary now because of module loading race conditions //Necessary now because of module loading race conditions
@ -692,7 +685,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
var pollXY:Point = pollStartBtn.localToGlobal(new Point(pollStartBtn.width + 2, pollStartBtn.height - pollMenu.height)); var pollXY:Point = pollStartBtn.localToGlobal(new Point(pollStartBtn.width + 2, pollStartBtn.height - pollMenu.height));
pollMenu.x = pollXY.x; pollMenu.x = pollXY.x;
pollMenu.y = pollXY.y; pollMenu.y = pollXY.y;
} }
private function pollStartedHandler(e:PollStartedEvent):void { private function pollStartedHandler(e:PollStartedEvent):void {
// the event for this doesn't exist yet // the event for this doesn't exist yet
@ -752,53 +745,51 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
private function pollShowResultHandler(e:PollShowResultEvent):void { private function pollShowResultHandler(e:PollShowResultEvent):void {
setControlBarState("presenter"); setControlBarState("presenter");
} }
]]> ]]>
</mx:Script> </mx:Script>
<pres:TabIndexer startIndex="{presentOptions.baseTabIndex + 1}"
tabIndices="{[minimizeBtn, maximizeRestoreBtn, closeBtn, slideView.slideLoader, uploadPres, pollStartBtn, quickPollBtn, backButton, btnSlideNum, forwardButton, zoomSlider, btnFitToWidth, btnFitToPage]}"/>
<mx:Fade id="thumbFadeIn" alphaFrom="1" alphaTo="0" duration="100" /> <mx:Fade id="thumbFadeIn" alphaFrom="1" alphaTo="0" duration="100" />
<mx:Fade id="thumbFadeOut" alphaFrom="0" alphaTo="1" duration="100" /> <mx:Fade id="thumbFadeOut" alphaFrom="0" alphaTo="1" duration="100" />
<views:SlideView id="slideView" width="100%" height="100%" visible="false" mouseDown="mouseDown = true" <views:SlideView id="slideView" width="100%" height="100%" visible="false" mouseDown="mouseDown = true"
mouseUp="mouseDown = false" verticalScrollPolicy="off" horizontalScrollPolicy="off" tabIndex="{baseIndex+4}"/> mouseUp="mouseDown = false" verticalScrollPolicy="off" horizontalScrollPolicy="off"/>
<mx:ControlBar id="presCtrlBar" name="presCtrlBar" width="100%" height="{controlBarHeight}" styleName="presentationWindowControlsStyle"> <mx:ControlBar id="presCtrlBar" name="presCtrlBar" width="100%" height="{controlBarHeight}" styleName="presentationWindowControlsStyle">
<mx:HBox id="presenterControls" x="0" y="0" width="100%" height="100%" horizontalAlign="center"> <mx:HBox id="presenterControls" x="0" y="0" width="100%" height="100%" horizontalAlign="center">
<mx:Button id="uploadPres" visible="false" height="30" styleName="presentationUploadButtonStyle" <mx:Button id="uploadPres" visible="false" height="30" styleName="presentationUploadButtonStyle"
toolTip="{ResourceUtil.getInstance().getString('bbb.presentation.uploadPresBtn.toolTip')}" toolTip="{ResourceUtil.getInstance().getString('bbb.presentation.uploadPresBtn.toolTip')}"
click="onUploadButtonClicked()" tabIndex="{baseIndex+5}"/> click="onUploadButtonClicked()"/>
<mx:Button id="pollStartBtn" visible="false" height="30" styleName="pollStartButtonStyle" <mx:Button id="pollStartBtn" visible="false" height="30" styleName="pollStartButtonStyle"
toolTip="{ResourceUtil.getInstance().getString('bbb.polling.startButton.tooltip')}" toolTip="{ResourceUtil.getInstance().getString('bbb.polling.startButton.tooltip')}"
click="onPollStartButtonClicked()" tabIndex="{baseIndex+6}"/> click="onPollStartButtonClicked()"/>
<poll:QuickPollButton id="quickPollBtn" height="30" tabIndex="{baseIndex+7}" <poll:QuickPollButton id="quickPollBtn" height="30"
click="quickPollClicked(event)" /> click="quickPollClicked(event)" />
<mx:Spacer width="100%" id="spacer1"/> <mx:Spacer width="100%" id="spacer1"/>
<mx:Button id="backButton" visible="false" width="45" height="30" styleName="presentationBackButtonStyle" <mx:Button id="backButton" visible="false" width="45" height="30" styleName="presentationBackButtonStyle"
toolTip="{ResourceUtil.getInstance().getString('bbb.presentation.backBtn.toolTip')}" click="gotoPreviousSlide()" toolTip="{ResourceUtil.getInstance().getString('bbb.presentation.backBtn.toolTip')}" click="gotoPreviousSlide()"/>
tabIndex="{baseIndex+8}"/>
<mx:Button id="btnSlideNum" visible="false" label="" click="showThumbnails()" <mx:Button id="btnSlideNum" visible="false" label="" click="showThumbnails()"
toolTip="{ResourceUtil.getInstance().getString('bbb.presentation.btnSlideNum.toolTip')}" toolTip="{ResourceUtil.getInstance().getString('bbb.presentation.btnSlideNum.toolTip')}"/>
tabIndex="{baseIndex+9}"/>
<mx:Button id="forwardButton" visible="false" width="45" height="30" styleName="presentationForwardButtonStyle" <mx:Button id="forwardButton" visible="false" width="45" height="30" styleName="presentationForwardButtonStyle"
toolTip="{ResourceUtil.getInstance().getString('bbb.presentation.forwardBtn.toolTip')}" click="gotoNextSlide()" toolTip="{ResourceUtil.getInstance().getString('bbb.presentation.forwardBtn.toolTip')}" click="gotoNextSlide()"/>
tabIndex="{baseIndex+10}"/>
<mx:Spacer width="50%" id="spacer3"/> <mx:Spacer width="50%" id="spacer3"/>
<mx:HSlider id="zoomSlider" visible="false" value="{slideView.zoomPercentage}" styleName="presentationZoomSliderStyle" <mx:HSlider id="zoomSlider" visible="false" value="{slideView.zoomPercentage}" styleName="presentationZoomSliderStyle"
minimum="100" maximum="400" dataTipPlacement="top" labels="['100%','400%']" minimum="100" maximum="400" dataTipPlacement="top" labels="['100%','400%']"
useHandCursor="true" snapInterval="5" allowTrackClick="true" liveDragging="true" useHandCursor="true" snapInterval="5" allowTrackClick="true" liveDragging="true"
dataTipFormatFunction="removeDecimalFromDataTip" change="onSliderZoom()" width="100" dataTipFormatFunction="removeDecimalFromDataTip" change="onSliderZoom()" width="100"
tabIndex="{baseIndex+11}" accessibilityName="{ResourceUtil.getInstance().getString('bbb.presentation.slider')}"/> accessibilityName="{ResourceUtil.getInstance().getString('bbb.presentation.slider')}"/>
<mx:Button id="btnFitToWidth" visible="false" width="30" height="30" styleName="presentationFitToWidthButtonStyle" <mx:Button id="btnFitToWidth" visible="false" width="30" height="30" styleName="presentationFitToWidthButtonStyle"
toolTip="{ResourceUtil.getInstance().getString('bbb.presentation.fitToWidth.toolTip')}" toolTip="{ResourceUtil.getInstance().getString('bbb.presentation.fitToWidth.toolTip')}"
click="onFitToPage(false)" click="onFitToPage(false)"/>
tabIndex="{baseIndex+12}"/>
<mx:Button id="btnFitToPage" visible="false" width="30" height="30" styleName="presentationFitToPageButtonStyle" <mx:Button id="btnFitToPage" visible="false" width="30" height="30" styleName="presentationFitToPageButtonStyle"
toolTip="{ResourceUtil.getInstance().getString('bbb.presentation.fitToPage.toolTip')}" toolTip="{ResourceUtil.getInstance().getString('bbb.presentation.fitToPage.toolTip')}"
click="onFitToPage(true)" click="onFitToPage(true)"/>
tabIndex="{baseIndex+13}"/>
<!-- This spacer is to prevent the whiteboard toolbar from overlapping the fit-ot-page button --> <!-- This spacer is to prevent the whiteboard toolbar from overlapping the fit-ot-page button -->
<mx:Spacer width="30" height="30" id="spacer4"/> <mx:Spacer width="30" height="30" id="spacer4"/>
</mx:HBox> </mx:HBox>
<mx:HBox id="pollVoteBox" x="0" y="0" width="100%" height="100%" horizontalAlign="center" /> <mx:HBox id="pollVoteBox" x="0" y="0" width="100%" height="100%" horizontalAlign="center" />
</mx:ControlBar> </mx:ControlBar>
</pres:CustomMdiWindow> </pres:CustomMdiWindow>

View File

@ -25,6 +25,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:view="org.bigbluebutton.modules.whiteboard.views.*" xmlns:view="org.bigbluebutton.modules.whiteboard.views.*"
xmlns:wbBtns="org.bigbluebutton.modules.whiteboard.views.buttons.*" xmlns:wbBtns="org.bigbluebutton.modules.whiteboard.views.buttons.*"
xmlns:common="org.bigbluebutton.common.*"
xmlns:mate="http://mate.asfusion.com/" xmlns:mate="http://mate.asfusion.com/"
creationComplete="onCreationComplete()" creationComplete="onCreationComplete()"
visible="{showWhiteboardToolbar}" visible="{showWhiteboardToolbar}"
@ -107,7 +108,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
[Bindable] private var grid_icon:Class = images.grid_icon; [Bindable] private var grid_icon:Class = images.grid_icon;
[Bindable] public var wbOptions:WhiteboardOptions; [Bindable] public var wbOptions:WhiteboardOptions;
[Bindable] private var baseIndex:int;
[Bindable] private var showWhiteboardToolbar:Boolean = false; [Bindable] private var showWhiteboardToolbar:Boolean = false;
@ -124,7 +124,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
private function init():void{ private function init():void{
wbOptions = new WhiteboardOptions(); wbOptions = new WhiteboardOptions();
baseIndex = wbOptions.baseTabIndex;
} }
private function onCreationComplete():void { private function onCreationComplete():void {
@ -332,39 +331,33 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
]]> ]]>
</mx:Script> </mx:Script>
<common:TabIndexer startIndex="{wbOptions.baseTabIndex}"
tabIndices="{[panzoomBtn, scribbleBtn, rectangleBtn, circleBtn, triangleBtn, lineBtn, textBtn, clearBtn, undoBtn, cpik, sld]}"/>
<!-- Now, every 'tool' has two types of identifiers, one is found in WhiteboardConstants <!-- Now, every 'tool' has two types of identifiers, one is found in WhiteboardConstants
that identifies the "category" of the tool (ex. shape vs text), and the other specifies the that identifies the "category" of the tool (ex. shape vs text), and the other specifies the
tool itself (ex. line tool vs triangle tool, even though both are "shapes") tool itself (ex. line tool vs triangle tool, even though both are "shapes")
--> -->
<wbBtns:PanZoomButton id="panzoomBtn" <wbBtns:PanZoomButton id="panzoomBtn"
tabIndex="{baseIndex}"
visible="{showWhiteboardToolbar}"/> visible="{showWhiteboardToolbar}"/>
<mx:Spacer height="10" visible="{showWhiteboardToolbar}"/> <mx:Spacer height="10" visible="{showWhiteboardToolbar}"/>
<wbBtns:ScribbleButton id="scribbleBtn" <wbBtns:ScribbleButton id="scribbleBtn"
tabIndex="{baseIndex+1}"
visible="{showWhiteboardToolbar}"/> visible="{showWhiteboardToolbar}"/>
<wbBtns:RectangleButton id="rectangleBtn" <wbBtns:RectangleButton id="rectangleBtn"
tabIndex="{baseIndex+2}"
visible="{showWhiteboardToolbar}"/> visible="{showWhiteboardToolbar}"/>
<wbBtns:CircleButton id="circleBtn" <wbBtns:CircleButton id="circleBtn"
tabIndex="{baseIndex+3}"
visible="{showWhiteboardToolbar}"/> visible="{showWhiteboardToolbar}"/>
<wbBtns:TriangleButton id="triangleBtn" <wbBtns:TriangleButton id="triangleBtn"
tabIndex="{baseIndex+4}"
visible="{showWhiteboardToolbar}"/> visible="{showWhiteboardToolbar}"/>
<wbBtns:LineButton id="lineBtn" <wbBtns:LineButton id="lineBtn"
tabIndex="{baseIndex+5}"
visible="{showWhiteboardToolbar}"/> visible="{showWhiteboardToolbar}"/>
<wbBtns:TextButton id="textBtn" <wbBtns:TextButton id="textBtn"
tabIndex="{baseIndex+6}"
visible="{showWhiteboardToolbar}"/> visible="{showWhiteboardToolbar}"/>
<mx:Spacer height="5" visible="{showWhiteboardToolbar}"/> <mx:Spacer height="5" visible="{showWhiteboardToolbar}"/>
<wbBtns:ClearButton id="clearBtn" <wbBtns:ClearButton id="clearBtn"
tabIndex="{baseIndex+7}"
visible="{showWhiteboardToolbar}"/> visible="{showWhiteboardToolbar}"/>
<wbBtns:UndoButton id="undoBtn" <wbBtns:UndoButton id="undoBtn"
tabIndex="{baseIndex+8}"
visible="{showWhiteboardToolbar}"/> visible="{showWhiteboardToolbar}"/>
<mx:Spacer height="5" visible="{showWhiteboardToolbar}"/> <mx:Spacer height="5" visible="{showWhiteboardToolbar}"/>
@ -383,7 +376,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mx:ColorPicker change="changeColor(event)" id="cpik" visible="{showWhiteboardToolbar}" <mx:ColorPicker change="changeColor(event)" id="cpik" visible="{showWhiteboardToolbar}"
selectedColor="0x000000" width="30" dataProvider="{colorPickerColours}" swatchPanelStyleName="colorPickerStyle" selectedColor="0x000000" width="30" dataProvider="{colorPickerColours}" swatchPanelStyleName="colorPickerStyle"
toolTip="{ResourceUtil.getInstance().getString('bbb.highlighter.toolbar.color')}" toolTip="{ResourceUtil.getInstance().getString('bbb.highlighter.toolbar.color')}"
tabIndex="{baseIndex+9}"
accessibilityName="{ResourceUtil.getInstance().getString('bbb.highlighter.toolbar.color')}"/> accessibilityName="{ResourceUtil.getInstance().getString('bbb.highlighter.toolbar.color')}"/>
<mx:Spacer height="3" visible="{showWhiteboardToolbar}"/> <mx:Spacer height="3" visible="{showWhiteboardToolbar}"/>
@ -392,7 +384,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
toolTip="{ResourceUtil.getInstance().getString('bbb.highlighter.toolbar.thickness.accessibilityName')}" toolTip="{ResourceUtil.getInstance().getString('bbb.highlighter.toolbar.thickness.accessibilityName')}"
minimum="1" maximum="30" minimum="1" maximum="30"
useHandCursor="true" value="2" showDataTip="true" snapInterval="1" dataTipOffset="0" labelOffset="0" useHandCursor="true" value="2" showDataTip="true" snapInterval="1" dataTipOffset="0" labelOffset="0"
tabIndex="{baseIndex+10}"
accessibilityName="{ResourceUtil.getInstance().getString('bbb.highlighter.toolbar.thickness.accessibilityName')}" /> accessibilityName="{ResourceUtil.getInstance().getString('bbb.highlighter.toolbar.thickness.accessibilityName')}" />
<mx:Image source="{thin_icon}" horizontalAlign="center" width="30" visible="{showWhiteboardToolbar}"/> <mx:Image source="{thin_icon}" horizontalAlign="center" width="30" visible="{showWhiteboardToolbar}"/>