Chris@16: package { Chris@16: // Simple Set Clipboard System Chris@16: // Author: Joseph Huckaby Chris@16: Chris@16: import flash.display.Stage; Chris@16: import flash.display.Sprite; Chris@16: import flash.display.LoaderInfo; Chris@16: import flash.display.StageScaleMode; Chris@16: import flash.events.*; Chris@16: import flash.display.StageAlign; Chris@16: import flash.display.StageScaleMode; Chris@16: import flash.external.ExternalInterface; Chris@16: import flash.system.Security; Chris@16: import flash.utils.*; Chris@16: import flash.system.System; Chris@16: Chris@16: public class ZeroClipboard extends Sprite { Chris@16: Chris@16: private var id:String = ''; Chris@16: private var button:Sprite; Chris@16: private var clipText:String = ''; Chris@16: Chris@16: public function ZeroClipboard() { Chris@16: // constructor, setup event listeners and external interfaces Chris@16: stage.scaleMode = StageScaleMode.EXACT_FIT; Chris@16: flash.system.Security.allowDomain("*"); Chris@16: Chris@16: // import flashvars Chris@16: var flashvars:Object = LoaderInfo( this.root.loaderInfo ).parameters; Chris@16: id = flashvars.id; Chris@16: Chris@16: // invisible button covers entire stage Chris@16: button = new Sprite(); Chris@16: button.buttonMode = true; Chris@16: button.useHandCursor = true; Chris@16: button.graphics.beginFill(0xCCFF00); Chris@16: button.graphics.drawRect(0, 0, Math.floor(flashvars.width), Math.floor(flashvars.height)); Chris@16: button.alpha = 0.0; Chris@16: addChild(button); Chris@16: button.addEventListener(MouseEvent.CLICK, clickHandler); Chris@16: Chris@16: button.addEventListener(MouseEvent.MOUSE_OVER, function(event:Event) { Chris@16: ExternalInterface.call( 'ZeroClipboard.dispatch', id, 'mouseOver', null ); Chris@16: } ); Chris@16: button.addEventListener(MouseEvent.MOUSE_OUT, function(event:Event) { Chris@16: ExternalInterface.call( 'ZeroClipboard.dispatch', id, 'mouseOut', null ); Chris@16: } ); Chris@16: button.addEventListener(MouseEvent.MOUSE_DOWN, function(event:Event) { Chris@16: ExternalInterface.call( 'ZeroClipboard.dispatch', id, 'mouseDown', null ); Chris@16: } ); Chris@16: button.addEventListener(MouseEvent.MOUSE_UP, function(event:Event) { Chris@16: ExternalInterface.call( 'ZeroClipboard.dispatch', id, 'mouseUp', null ); Chris@16: } ); Chris@16: Chris@16: // external functions Chris@16: ExternalInterface.addCallback("setHandCursor", setHandCursor); Chris@16: ExternalInterface.addCallback("setText", setText); Chris@16: Chris@16: // signal to the browser that we are ready Chris@16: ExternalInterface.call( 'ZeroClipboard.dispatch', id, 'load', null ); Chris@16: } Chris@16: Chris@16: public function setText(newText) { Chris@16: // set the maximum number of files allowed Chris@16: clipText = newText; Chris@16: } Chris@16: Chris@16: public function setHandCursor(enabled:Boolean) { Chris@16: // control whether the hand cursor is shown on rollover (true) Chris@16: // or the default arrow cursor (false) Chris@16: button.useHandCursor = enabled; Chris@16: } Chris@16: Chris@16: private function clickHandler(event:Event):void { Chris@16: // user click copies text to clipboard Chris@16: // as of flash player 10, this MUST happen from an in-movie flash click event Chris@16: System.setClipboard( clipText ); Chris@16: ExternalInterface.call( 'ZeroClipboard.dispatch', id, 'complete', clipText ); Chris@16: } Chris@16: } Chris@16: }