Added whiteboard functionality to the deskshare tab.
Some pending issues: - Notes made in DeskstopPublishWindow appear a little dislocated in DesktopViewWindow. - Independence between SlideView and Deskshare notes. Deskshare and SlideView tabs share current slide notes. Perhaps make Deskshare Window be treated as a new page of the current presentation or as a new presentation.
This commit is contained in:
parent
90c1c84771
commit
1197d1a3ad
@ -25,12 +25,12 @@ package org.bigbluebutton.main.events
|
|||||||
public static const PRESENTER_NAME_CHANGE:String = "PRESENTER_NAME_CHANGE";
|
public static const PRESENTER_NAME_CHANGE:String = "PRESENTER_NAME_CHANGE";
|
||||||
public static const SWITCH_TO_VIEWER_MODE:String = "VIEWER_MODE";
|
public static const SWITCH_TO_VIEWER_MODE:String = "VIEWER_MODE";
|
||||||
public static const SWITCH_TO_PRESENTER_MODE:String = "PRESENTER_MODE";
|
public static const SWITCH_TO_PRESENTER_MODE:String = "PRESENTER_MODE";
|
||||||
public static const SWITCHED_TO_PRESENTATION_TAB:String = "SWITCHED TO PRESENTATION TAB";
|
public static const ANNOTATIONS_PERMISSION_CHANGE:String = "ANNOTATIONS_PERMISSION_CHANGE";
|
||||||
public static const SWITCHED_TO_DESKSHARE_TAB:String = "SWITCHED TO DESKSHARE TAB";
|
|
||||||
|
|
||||||
public var presenterName:String;
|
public var presenterName:String;
|
||||||
public var assignerBy:Number;
|
public var assignerBy:Number;
|
||||||
public var userID:String;
|
public var userID:String;
|
||||||
|
public var enableAnnotations:Boolean;
|
||||||
|
|
||||||
public function PresenterStatusEvent(type:String)
|
public function PresenterStatusEvent(type:String)
|
||||||
{
|
{
|
||||||
|
@ -80,13 +80,13 @@ package org.bigbluebutton.modules.deskshare.managers
|
|||||||
closeWindow(shareWindow);
|
closeWindow(shareWindow);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function openWindow(window:IBbbModuleWindow):void {
|
private function openWindow(window:DesktopPublishWindow):void {
|
||||||
var e:ShareEvent = new ShareEvent(ShareEvent.CREATE_DESKTOP_PUBLISH_TAB);
|
var e:ShareEvent = new ShareEvent(ShareEvent.CREATE_DESKTOP_PUBLISH_TAB);
|
||||||
e.publishTabContent = window as DesktopPublishWindow;
|
e.publishTabContent = window;
|
||||||
globalDispatcher.dispatchEvent(e);
|
globalDispatcher.dispatchEvent(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function closeWindow(window:IBbbModuleWindow):void {
|
private function closeWindow(window:DesktopPublishWindow):void {
|
||||||
var e:ShareEvent = new ShareEvent(ShareEvent.CLEAN_DESKTOP_PUBLISH_TAB);
|
var e:ShareEvent = new ShareEvent(ShareEvent.CLEAN_DESKTOP_PUBLISH_TAB);
|
||||||
globalDispatcher.dispatchEvent(e);
|
globalDispatcher.dispatchEvent(e);
|
||||||
}
|
}
|
||||||
|
@ -52,9 +52,9 @@ package org.bigbluebutton.modules.deskshare.managers
|
|||||||
service.sendStartedViewingNotification(stream);
|
service.sendStartedViewingNotification(stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function openWindow(window:IBbbModuleWindow):void{
|
private function openWindow(window:DesktopViewWindow):void{
|
||||||
var e:ShareEvent = new ShareEvent(ShareEvent.OPEN_DESKTOP_VIEW_TAB);
|
var e:ShareEvent = new ShareEvent(ShareEvent.OPEN_DESKTOP_VIEW_TAB);
|
||||||
e.viewTabContent = window as DesktopViewWindow;
|
e.viewTabContent = window;
|
||||||
globalDispatcher.dispatchEvent(e);
|
globalDispatcher.dispatchEvent(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ package org.bigbluebutton.modules.deskshare.managers
|
|||||||
isViewing = false;
|
isViewing = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function closeWindow(window:IBbbModuleWindow):void {
|
private function closeWindow(window:DesktopViewWindow):void {
|
||||||
var e:ShareEvent = new ShareEvent(ShareEvent.CLOSE_DESKTOP_VIEW_TAB);
|
var e:ShareEvent = new ShareEvent(ShareEvent.CLOSE_DESKTOP_VIEW_TAB);
|
||||||
globalDispatcher.dispatchEvent(e);
|
globalDispatcher.dispatchEvent(e);
|
||||||
}
|
}
|
||||||
|
@ -20,9 +20,9 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<mx:VBox
|
<mx:Canvas
|
||||||
xmlns:mx="http://www.adobe.com/2006/mxml"
|
xmlns:mx="http://www.adobe.com/2006/mxml"
|
||||||
implements="org.bigbluebutton.common.IBbbModuleWindow"
|
implements="org.bigbluebutton.common.IBbbCanvas"
|
||||||
xmlns:mate="http://mate.asfusion.com/"
|
xmlns:mate="http://mate.asfusion.com/"
|
||||||
xmlns:dspub="org.bigbluebutton.common.*"
|
xmlns:dspub="org.bigbluebutton.common.*"
|
||||||
initialize="init()"
|
initialize="init()"
|
||||||
@ -63,6 +63,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
import org.bigbluebutton.modules.deskshare.utils.JavaCheck;
|
import org.bigbluebutton.modules.deskshare.utils.JavaCheck;
|
||||||
import org.bigbluebutton.modules.deskshare.utils.BrowserCheck;
|
import org.bigbluebutton.modules.deskshare.utils.BrowserCheck;
|
||||||
import org.bigbluebutton.modules.deskshare.events.ShareEvent;
|
import org.bigbluebutton.modules.deskshare.events.ShareEvent;
|
||||||
|
import org.bigbluebutton.common.IBbbCanvas;
|
||||||
|
|
||||||
import org.bigbluebutton.util.i18n.ResourceUtil;
|
import org.bigbluebutton.util.i18n.ResourceUtil;
|
||||||
|
|
||||||
@ -97,6 +98,9 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
[Bindable] private var cursor:Sprite;
|
[Bindable] private var cursor:Sprite;
|
||||||
[Bindable] private var dsOptions:DeskshareOptions;
|
[Bindable] private var dsOptions:DeskshareOptions;
|
||||||
|
|
||||||
|
private var whiteboardCanvas:Canvas = null;
|
||||||
|
private var whiteboardCanvasHolder:Canvas = new Canvas();
|
||||||
|
|
||||||
private var calledStopApplet:Boolean = false;
|
private var calledStopApplet:Boolean = false;
|
||||||
|
|
||||||
@ -233,7 +237,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function startPreviewStream(nc:NetConnection, streamName:String, capWidth:Number, capHeight:Number):void{
|
private function startPreviewStream(nc:NetConnection, streamName:String, capWidth:Number, capHeight:Number):void{
|
||||||
if(cursor == null || cursorImg == null)
|
if(cursor == null || cursorImg == null || video != null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
streaming = true;
|
streaming = true;
|
||||||
@ -255,7 +259,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
videoHolder.addChild(cursor);
|
videoHolder.addChild(cursor);
|
||||||
videoHolder.addChild(cursorImg);
|
videoHolder.addChild(cursorImg);
|
||||||
cursor.visible = false;
|
cursor.visible = false;
|
||||||
this.addChild(videoHolder);
|
this.addChildAt(videoHolder,0);
|
||||||
fitVideoToWindow();
|
fitVideoToWindow();
|
||||||
|
|
||||||
ns = new NetStream(nc);
|
ns = new NetStream(nc);
|
||||||
@ -268,7 +272,43 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
video.attachNetStream(ns);
|
video.attachNetStream(ns);
|
||||||
ns.play(streamName);
|
ns.play(streamName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function addWhiteboardCanvasHolder():void{
|
||||||
|
updateWhiteboardCanvasHolder();
|
||||||
|
if(streaming)
|
||||||
|
this.addChildAt(this.whiteboardCanvasHolder,1);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function updateWhiteboardCanvasHolder():void{
|
||||||
|
if(video != null) {
|
||||||
|
this.whiteboardCanvasHolder.x = video.x;
|
||||||
|
this.whiteboardCanvasHolder.y = video.y;
|
||||||
|
this.whiteboardCanvasHolder.width = video.width;
|
||||||
|
this.whiteboardCanvasHolder.height = video.height;
|
||||||
|
LOGGER.debug("Whiteboard canvas holder dimensions updated");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addWhiteboardOverlay():void {
|
||||||
|
updateWhiteboardCanvasOverlay();
|
||||||
|
if(streaming && this.whiteboardCanvas != null) {
|
||||||
|
this.addChild(this.whiteboardCanvas);
|
||||||
|
LOGGER.debug("Whiteboard Canvas OVERLAY added.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
LOGGER.debug("COULD NOT add whiteboard overlay");
|
||||||
|
}
|
||||||
|
|
||||||
|
private function updateWhiteboardCanvasOverlay():void{
|
||||||
|
if(video != null && this.whiteboardCanvas != null) {
|
||||||
|
this.whiteboardCanvas.x = video.x;
|
||||||
|
this.whiteboardCanvas.y = video.y;
|
||||||
|
this.whiteboardCanvas.width = video.width;
|
||||||
|
this.whiteboardCanvas.height = video.height;
|
||||||
|
LOGGER.debug("Whiteboard canvas overlay dimensions updated");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private function onResize(e:ResizeEvent):void {
|
private function onResize(e:ResizeEvent):void {
|
||||||
fitVideoToWindow();
|
fitVideoToWindow();
|
||||||
}
|
}
|
||||||
@ -290,6 +330,10 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
video.y = 0;
|
video.y = 0;
|
||||||
video.x = (videoHolder.width - video.width) / 2;
|
video.x = (videoHolder.width - video.width) / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//update the whiteboard canvas holder and overlay with new video dimensions...
|
||||||
|
updateWhiteboardCanvasHolder();
|
||||||
|
updateWhiteboardCanvasOverlay();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function stopStream():void{
|
private function stopStream():void{
|
||||||
@ -315,6 +359,8 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
break;
|
break;
|
||||||
case "NetStream.Play.Start":
|
case "NetStream.Play.Start":
|
||||||
LOGGER.debug("Netstatus: {0}", [e.info.code]);
|
LOGGER.debug("Netstatus: {0}", [e.info.code]);
|
||||||
|
addWhiteboardCanvasHolder();
|
||||||
|
addWhiteboardOverlay();
|
||||||
globalDispatcher.dispatchEvent(new BBBEvent(BBBEvent.DESKSHARE_STARTED));
|
globalDispatcher.dispatchEvent(new BBBEvent(BBBEvent.DESKSHARE_STARTED));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -377,6 +423,40 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Inherited from IBbbCanvas*/
|
||||||
|
public function addRawChild(child:DisplayObject):void{
|
||||||
|
this.whiteboardCanvasHolder.rawChildren.addChild(child);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function removeRawChild(child:DisplayObject):void{
|
||||||
|
this.whiteboardCanvasHolder.rawChildren.removeChild(child);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function doesContain(child:DisplayObject):Boolean{
|
||||||
|
return this.whiteboardCanvasHolder.rawChildren.contains(child);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function acceptOverlayCanvas(overlay:IBbbCanvas):void{
|
||||||
|
LOGGER.debug("DesktopPublishWindow: acceptOverlayCanvas");
|
||||||
|
whiteboardCanvas = overlay as Canvas;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function handleWhiteboardCanvasClick(e:MouseEvent):void {
|
||||||
|
LOGGER.debug("DesktopPublishWindow: handleWhiteboardCanvasClick");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function moveCanvas(x:Number, y:Number):void{
|
||||||
|
LOGGER.debug("DesktopPublishWindow: moveCanvas");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function zoomCanvas(width:Number, height:Number, zoom:Number):void{
|
||||||
|
LOGGER.debug("DesktopPublishWindow: zoomCanvas");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function showCanvas(show:Boolean):void{
|
||||||
|
LOGGER.debug("DesktopPublishWindow: showCanvas");
|
||||||
|
}
|
||||||
]]>
|
]]>
|
||||||
</mx:Script>
|
</mx:Script>
|
||||||
|
|
||||||
@ -429,4 +509,4 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
</mx:states>
|
</mx:states>
|
||||||
<mx:Image id="cursorImg" visible="false" source="@Embed('../../assets/images/cursor4.png')"/>
|
<mx:Image id="cursorImg" visible="false" source="@Embed('../../assets/images/cursor4.png')"/>
|
||||||
|
|
||||||
</mx:VBox>
|
</mx:Canvas>
|
||||||
|
@ -20,13 +20,13 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<mx:VBox xmlns="org.bigbluebutton.common.*"
|
<mx:Canvas xmlns="org.bigbluebutton.common.*"
|
||||||
xmlns:mx="http://www.adobe.com/2006/mxml"
|
xmlns:mx="http://www.adobe.com/2006/mxml"
|
||||||
xmlns:common="org.bigbluebutton.common.*"
|
xmlns:common="org.bigbluebutton.common.*"
|
||||||
width="600" height="400"
|
width="600" height="400"
|
||||||
initialize="init()"
|
initialize="init()"
|
||||||
creationComplete="onCreationComplete()"
|
creationComplete="onCreationComplete()"
|
||||||
implements="org.bigbluebutton.common.IBbbModuleWindow"
|
implements="org.bigbluebutton.common.IBbbCanvas"
|
||||||
xmlns:mate="http://mate.asfusion.com/"
|
xmlns:mate="http://mate.asfusion.com/"
|
||||||
backgroundColor="#C0C0C0">
|
backgroundColor="#C0C0C0">
|
||||||
|
|
||||||
@ -86,6 +86,8 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
private var isMaximized:Boolean = false;
|
private var isMaximized:Boolean = false;
|
||||||
|
|
||||||
[Bindable] private var dsOptions:DeskshareOptions;
|
[Bindable] private var dsOptions:DeskshareOptions;
|
||||||
|
|
||||||
|
private var whiteboardCanvasHolder:Canvas = new Canvas();
|
||||||
|
|
||||||
private function init():void{
|
private function init():void{
|
||||||
dsOptions = new DeskshareOptions();
|
dsOptions = new DeskshareOptions();
|
||||||
@ -94,7 +96,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
private function onCreationComplete():void{
|
private function onCreationComplete():void{
|
||||||
videoHolder.addChild(video);
|
videoHolder.addChild(video);
|
||||||
videoHolder.addEventListener(ResizeEvent.RESIZE, onResize);
|
videoHolder.addEventListener(ResizeEvent.RESIZE, onResize);
|
||||||
this.addChild(videoHolder);
|
this.addChildAt(videoHolder,0);
|
||||||
videoHolder.percentWidth = 100;
|
videoHolder.percentWidth = 100;
|
||||||
videoHolder.percentHeight = 100;
|
videoHolder.percentHeight = 100;
|
||||||
fitVideoToWindow();
|
fitVideoToWindow();
|
||||||
@ -149,7 +151,31 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
video.attachNetStream(ns);
|
video.attachNetStream(ns);
|
||||||
ns.play(stream);
|
ns.play(stream);
|
||||||
this.stream = stream;
|
this.stream = stream;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private function addWhiteboardCanvasHolder():void{
|
||||||
|
if(video != null) {
|
||||||
|
cleanCanvasHolder();
|
||||||
|
updateWhiteboardCanvasHolder();
|
||||||
|
this.addChild(whiteboardCanvasHolder);
|
||||||
|
LOGGER.debug("Whiteboard canvas holder added");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function cleanCanvasHolder():void{
|
||||||
|
while (this.whiteboardCanvasHolder.rawChildren.numChildren > 0)
|
||||||
|
this.whiteboardCanvasHolder.rawChildren.removeChildAt(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function updateWhiteboardCanvasHolder():void{
|
||||||
|
if(video != null) {
|
||||||
|
whiteboardCanvasHolder.x = video.x;
|
||||||
|
whiteboardCanvasHolder.y = video.y;
|
||||||
|
whiteboardCanvasHolder.width = video.width;
|
||||||
|
whiteboardCanvasHolder.height = video.height;
|
||||||
|
LOGGER.debug("Whiteboard canvas holder dimensions updated");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function updateButtonsPosition():void {
|
protected function updateButtonsPosition():void {
|
||||||
@ -243,6 +269,9 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
btnActualSize.toolTip = ResourceUtil.getInstance().getString('bbb.desktopView.actualSize');
|
btnActualSize.toolTip = ResourceUtil.getInstance().getString('bbb.desktopView.actualSize');
|
||||||
btnActualSize.label = ResourceUtil.getInstance().getString('bbb.desktopView.actualSize');
|
btnActualSize.label = ResourceUtil.getInstance().getString('bbb.desktopView.actualSize');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//update the whiteboard canvas holder with new video dimensions...
|
||||||
|
updateWhiteboardCanvasHolder();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function closeWindow():void {
|
private function closeWindow():void {
|
||||||
@ -256,6 +285,40 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
private function localeChanged(e:Event):void{
|
private function localeChanged(e:Event):void{
|
||||||
resourcesChanged();
|
resourcesChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Inherited from IBbbCanvas*/
|
||||||
|
public function addRawChild(child:DisplayObject):void{
|
||||||
|
this.whiteboardCanvasHolder.rawChildren.addChild(child);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function removeRawChild(child:DisplayObject):void{
|
||||||
|
this.whiteboardCanvasHolder.rawChildren.removeChild(child);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function doesContain(child:DisplayObject):Boolean{
|
||||||
|
return this.whiteboardCanvasHolder.rawChildren.contains(child);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function acceptOverlayCanvas(overlay:IBbbCanvas):void{
|
||||||
|
LOGGER.debug("DesktopPublishWindow: acceptOverlayCanvas");
|
||||||
|
addWhiteboardCanvasHolder();
|
||||||
|
}
|
||||||
|
|
||||||
|
private function handleWhiteboardCanvasClick(e:MouseEvent):void {
|
||||||
|
LOGGER.debug("DesktopPublishWindow: handleWhiteboardCanvasClick");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function moveCanvas(x:Number, y:Number):void{
|
||||||
|
LOGGER.debug("DesktopPublishWindow: moveCanvas");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function zoomCanvas(width:Number, height:Number, zoom:Number):void{
|
||||||
|
LOGGER.debug("DesktopPublishWindow: zoomCanvas");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function showCanvas(show:Boolean):void{
|
||||||
|
LOGGER.debug("DesktopPublishWindow: showCanvas");
|
||||||
|
}
|
||||||
|
|
||||||
]]>
|
]]>
|
||||||
</mx:Script>
|
</mx:Script>
|
||||||
@ -274,4 +337,4 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
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')}"/>
|
||||||
</mx:HBox>
|
</mx:HBox>
|
||||||
</mx:VBox>
|
</mx:Canvas>
|
||||||
|
@ -110,6 +110,9 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
import org.bigbluebutton.modules.whiteboard.events.WhiteboardButtonEvent;
|
import org.bigbluebutton.modules.whiteboard.events.WhiteboardButtonEvent;
|
||||||
import org.bigbluebutton.modules.deskshare.events.ShareEvent;
|
import org.bigbluebutton.modules.deskshare.events.ShareEvent;
|
||||||
import org.bigbluebutton.util.i18n.ResourceUtil;
|
import org.bigbluebutton.util.i18n.ResourceUtil;
|
||||||
|
import org.bigbluebutton.common.IBbbCanvas;
|
||||||
|
import org.bigbluebutton.modules.deskshare.view.components.DesktopPublishWindow;
|
||||||
|
import org.bigbluebutton.modules.deskshare.view.components.DesktopViewWindow;
|
||||||
|
|
||||||
private static const LOGGER:ILogger = getClassLogger(PresentationWindow);
|
private static const LOGGER:ILogger = getClassLogger(PresentationWindow);
|
||||||
|
|
||||||
@ -171,6 +174,10 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
[Embed(source="../../../polling/sounds/Poll.mp3")]
|
[Embed(source="../../../polling/sounds/Poll.mp3")]
|
||||||
private var noticeSoundClass:Class;
|
private var noticeSoundClass:Class;
|
||||||
private var noticeSound:Sound = new noticeSoundClass() as Sound;
|
private var noticeSound:Sound = new noticeSoundClass() as Sound;
|
||||||
|
|
||||||
|
private var whiteboardOverlay:IBbbCanvas = null;
|
||||||
|
private var DSPublishCanvas:DesktopPublishWindow = null;
|
||||||
|
private var DSViewCanvas:DesktopViewWindow = null;
|
||||||
|
|
||||||
private function init():void{
|
private function init():void{
|
||||||
presentOptions = new PresentOptions();
|
presentOptions = new PresentOptions();
|
||||||
@ -532,8 +539,17 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
private function addOverlayCanvas(e:AddOverlayCanvasEvent):void{
|
private function addOverlayCanvas(e:AddOverlayCanvasEvent):void{
|
||||||
LOGGER.debug("OVERLAYING WHITEBOARD CANVAS");
|
LOGGER.debug("OVERLAYING WHITEBOARD CANVAS");
|
||||||
|
whiteboardOverlay = e.canvas;
|
||||||
|
|
||||||
|
LOGGER.debug("addOverlayCanvas: Adding whiteboard canvas to SlideView");
|
||||||
e.canvas.acceptOverlayCanvas(slideView);
|
e.canvas.acceptOverlayCanvas(slideView);
|
||||||
slideView.acceptOverlayCanvas(e.canvas);
|
slideView.acceptOverlayCanvas(e.canvas);
|
||||||
|
|
||||||
|
if(currentTabIndex == DESKSHARE_VIEW_TAB_INDEX && DSViewCanvas != null) {
|
||||||
|
LOGGER.debug("addOverlayCanvas: Adding whiteboard canvas to DesktopViewWindow");
|
||||||
|
DSViewCanvas.acceptOverlayCanvas(whiteboardOverlay);
|
||||||
|
whiteboardOverlay.acceptOverlayCanvas(DSViewCanvas);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override protected function resourcesChanged():void{
|
override protected function resourcesChanged():void{
|
||||||
@ -842,11 +858,18 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
if(presenterTabs.selectedIndex == PRESENTATION_TAB_INDEX) {
|
if(presenterTabs.selectedIndex == PRESENTATION_TAB_INDEX) {
|
||||||
currentTabIndex = PRESENTATION_TAB_INDEX;
|
currentTabIndex = PRESENTATION_TAB_INDEX;
|
||||||
LOGGER.debug("Presentation Tab selected.");
|
LOGGER.debug("Presentation Tab selected.");
|
||||||
|
|
||||||
if(sharing)
|
if(sharing)
|
||||||
stopSharing();
|
stopSharing();
|
||||||
|
|
||||||
|
if(whiteboardOverlay != null) {
|
||||||
|
slideView.acceptOverlayCanvas(whiteboardOverlay);
|
||||||
|
whiteboardOverlay.acceptOverlayCanvas(slideView);
|
||||||
|
}
|
||||||
|
|
||||||
if(currentControlBarState == PRESENTER_STATE) {
|
if(currentControlBarState == PRESENTER_STATE) {
|
||||||
setControlBarState("presenter");
|
setControlBarState("presenter");
|
||||||
dispatchEvent(new PresenterStatusEvent(PresenterStatusEvent.SWITCHED_TO_PRESENTATION_TAB));
|
annotationsPermissionChanged(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -862,13 +885,18 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
deskshareControls.visible = true;
|
deskshareControls.visible = true;
|
||||||
deskshareControls.includeInLayout = true;
|
deskshareControls.includeInLayout = true;
|
||||||
}
|
}
|
||||||
dispatchEvent(new PresenterStatusEvent(PresenterStatusEvent.SWITCHED_TO_DESKSHARE_TAB));
|
annotationsPermissionChanged(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else {
|
else {
|
||||||
currentTabIndex = DESKSHARE_VIEW_TAB_INDEX;
|
currentTabIndex = DESKSHARE_VIEW_TAB_INDEX;
|
||||||
LOGGER.debug("Deskshare Viewing Tab selected.");
|
LOGGER.debug("Deskshare Viewing Tab selected.");
|
||||||
|
|
||||||
|
if(whiteboardOverlay != null && DSViewCanvas != null) {
|
||||||
|
DSViewCanvas.acceptOverlayCanvas(whiteboardOverlay);
|
||||||
|
whiteboardOverlay.acceptOverlayCanvas(DSViewCanvas);
|
||||||
|
} else LOGGER.debug("openDesktopViewTab: whiteboard overlay or desktop view canvas is null!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -884,33 +912,35 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
private function createDesktopPublishTab(e:ShareEvent):void {
|
private function createDesktopPublishTab(e:ShareEvent):void {
|
||||||
if(e.publishTabContent != null && desksharePublishTab.numElements == 0) {
|
if(e.publishTabContent != null && desksharePublishTab.numElements == 0) {
|
||||||
LOGGER.debug("Setting the content of dekstop share PUBLISHING tab");
|
DSPublishCanvas = e.publishTabContent;
|
||||||
|
|
||||||
canPublish = e.publishTabContent.canPublish();
|
canPublish = e.publishTabContent.canPublish();
|
||||||
|
|
||||||
|
LOGGER.debug("Setting the content of dekstop share PUBLISHING tab");
|
||||||
e.publishTabContent.percentHeight = 100;
|
e.publishTabContent.percentHeight = 100;
|
||||||
e.publishTabContent.percentWidth = 100;
|
e.publishTabContent.percentWidth = 100;
|
||||||
desksharePublishTab.addChild(e.publishTabContent);
|
desksharePublishTab.addChild(e.publishTabContent);
|
||||||
|
|
||||||
if(canPublish && e.publishTabContent.autoStart)
|
if(canPublish && e.publishTabContent.autoStart)
|
||||||
handleDeskshareAutoStart();
|
handleDeskshareAutoStart();
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
LOGGER.debug("publishTabContent is NULL.");
|
LOGGER.debug("publishTabContent is NULL.");
|
||||||
}
|
}
|
||||||
|
|
||||||
private function cleanDesktopPublishTab(e:ShareEvent):void {
|
private function cleanDesktopPublishTab(e:ShareEvent):void {
|
||||||
LOGGER.debug("desksharePublishTab.numElements = " + desksharePublishTab.numElements)
|
|
||||||
if(desksharePublishTab.numElements != 0) {
|
if(desksharePublishTab.numElements != 0) {
|
||||||
LOGGER.debug("Removing content of dekstop share PUBLISHING tab");
|
LOGGER.debug("Removing content of dekstop share PUBLISHING tab");
|
||||||
desksharePublishTab.removeAllElements();
|
desksharePublishTab.removeAllElements();
|
||||||
|
DSPublishCanvas = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function openDesktopViewTab(e:ShareEvent):void {
|
private function openDesktopViewTab(e:ShareEvent):void {
|
||||||
if(e.viewTabContent != null && presenterTabs.numElements == 2) {
|
if(e.viewTabContent != null && presenterTabs.numElements == 2) {
|
||||||
LOGGER.debug("Opening a new tab for dekstop share VIEWING");
|
DSViewCanvas = e.viewTabContent;
|
||||||
|
|
||||||
|
LOGGER.debug("Opening a new tab for dekstop share VIEWING");
|
||||||
e.viewTabContent.percentHeight = 100;
|
e.viewTabContent.percentHeight = 100;
|
||||||
e.viewTabContent.percentWidth = 100;
|
e.viewTabContent.percentWidth = 100;
|
||||||
e.viewTabContent.setStyle("horizontalAlign","center");
|
e.viewTabContent.setStyle("horizontalAlign","center");
|
||||||
@ -926,11 +956,21 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
private function closeDesktopViewTab(e:ShareEvent):void {
|
private function closeDesktopViewTab(e:ShareEvent):void {
|
||||||
LOGGER.debug("Closing the dekstop share VIEWING tab");
|
LOGGER.debug("Closing the dekstop share VIEWING tab");
|
||||||
selectPresentationTab();
|
selectPresentationTab();
|
||||||
if(presenterTabs.numElements == 3)
|
if(presenterTabs.numElements == 3) {
|
||||||
presenterTabs.removeChildAt(DESKSHARE_VIEW_TAB_INDEX);
|
presenterTabs.removeChildAt(DESKSHARE_VIEW_TAB_INDEX);
|
||||||
|
DSViewCanvas = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function shareScreen(fullScreen:Boolean):void {
|
private function shareScreen(fullScreen:Boolean):void {
|
||||||
|
|
||||||
|
if(whiteboardOverlay != null && DSPublishCanvas != null) {
|
||||||
|
LOGGER.debug("Adding whiteboard layer to Deskshare Publish Canvas");
|
||||||
|
DSPublishCanvas.acceptOverlayCanvas(whiteboardOverlay);
|
||||||
|
whiteboardOverlay.acceptOverlayCanvas(DSPublishCanvas);
|
||||||
|
annotationsPermissionChanged(true);
|
||||||
|
} else LOGGER.debug("shareScreen: whiteboard overlay or desktop publish canvas is null!");
|
||||||
|
|
||||||
var e:ShareEvent = new ShareEvent(ShareEvent.SHARE_SCREEN);
|
var e:ShareEvent = new ShareEvent(ShareEvent.SHARE_SCREEN);
|
||||||
e.fullScreen = fullScreen;
|
e.fullScreen = fullScreen;
|
||||||
|
|
||||||
@ -957,6 +997,12 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
onSelectTab();
|
onSelectTab();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function annotationsPermissionChanged(enableAnnotations:Boolean):void {
|
||||||
|
var event:PresenterStatusEvent = new PresenterStatusEvent(PresenterStatusEvent.ANNOTATIONS_PERMISSION_CHANGE);
|
||||||
|
event.enableAnnotations = enableAnnotations;
|
||||||
|
dispatchEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
private function handleDeskshareAutoStart():void {
|
private function handleDeskshareAutoStart():void {
|
||||||
if(deskshareTimer == null) {
|
if(deskshareTimer == null) {
|
||||||
deskshareTimer = new Timer(2000, 1);
|
deskshareTimer = new Timer(2000, 1);
|
||||||
|
@ -473,6 +473,9 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function acceptOverlayCanvas(overlay:IBbbCanvas):void{
|
public function acceptOverlayCanvas(overlay:IBbbCanvas):void{
|
||||||
|
if(whiteboardCanvas != null)
|
||||||
|
cleanCanvasHolder();
|
||||||
|
|
||||||
whiteboardCanvas = overlay;
|
whiteboardCanvas = overlay;
|
||||||
var c:Canvas = overlay as Canvas;
|
var c:Canvas = overlay as Canvas;
|
||||||
// add the canvas below the thumbnails
|
// add the canvas below the thumbnails
|
||||||
@ -517,9 +520,14 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
focusManager.setFocus(slideLoader);
|
focusManager.setFocus(slideLoader);
|
||||||
slideLoader.drawFocus(true);
|
slideLoader.drawFocus(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function cleanCanvasHolder():void{
|
||||||
|
while (this.whiteboardCanvasHolder.rawChildren.numChildren > 0)
|
||||||
|
this.whiteboardCanvasHolder.rawChildren.removeChildAt(0);
|
||||||
|
}
|
||||||
|
|
||||||
]]>
|
]]>
|
||||||
</mx:Script>
|
</mx:Script>
|
||||||
<fimage:FocusableImage id="slideLoader" width="{slideModel.loaderW}" height="{slideModel.loaderH}"
|
<fimage:FocusableImage id="slideLoader" width="{slideModel.loaderW}" height="{slideModel.loaderH}"
|
||||||
x="{slideModel.loaderX}" y="{slideModel.loaderY}" useHandCursor="true" buttonMode="false"
|
x="{slideModel.loaderX}" y="{slideModel.loaderY}" useHandCursor="true" buttonMode="false"
|
||||||
creationComplete="listenForSlideLoadedCompleteEvent()"
|
creationComplete="listenForSlideLoadedCompleteEvent()"
|
||||||
|
@ -24,23 +24,29 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
creationComplete="init()" visible="false" mouseOver="setCursor(toolType)" mouseOut="removeCursor()" implements="org.bigbluebutton.common.IBbbCanvas">
|
creationComplete="init()" visible="false" mouseOver="setCursor(toolType)" mouseOut="removeCursor()" implements="org.bigbluebutton.common.IBbbCanvas">
|
||||||
<mx:Script>
|
<mx:Script>
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
import com.asfusion.mate.events.Dispatcher;
|
import com.asfusion.mate.events.Dispatcher;
|
||||||
|
|
||||||
import mx.managers.CursorManager;
|
import mx.managers.CursorManager;
|
||||||
|
|
||||||
import org.bigbluebutton.common.IBbbCanvas;
|
import org.bigbluebutton.common.IBbbCanvas;
|
||||||
import org.bigbluebutton.common.Images;
|
import org.bigbluebutton.common.Images;
|
||||||
import org.bigbluebutton.main.events.MadePresenterEvent;
|
import org.bigbluebutton.main.events.MadePresenterEvent;
|
||||||
import org.bigbluebutton.modules.whiteboard.WhiteboardCanvasDisplayModel;
|
import org.bigbluebutton.modules.whiteboard.WhiteboardCanvasDisplayModel;
|
||||||
import org.bigbluebutton.modules.whiteboard.WhiteboardCanvasModel;
|
import org.bigbluebutton.modules.whiteboard.WhiteboardCanvasModel;
|
||||||
import org.bigbluebutton.modules.whiteboard.business.shapes.DrawObject;
|
import org.bigbluebutton.modules.whiteboard.business.shapes.DrawObject;
|
||||||
import org.bigbluebutton.modules.whiteboard.business.shapes.TextObject;
|
import org.bigbluebutton.modules.whiteboard.business.shapes.TextObject;
|
||||||
import org.bigbluebutton.modules.whiteboard.commands.GetWhiteboardShapesCommand;
|
import org.bigbluebutton.modules.whiteboard.commands.GetWhiteboardShapesCommand;
|
||||||
import org.bigbluebutton.modules.whiteboard.events.PageEvent;
|
import org.bigbluebutton.modules.whiteboard.events.PageEvent;
|
||||||
import org.bigbluebutton.modules.whiteboard.events.WhiteboardButtonEvent;
|
import org.bigbluebutton.modules.whiteboard.events.WhiteboardButtonEvent;
|
||||||
import org.bigbluebutton.modules.whiteboard.events.WhiteboardDrawEvent;
|
import org.bigbluebutton.modules.whiteboard.events.WhiteboardDrawEvent;
|
||||||
import org.bigbluebutton.modules.whiteboard.models.Annotation;
|
import org.bigbluebutton.modules.whiteboard.models.Annotation;
|
||||||
|
import org.bigbluebutton.modules.present.ui.views.SlideView;
|
||||||
|
import org.bigbluebutton.modules.deskshare.view.components.DesktopPublishWindow;
|
||||||
|
import org.bigbluebutton.modules.deskshare.view.components.DesktopViewWindow;
|
||||||
|
import org.as3commons.logging.api.ILogger;
|
||||||
|
import org.as3commons.logging.api.getClassLogger;
|
||||||
|
|
||||||
|
private static const LOGGER:ILogger = getClassLogger(WhiteboardCanvas);
|
||||||
public var model:WhiteboardCanvasModel;
|
public var model:WhiteboardCanvasModel;
|
||||||
public var displayModel:WhiteboardCanvasDisplayModel;
|
public var displayModel:WhiteboardCanvasDisplayModel;
|
||||||
|
|
||||||
@ -68,6 +74,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function queryForAnnotationHistory(webId:String):void {
|
public function queryForAnnotationHistory(webId:String):void {
|
||||||
|
LOGGER.debug("Query for annotation history: " + webId);
|
||||||
var dispatcher:Dispatcher = new Dispatcher();
|
var dispatcher:Dispatcher = new Dispatcher();
|
||||||
dispatcher.dispatchEvent(new GetWhiteboardShapesCommand(webId));
|
dispatcher.dispatchEvent(new GetWhiteboardShapesCommand(webId));
|
||||||
}
|
}
|
||||||
@ -97,10 +104,10 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
stage.removeEventListener(MouseEvent.MOUSE_UP, doMouseUp);
|
stage.removeEventListener(MouseEvent.MOUSE_UP, doMouseUp);
|
||||||
stage.removeEventListener(MouseEvent.MOUSE_MOVE, doMouseMove);
|
stage.removeEventListener(MouseEvent.MOUSE_MOVE, doMouseMove);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function doMouseDown(event:Event):void {
|
private function doMouseDown(event:Event):void {
|
||||||
displayModel.doMouseDown(this.mouseX, this.mouseY);
|
displayModel.doMouseDown(this.mouseX, this.mouseY);
|
||||||
model.doMouseDown(this.mouseX, this.mouseY);
|
model.doMouseDown(this.mouseX, this.mouseY);
|
||||||
event.stopPropagation(); // we want to stop the bubbling so slide doesn't move
|
event.stopPropagation(); // we want to stop the bubbling so slide doesn't move
|
||||||
|
|
||||||
@ -111,7 +118,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
private function doMouseMove(event:Event):void {
|
private function doMouseMove(event:Event):void {
|
||||||
model.doMouseMove(Math.min(Math.max(parent.mouseX, 0), parent.width-2) - this.x, Math.min(Math.max(parent.mouseY, 0), parent.height-2) - this.y);
|
model.doMouseMove(Math.min(Math.max(parent.mouseX, 0), parent.width-2) - this.x, Math.min(Math.max(parent.mouseY, 0), parent.height-2) - this.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function setShape(s:String):void {
|
public function setShape(s:String):void {
|
||||||
// LogUtil.debug("SET SHAPE [" + s + "]");
|
// LogUtil.debug("SET SHAPE [" + s + "]");
|
||||||
@ -122,7 +128,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
model.changeColor(e.target.selectedColor);
|
model.changeColor(e.target.selectedColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function sendGraphicToServer(gobj:Annotation, type:String):void {
|
public function sendGraphicToServer(gobj:Annotation, type:String):void {
|
||||||
// LogUtil.debug("DISPATCHING SEND sendGraphicToServer [" + type + "]");
|
// LogUtil.debug("DISPATCHING SEND sendGraphicToServer [" + type + "]");
|
||||||
var event:WhiteboardDrawEvent = new WhiteboardDrawEvent(type);
|
var event:WhiteboardDrawEvent = new WhiteboardDrawEvent(type);
|
||||||
@ -146,7 +152,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
// model.changeFillColor(e.target.selectedColor);
|
// model.changeFillColor(e.target.selectedColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function changeThickness(e:Event):void {
|
public function changeThickness(e:Event):void {
|
||||||
model.changeThickness(e.target.value);
|
model.changeThickness(e.target.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -244,6 +250,14 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
public function acceptOverlayCanvas(overlay:IBbbCanvas):void {
|
public function acceptOverlayCanvas(overlay:IBbbCanvas):void {
|
||||||
// LogUtil.debug("WhiteboardCanvas::acceptOverlayCanvas()");
|
// LogUtil.debug("WhiteboardCanvas::acceptOverlayCanvas()");
|
||||||
// LogUtil.debug("OVERLAYING PRESENTATION CANVAS");
|
// LogUtil.debug("OVERLAYING PRESENTATION CANVAS");
|
||||||
|
|
||||||
|
var changedCanvas:Boolean = false;
|
||||||
|
if( (this.bbbCanvas as DesktopPublishWindow != null || this.bbbCanvas as DesktopViewWindow != null) &&
|
||||||
|
overlay as SlideView != null )
|
||||||
|
changedCanvas = true;
|
||||||
|
else if(this.bbbCanvas as SlideView != null &&
|
||||||
|
(overlay as DesktopPublishWindow != null || overlay as DesktopViewWindow != null))
|
||||||
|
changedCanvas = true;
|
||||||
|
|
||||||
this.bbbCanvas = overlay;
|
this.bbbCanvas = overlay;
|
||||||
//Load existing shapes onto the canvas.
|
//Load existing shapes onto the canvas.
|
||||||
@ -251,15 +265,15 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if this is the first time we overlayed the whiteboard canvas into the
|
* Check if this is the first time we overlayed the whiteboard canvas into the
|
||||||
* presentation canvas. If so, query for annotations history.
|
* presentation canvas or the user changed tabs on Presentation Window. If so, query for annotations history.
|
||||||
*/
|
*/
|
||||||
if (! displayModel.canvasInited) {
|
if (! displayModel.canvasInited || changedCanvas) {
|
||||||
displayModel.parentCanvasInitialized();
|
displayModel.parentCanvasInitialized();
|
||||||
var webId:String = model.whiteboardModel.getCurrentWhiteboardId();
|
var webId:String = model.whiteboardModel.getCurrentWhiteboardId();
|
||||||
if (webId != null) {
|
if (webId != null) {
|
||||||
queryForAnnotationHistory(webId);
|
queryForAnnotationHistory(webId);
|
||||||
}
|
}
|
||||||
}
|
} else LOGGER.debug("Not querying annotations history");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,8 +41,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
<mate:Listener type="{NavigationEvent.GOTO_PAGE}" method="handleSlideChange" />
|
<mate:Listener type="{NavigationEvent.GOTO_PAGE}" method="handleSlideChange" />
|
||||||
<mate:Listener type="{DisplaySlideEvent.DISPLAY_SLIDE_EVENT}" method="handleSlideLoaded" />
|
<mate:Listener type="{DisplaySlideEvent.DISPLAY_SLIDE_EVENT}" method="handleSlideLoaded" />
|
||||||
<mate:Listener type="{UploadEvent.PRESENTATION_READY}" method="handlePresentationSwitch" />
|
<mate:Listener type="{UploadEvent.PRESENTATION_READY}" method="handlePresentationSwitch" />
|
||||||
<mate:Listener type="{PresenterStatusEvent.SWITCHED_TO_PRESENTATION_TAB}" method="handlePresentationTabSelected" />
|
<mate:Listener type="{PresenterStatusEvent.ANNOTATIONS_PERMISSION_CHANGE}" method="handleEnableAnnotations" />
|
||||||
<mate:Listener type="{PresenterStatusEvent.SWITCHED_TO_DESKSHARE_TAB}" method="handleDeskshareTabSelected" />
|
|
||||||
|
|
||||||
<mx:Style>
|
<mx:Style>
|
||||||
.colorPickerStyle {
|
.colorPickerStyle {
|
||||||
@ -118,7 +117,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
private var mousedOver:Boolean = false;
|
private var mousedOver:Boolean = false;
|
||||||
private var slideLoaded:Boolean = false;
|
private var slideLoaded:Boolean = false;
|
||||||
private var presentationTabSelected:Boolean = true;
|
private var enableAnnotations:Boolean = true;
|
||||||
|
|
||||||
public var canvas:WhiteboardCanvas;
|
public var canvas:WhiteboardCanvas;
|
||||||
private var presentationWindow:PresentationWindow;
|
private var presentationWindow:PresentationWindow;
|
||||||
@ -254,7 +253,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function checkVisibility(e:MadePresenterEvent = null):void {
|
private function checkVisibility(e:MadePresenterEvent = null):void {
|
||||||
if (toolbarAllowed() && slideLoaded && presentationTabSelected && (wbOptions.keepToolbarVisible || mousedOver)) {
|
if (toolbarAllowed() && slideLoaded && enableAnnotations && (wbOptions.keepToolbarVisible || mousedOver)) {
|
||||||
setPositionAndDepth();
|
setPositionAndDepth();
|
||||||
showWhiteboardToolbar = true;
|
showWhiteboardToolbar = true;
|
||||||
} else {
|
} else {
|
||||||
@ -332,13 +331,8 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
|||||||
return UsersUtil.amIModerator();
|
return UsersUtil.amIModerator();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function handlePresentationTabSelected(e:PresenterStatusEvent):void {
|
private function handleEnableAnnotations(e:PresenterStatusEvent):void {
|
||||||
presentationTabSelected = true;
|
enableAnnotations = e.enableAnnotations;
|
||||||
checkVisibility();
|
|
||||||
}
|
|
||||||
|
|
||||||
private function handleDeskshareTabSelected(e:PresenterStatusEvent):void {
|
|
||||||
presentationTabSelected = false;
|
|
||||||
checkVisibility();
|
checkVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user