 	import weave.api.WeaveAPI;
 	import weave.api.core.IDisposableObject;
 	import weave.api.core.ILinkableObject;
+	import weave.api.core.IStageUtils;
 	import weave.api.data.IQualifiedKey;
 	import weave.api.getCallbackCollection;
 	import weave.api.primitives.IBounds2D;

			addEventListener(MouseEvent.DOUBLE_CLICK, handleDoubleClick);
			
			// add global event listener for mouse move and mouse up because user may move or release outside this display object
			WeaveAPI.StageUtils.addEventCallback(MouseEvent.MOUSE_MOVE, this, handleMouseMove);
			WeaveAPI.StageUtils.addEventCallback(MouseEvent.MOUSE_UP, this, handleMouseUp);
 

			invalidateDisplayList();
		}
		
		private function handleKeyboard():void
		{
			if (editMode)
				toggleMouseEnabled();
		}
		
		/**
		 * Handle a mouse move event. 
		 */
		private function handleMouseMove():void
		{
			if (!editMode)
				return;
			
			toggleMouseEnabled();
			
			if (_drawing)// && !mouseOffscreen())
			{
				// get the current line
				var line:Array = _coordsArrays[_coordsArrays.length - 1];
