diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/SlideView.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/SlideView.mxml index fa3a5b3f806493e68f7f2a6ae7c192ec08f4e576..cc2d01ccf44932c7dfd2e61b66a66536a114bb9a 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/SlideView.mxml +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/present/ui/views/SlideView.mxml @@ -240,10 +240,6 @@ slideModel.onZoom(zoomPercentage, mouseX, mouseY); slideModel.printViewedRegion(); slideModel.displayPresenterView(); - LogUtil.debug(slideLoader.x + ": x"); - LogUtil.debug(slideLoader.y + ": y"); - LogUtil.debug(slideLoader.width + ": width"); - LogUtil.debug(slideLoader.height + ": height"); fitSlideToLoader(); notifyOthersOfZoomEvent(); } diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/whiteboard/WhiteboardCanvasModel.as b/bigbluebutton-client/src/org/bigbluebutton/modules/whiteboard/WhiteboardCanvasModel.as index 5ade7180cdbfb0afc8ac940b95ac418bdfbc9b8b..9411102edb83831599f610ddd63c8a25c16f3f0c 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/whiteboard/WhiteboardCanvasModel.as +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/whiteboard/WhiteboardCanvasModel.as @@ -8,6 +8,7 @@ package org.bigbluebutton.modules.whiteboard import flash.events.TextEvent; import flash.geom.Point; import flash.text.TextFieldAutoSize; + import flash.ui.Keyboard; import mx.collections.ArrayCollection; @@ -281,7 +282,9 @@ package org.bigbluebutton.modules.whiteboard break; case TextObject.TEXT_UPDATED: case TextObject.TEXT_PUBLISHED: - if(!isPresenter) { + if(isPresenter) { + if(recvdShapes) addPresenterText(o); + } else { if(graphicList.length == 0 || recvdShapes) { addNormalText(o); } else modifyText(o); @@ -516,9 +519,15 @@ package org.bigbluebutton.modules.whiteboard if(o.getGraphicType() == WhiteboardConstants.TYPE_SHAPE) drawShape(o as DrawObject, true); else if(o.getGraphicType() == WhiteboardConstants.TYPE_TEXT) - drawText(o as TextObject, false); + drawText(o as TextObject, true); + } + + if(isPresenter) { + var evt:GraphicObjectFocusEvent = + new GraphicObjectFocusEvent(GraphicObjectFocusEvent.OBJECT_DESELECTED); + evt.data = null; + wbCanvas.dispatchEvent(evt); } - // if the new page has a grid, draw it addOrRemoveGrid(this.isGrid); @@ -600,13 +609,30 @@ package org.bigbluebutton.modules.whiteboard } } - + /* the following four methods are listeners that handle events that occur on TextObjects, such as text being typed, which causes the textObjTextListener to send text to the server. */ public function textObjSpecialListener(event:KeyboardEvent):void { // check for special conditions + switch (event.keyCode) { + case Keyboard.D: + case Keyboard.W: + case Keyboard.LEFT: + case Keyboard.UP: + case Keyboard.PAGE_UP: + case Keyboard.DOWN: + case Keyboard.RIGHT: + case Keyboard.SPACE: + case Keyboard.PAGE_DOWN: + case Keyboard.ENTER: + LogUtil.debug("Capturing text: " + event.keyCode); + break; + default: + LogUtil.debug("Capturing text: " + event.keyCode); + } + if(event.charCode == 127 || // 'delete' key event.charCode == 8 || // 'bkspace' key event.charCode == 13) { // 'enter' key @@ -647,13 +673,16 @@ package org.bigbluebutton.modules.whiteboard var tf:TextObject = event.target as TextObject; sendTextToServer(TextObject.TEXT_PUBLISHED, tf); LogUtil.debug("Text published to: " + tf.text); - + var e:GraphicObjectFocusEvent = + new GraphicObjectFocusEvent(GraphicObjectFocusEvent.OBJECT_DESELECTED); + e.data = tf; + wbCanvas.dispatchEvent(e); /* hide text toolbar because we don't want to show it if there is no text selected */ - var e:HideTextToolbarEvent = - new HideTextToolbarEvent(HideTextToolbarEvent.HIDE_TEXT_TOOLBAR); - wbCanvas.dispatchEvent(e); - LogUtil.debug("HIDING TEXT TOOLBAR: " + tf.text); + //var e:HideTextToolbarEvent = + // new HideTextToolbarEvent(HideTextToolbarEvent.HIDE_TEXT_TOOLBAR); + //wbCanvas.dispatchEvent(e); + //LogUtil.debug("HIDING TEXT TOOLBAR: " + tf.text); } private function redrawGraphic(gobj:GraphicObject, objIndex:int):void { diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/whiteboard/business/shapes/TextObject.as b/bigbluebutton-client/src/org/bigbluebutton/modules/whiteboard/business/shapes/TextObject.as index 7363b23142d1afe9281cb936070924f5671fce42..7b02a6082de5f5075164bb1844136d71f8e9e578 100644 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/whiteboard/business/shapes/TextObject.as +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/whiteboard/business/shapes/TextObject.as @@ -103,19 +103,19 @@ package org.bigbluebutton.modules.whiteboard.business.shapes var tf:TextFormat = new TextFormat(); tf.size = size; tf.font = "arial"; + this.defaultTextFormat = tf; this.setTextFormat(tf); } public function makeGraphic(parentWidth:Number, parentHeight:Number):void { var startX:Number = denormalize(this.x, parentWidth); var startY:Number = denormalize(this.y, parentHeight); - //LogUtil.error("denorms: " + startX + "," + startY); this.x = startX; this.y = startY; this.antiAliasType = AntiAliasType.ADVANCED; - //var format:TextFormat = new TextFormat(); - //format.color = this.textColor; - //format. + + // ensure typing doesn't go off of whiteboard + this.width = 250; } public function getProperties():Array { diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/whiteboard/views/WhiteboardTextToolbar.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/whiteboard/views/WhiteboardTextToolbar.mxml index d361311c1a750584ea2d0279ecce36b844a4d88d..25d3b268ce16ad2b574330c929454df7ba4fe353 100644 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/whiteboard/views/WhiteboardTextToolbar.mxml +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/whiteboard/views/WhiteboardTextToolbar.mxml @@ -59,6 +59,7 @@ import mx.events.MenuEvent; import mx.events.MoveEvent; import mx.events.ResizeEvent; + import mx.managers.FocusManager; import org.bigbluebutton.common.Images; import org.bigbluebutton.common.LogUtil; @@ -86,7 +87,6 @@ private var presentationWindow:PresentationWindow; private var normalAlpha:Number = 0.55; private var focusedAlpha:Number = 1.0; - public function init():void { this.alpha = normalAlpha; this.visible = true; @@ -133,6 +133,7 @@ // Define the event listener for the Menu control's change event. private function textSizeMenuClick(event:MenuEvent):void { + enableTextToolbar(); textSizeMenu.displayPopUp(); var newTextSize:Number = Number(event.label); setTextSize(newTextSize); @@ -144,6 +145,7 @@ * */ protected function setTextColor(e:Event):void{ + enableTextToolbar(); this.textColor = e.target.selectedColor; canvas.modifySelectedTextObject(textColor, backgroundVisible, bgColor, textSize); canvas.stage.focus = currentlySelectedTextObject; @@ -155,6 +157,7 @@ * */ protected function changeTextBackgroundColor(e:Event):void{ + enableTextToolbar(); this.bgColor = e.target.selectedColor; canvas.modifySelectedTextObject(textColor, backgroundVisible, bgColor, textSize); canvas.stage.focus = currentlySelectedTextObject; @@ -166,6 +169,7 @@ * */ protected function setBackgroundVisible(e:Event):void{ + enableTextToolbar(); this.backgroundVisible = e.target.selected; canvas.modifySelectedTextObject(textColor, backgroundVisible, bgColor, textSize); canvas.stage.focus = currentlySelectedTextObject; @@ -177,6 +181,7 @@ * */ protected function setTextSize(size:Number):void { + enableTextToolbar(); this.textSize = size; LogUtil.debug("Text size set to: " + size); textSizeMenu.label = String(this.textSize); @@ -199,6 +204,10 @@ this.visible = false; } + private function closeToolbar(e:StopWhiteboardModuleEvent):void{ + parent.removeChild(this); + } + private function handleHideTextToolbarEvent(e:HideTextToolbarEvent):void{ LogUtil.debug("hiding toolbar by hidetexttoolbarevent"); this.disableTextToolbar(); @@ -246,35 +255,53 @@ parent.setChildIndex(this, parent.numChildren-1); } - private function closeToolbar(e:StopWhiteboardModuleEvent):void{ - parent.removeChild(this); + // repositions the toolbar when canvas is zoomed + public function adjustForZoom(x:Number, y:Number):void { + if(currentlySelectedTextObject == null) return; + repositionToolbar(currentlySelectedTextObject); } - + private function handleObjSelected(event:GraphicObjectFocusEvent):void { if(event.data.getGraphicType() != WhiteboardConstants.TYPE_TEXT) return; var tobj:TextObject = event.data as TextObject; repositionToolbar(tobj); syncPropsWith(tobj); - /*if(!this.visible) + if(!this.visible) enableTextToolbar(); - if(!this.enabled) - this.enabled = true;*/ LogUtil.debug("!!!!SELECTED:" + " " + tobj.getProperties()); } private function handleObjDeselected(event:GraphicObjectFocusEvent):void { if(event.data.getGraphicType() != WhiteboardConstants.TYPE_TEXT) return; var tobj:TextObject = event.data as TextObject; - disableTextToolbar(); - textSizeMenu.close(); + + /* checks if the new focus of the stage is not the TextToolbar, and if not, + hide the text toolbar. This is to prevent the TextToolbar from disappearing as + soon as the user changes focus. + */ + if(!containsFocus(this)) { + disableTextToolbar(); + textSizeMenu.close(); + } LogUtil.debug("!!!!DESELECTED:" + " " + tobj.getProperties()); } - - // repositions the toolbar when canvas is zoomed - public function adjustForZoom(x:Number, y:Number):void { - if(currentlySelectedTextObject == null) return; - repositionToolbar(currentlySelectedTextObject); + + /* used to check whether or not the TextToolbar and its children have focus when + checking whether or not it should be made visible=false. see handleObjDeselected(). + */ + private function containsFocus(obj:DisplayObjectContainer):Boolean { + if(obj.stage.focus == obj) return true; + + for (var i:int = 0; i < obj.numChildren; i++) { + var currObj:DisplayObject = obj.getChildAt(i); + if(obj.stage.focus == currObj) return true; + } + + return false; } + + + ]]> </mx:Script> diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/whiteboard/views/WhiteboardToolbar.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/whiteboard/views/WhiteboardToolbar.mxml index be27b59c734604b4bc850dbbeb3b32561e042af3..32307aeddca1c019695c7ae781520921051d8ac2 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/whiteboard/views/WhiteboardToolbar.mxml +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/whiteboard/views/WhiteboardToolbar.mxml @@ -115,11 +115,13 @@ * */ protected function setTool(gType:String, toolType:String):void{ - if(toolType != TextObject.TEXT_TOOL) { - var e:HideTextToolbarEvent = - new HideTextToolbarEvent(HideTextToolbarEvent.HIDE_TEXT_TOOLBAR); + /*if(toolType != TextObject.TEXT_TOOL) { + + var e:GraphicObjectFocusEvent = + new GraphicObjectFocusEvent(GraphicObjectFocusEvent.OBJECT_DESELECTED); canvas.dispatchEvent(e); - } + LogUtil.debug("Should dispatch object deselected method"); + }*/ if(gType == WhiteboardConstants.TYPE_SHAPE) { canvas.setGraphicType(gType); canvas.setTool(toolType);