/FlexPaper/src/com/devaldi/controls/flexpaper/Viewer.as
ActionScript | 1896 lines | 1486 code | 358 blank | 52 comment | 463 complexity | f72a0c045faee902976cf5188c76db37 MD5 | raw file
Large files files are truncated, but you can click here to view the full file
- /*
- Copyright 2009 Erik Engstr??m
-
- This file is part of FlexPaper.
-
- FlexPaper is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, version 3 of the License.
-
- FlexPaper 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 General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with FlexPaper. If not, see <http://www.gnu.org/licenses/>.
- */
-
- package com.devaldi.controls.flexpaper
- {
- import caurina.transitions.Tweener;
-
- import com.devaldi.controls.FlowBox;
- import com.devaldi.controls.FlowVBox;
- import com.devaldi.controls.MatrixTransformer;
- import com.devaldi.controls.Spinner;
- import com.devaldi.controls.ZoomCanvas;
- import com.devaldi.controls.flexpaper.resources.MenuIcons;
- import com.devaldi.controls.flexpaper.utils.StreamUtil;
- import com.devaldi.controls.flexpaper.utils.TextMapUtil;
- import com.devaldi.events.CurrentPageChangedEvent;
- import com.devaldi.events.CursorModeChangedEvent;
- import com.devaldi.events.DocumentLoadedEvent;
- import com.devaldi.events.DocumentPrintedEvent;
- import com.devaldi.events.ErrorLoadingPageEvent;
- import com.devaldi.events.ExternalLinkClickedEvent;
- import com.devaldi.events.FitModeChangedEvent;
- import com.devaldi.events.PageLoadedEvent;
- import com.devaldi.events.PageLoadingEvent;
- import com.devaldi.events.ScaleChangedEvent;
- import com.devaldi.events.SelectionCreatedEvent;
- import com.devaldi.events.SwfLoadedEvent;
- import com.devaldi.events.ViewModeChangedEvent;
- import com.devaldi.streaming.DupImage;
- import com.devaldi.streaming.DupLoader;
- import com.devaldi.streaming.IDocumentLoader;
- import com.devaldi.streaming.IGenericDocument;
- import com.devaldi.streaming.ITextSelectableDisplayObject;
- import com.devaldi.streaming.SwfDocument;
-
- import flash.display.AVM1Movie;
- import flash.display.Bitmap;
- import flash.display.BitmapData;
- import flash.display.DisplayObject;
- import flash.display.InteractiveObject;
- import flash.display.Loader;
- import flash.display.MovieClip;
- import flash.display.Shape;
- import flash.display.SimpleButton;
- import flash.display.Sprite;
- import flash.events.Event;
- import flash.events.IOErrorEvent;
- import flash.events.KeyboardEvent;
- import flash.events.MouseEvent;
- import flash.events.ProgressEvent;
- import flash.external.ExternalInterface;
- import flash.filters.DropShadowFilter;
- import flash.geom.Matrix;
- import flash.geom.Point;
- import flash.net.URLRequest;
- import flash.printing.PrintJob;
- import flash.printing.PrintJobOptions;
- import flash.system.ApplicationDomain;
- import flash.system.LoaderContext;
- import flash.system.System;
- import flash.text.TextSnapshot;
- import flash.ui.Keyboard;
- import flash.utils.ByteArray;
- import flash.utils.Timer;
- import flash.utils.escapeMultiByte;
- import flash.utils.setTimeout;
-
- import mx.containers.Canvas;
- import mx.controls.Image;
- import mx.core.Container;
- import mx.core.UIComponent;
- import mx.events.FlexEvent;
- import mx.managers.CursorManager;
- import mx.managers.PopUpManager;
- import mx.resources.ResourceManager;
- import mx.rpc.events.FaultEvent;
- import mx.rpc.events.ResultEvent;
- import mx.rpc.http.HTTPService;
-
- [Event(name="onDocumentLoaded", type="com.devaldi.events.DocumentLoadedEvent")]
- [Event(name="onPageLoaded", type="com.devaldi.events.PageLoadedEvent")]
- [Event(name="onPageLoading", type="com.devaldi.events.PageLoadingEvent")]
- [Event(name="onDocumentLoading", type="flash.events.Event")]
- [Event(name="onNoMoreSearchResults", type="flash.events.Event")]
- [Event(name="onLoadingProgress", type="flash.events.ProgressEvent")]
- [Event(name="onScaleChanged", type="com.devaldi.events.ScaleChangedEvent")]
- [Event(name="onExternalLinkClicked", type="com.devaldi.events.ExternalLinkClickedEvent")]
- [Event(name="onCurrPageChanged", type="com.devaldi.events.CurrentPageChangedEvent")]
- [Event(name="onViewModeChanged", type="com.devaldi.events.ViewModeChangedEvent")]
- [Event(name="onFitModeChanged", type="com.devaldi.events.FitModeChangedEvent")]
- [Event(name="onCursorModeChanged", type="com.devaldi.events.CursorModeChangedEvent")]
- [Event(name="onDocumentLoadedError", type="flash.events.ErrorEvent")]
- [Event(name="onLogoClicked", type="flash.events.Event")]
- [Event(name="onSelectionCreated", type="com.devaldi.events.SelectionCreatedEvent")]
- [Event(name="onDocumentPrinted", type="com.devaldi.events.DocumentPrintedEvent")]
- [Event(name="onErrorLoadingPage", type="com.devaldi.events.ErrorLoadingPageEvent")]
-
- public class Viewer extends Canvas
- {
- private var _swfFile:String = "";
- private var _swfFileChanged:Boolean = false;
- private var _initialized:Boolean = false;
- private var _loaderptr:Loader;
- private var _libMC:IGenericDocument;
- private var _displayContainer:Container;
- private var _paperContainer:ZoomCanvas;
- private var _swfContainer:Canvas;
- private var _scale:Number = 1;
- private var _pscale:Number = 1;
- private var _swfLoaded:Boolean = false;
- private var _pageList:Array;
- private var _viewMode:String = Viewer.InitViewMode;
- private var _fitMode:String = FitModeEnum.FITNONE ;
- public static var InitViewMode:String = ViewModeEnum.PORTRAIT;
- private var _scrollToPage:Number = 0;
- private var _numPages:Number = 0;
- private var _currPage:Number = 0;
- private var _tweencount:Number = 0;
- private var _bbusyloading:Boolean = true;
- private var _zoomtransition:String = "easeOut";
- private var _zoomtime:Number = 0.6;
- private var _fitPageOnLoad:Boolean = false;
- private var _fitWidthOnLoad:Boolean = false;
- private var _dupImageClicked:Boolean = false;
- private var _docLoader:IDocumentLoader;
- private var _progressiveLoading:Boolean = false;
- private var _encodeURI:Boolean = true;
- private var _repaintTimer:Timer;
- private var _loadTimer:Timer;
- private var _frameLoadCount:int = 0;
- private var _adjGotoPage:int = 0;
- private var _zoomInterval:Number = 0;
- private var _inputBytes:ByteArray;
- private var _textSelectEnabled:Boolean = false;
- private var _cursorsEnabled:Boolean = true;
- private var _grabCursorID:Number = 0;
- private var _grabbingCursorID:Number = 0;
- private var _pluginList:Array;
- public static var ViewModeExtList:Array;
- private var _currentExtViewMode:IFlexPaperViewModePlugin;
- private var _minZoomSize:Number = 0.3;
- private var _maxZoomSize:Number = 5;
- private var _searchMatchAll:Boolean = false;
- private var _searchServiceUrl:String = "";
- private var _performSearchOnPageLoad:Boolean = false;
- private var _autoAdjustPrintSize:Boolean = true;
- private var _pendingSearchPage:int = -1;
- private var _printPaperAsBitmap:Boolean = false;
- private var _skinImg:Bitmap = new MenuIcons.SMALL_TRANSPARENT();
- private var _skinImgc:Bitmap = new MenuIcons.SMALL_TRANSPARENT_COLOR();
- private var _skinImgDo:Image;
-
- public function Viewer(){
- super();
- }
-
- public function get BusyLoading():Boolean {
- return _bbusyloading;
- }
-
- public function set BusyLoading(b:Boolean):void {
- _bbusyloading = b;
- }
-
- public function get libMC():IGenericDocument {
- return _libMC;
- }
-
- public function get IsInitialized():Boolean{
- return _initialized;
- }
-
- public function get SwfLoaded():Boolean{
- return _swfLoaded;
- }
-
- public function get DisplayContainer():Container{
- return _displayContainer;
- }
-
- public function set DisplayContainer(c:Container):void{
- _displayContainer = c;
- }
-
- public function get PaperContainer():ZoomCanvas{
- return _paperContainer;
- }
-
- public function get PageList():Array {
- return _pageList;
- }
-
- public function get DocLoader():IDocumentLoader{
- return _docLoader;
- }
-
- public function set DocLoader(d:IDocumentLoader):void{
- _docLoader = d;
- }
-
- [Bindable]
- public function get ViewMode():String {
- return _viewMode;
- }
-
- [Bindable]
- public function get FitMode():String {
- return _fitMode;
- }
-
- public function set ViewMode(s:String):void {
- if(s!=_viewMode){
- for each (var vme:IFlexPaperViewModePlugin in ViewModeExtList){
- if(s == vme.Name){
- _currentExtViewMode = vme;
- }
- }
-
- if(s == ViewModeEnum.TILE&&ViewMode==ViewModeEnum.PORTRAIT){_pscale = _scale; _scale = 0.23;_paperContainer.verticalScrollPosition = 0;_fitMode = FitModeEnum.FITNONE;}else{_scale = _pscale;}
- _paperContainer.x = (s==ViewModeEnum.PORTRAIT||s==ViewModeEnum.TILE)?2.5:0;
-
- _viewMode = s;
- if(_initialized && _swfLoaded){createDisplayContainer();if(this._progressiveLoading){this.addInLoadedPages(true);}else{reCreateAllPages();}_displayContainer.visible = true;}
- FitMode = FitModeEnum.FITNONE;
-
- if(UsingExtViewMode){
- CurrExtViewMode.setViewMode(s);
- _viewMode = s;
- }
-
- dispatchEvent(new ViewModeChangedEvent(ViewModeChangedEvent.VIEWMODE_CHANGED,_viewMode));
- dispatchEvent(new ScaleChangedEvent(ScaleChangedEvent.SCALE_CHANGED,_scale));
- dispatchEvent(new FitModeChangedEvent(FitModeChangedEvent.FITMODE_CHANGED,_fitMode));
- }
- }
-
- public function set FitMode(s:String):void {
- if(_viewMode == ViewModeEnum.TILE){_fitMode = FitModeEnum.FITNONE;return}
-
- if(s!=_fitMode){
- _fitMode = s;
-
- switch(s){
- case FitModeEnum.FITWIDTH:
- fitWidth();
- break;
-
- case FitModeEnum.FITHEIGHT:
- fitHeight();
- break;
- }
-
- dispatchEvent(new FitModeChangedEvent(FitModeChangedEvent.FITMODE_CHANGED,_fitMode));
- }
- }
-
- public function set ProgressiveLoading(b1:Boolean):void {
- _progressiveLoading = b1;
- }
-
- [Bindable]
- public function get ProgressiveLoading():Boolean {
- return _progressiveLoading;
- }
-
- public function set EncodeURI(b1:Boolean):void {
- _encodeURI = b1;
- }
-
- [Bindable]
- public function get EncodeURI():Boolean {
- return _encodeURI;
- }
-
- public function set TextSelectEnabled(b1:Boolean):void {
- _textSelectEnabled = b1;
-
- if(_textSelectEnabled && CursorsEnabled)
- dispatchEvent(new CursorModeChangedEvent(CursorModeChangedEvent.CURSORMODE_CHANGED,"TextSelectorCursor"));
- else
- dispatchEvent(new CursorModeChangedEvent(CursorModeChangedEvent.CURSORMODE_CHANGED,"ArrowCursor"));
- }
-
- [Bindable]
- public function get TextSelectEnabled():Boolean {
- return _textSelectEnabled;
- }
-
- [Bindable]
- public function get CursorsEnabled():Boolean {
- return _cursorsEnabled;
- }
-
- public function set CursorsEnabled(b:Boolean):void {
- _cursorsEnabled = b;
- }
-
- public function setPaperFocus():void{
- _paperContainer.setFocus();
- }
-
- public function get ZoomTransition():String {
- return _zoomtransition;
- }
-
- public function set ZoomTransition(s:String):void {
- _zoomtransition = s;
- }
-
- public function get ZoomTime():Number {
- return _zoomtime;
- }
-
- public function set ZoomTime(n:Number):void {
- _zoomtime = n;
- }
-
- public function get MinZoomSize():Number {
- return _minZoomSize;
- }
-
- public function set MinZoomSize(n:Number):void {
- _minZoomSize = n;
- }
-
- public function get MaxZoomSize():Number {
- return _maxZoomSize;
- }
-
- public function set MaxZoomSize(n:Number):void {
- _maxZoomSize = n;
- }
-
- public function get PluginList():Array{
- return _pluginList;
- }
-
- public function set PluginList(p:Array):void{
- _pluginList = p;
- }
-
- public function get CurrExtViewMode():IFlexPaperViewModePlugin{
- if(_currentExtViewMode != null && _currentExtViewMode.Name == ViewMode)
- return _currentExtViewMode;
- else{
- for each (var vme:IFlexPaperViewModePlugin in ViewModeExtList){
- if(ViewMode == vme.Name){
- _currentExtViewMode = vme;
- }
- }
- }
-
- return _currentExtViewMode;
- }
-
- public function get UsingExtViewMode():Boolean{
- if(ViewMode == ViewModeEnum.PORTRAIT || ViewMode == ViewModeEnum.TILE)
- return false;
- else
- return (CurrExtViewMode!=null && ViewMode == CurrExtViewMode.Name);
- }
-
- public function get ZoomInterval():Number {
- return _zoomInterval;
- }
-
- public function set ZoomInterval(n:Number):void {
- _zoomInterval = n;
- }
-
- [Bindable]
- public function get numPages():Number {
- return _numPages;
- }
-
- private function set numPages(n:Number):void {
- _numPages = n;
- }
-
- [Bindable]
- public function get numPagesLoaded():Number {
- return (_libMC!=null)?_libMC.framesLoaded:0;
- }
-
- private function set numPagesLoaded(n:Number):void {
-
- }
-
- [Bindable]
- public function get currPage():Number {
- return _currPage;
- }
-
- private function set currPage(n:Number):void {
- _currPage = n;
- }
-
- [Bindable]
- public function get SearchMatchAll():Boolean {
- if(SearchServiceUrl!=null && SearchServiceUrl.length>0)
- return false;
- else
- return _searchMatchAll;
- }
-
- public function set SearchMatchAll(b1:Boolean):void {
- _searchMatchAll = b1;
- }
-
- public function set AutoAdjustPrintSize(b1:Boolean):void {
- _autoAdjustPrintSize = b1;
- }
-
- [Bindable]
- public function get AutoAdjustPrintSize():Boolean {
- return _autoAdjustPrintSize;
- }
-
- public function set PrintPaperAsBitmap(b1:Boolean):void{
- _printPaperAsBitmap = b1;
- }
-
- [Bindable]
- public function get PrintPaperAsBitmap():Boolean{
- return _printPaperAsBitmap;
- }
-
- [Bindable]
- public function get SearchServiceUrl():String {
- return _searchServiceUrl;
- }
-
- public function set SearchServiceUrl(s1:String):void {
- _searchServiceUrl = unescape(s1);
- }
-
- public function get FitWidthOnLoad():Boolean {
- return _fitWidthOnLoad;
- }
-
- public function set FitWidthOnLoad(b1:Boolean):void {
- _fitWidthOnLoad = b1;
- }
-
- public function get FitPageOnLoad():Boolean {
- return _fitPageOnLoad;
- }
-
- public function set FitPageOnLoad(b2:Boolean):void {
- _fitPageOnLoad = b2;
- }
-
- public function gotoPage(p:Number, adjGotoPage:int=0):void{
- if(adjGotoPage!=0){_adjGotoPage=adjGotoPage;}
-
- if(p<1 || p-1 >_pageList.length)
- return;
- else{
- if(ViewMode == ViewModeEnum.PORTRAIT){
- _paperContainer.verticalScrollPosition = _pageList[p-1].y+3 + _adjGotoPage;
- }
-
- if(UsingExtViewMode)
- CurrExtViewMode.gotoPage(p,adjGotoPage);
-
- // retry if y is not set
- if(!UsingExtViewMode && p>1 && _pageList[p-1].y ==0)
- {
- flash.utils.setTimeout(gotoPage,200,p);
- }
- else
- _adjGotoPage = 0;
-
- repaint();
- }
- }
-
- public function mvNext(extmode:Boolean=true):void{
- if(UsingExtViewMode && extmode)
- CurrExtViewMode.mvNext();
- else
- if(currPage<numPages){gotoPage(currPage+1);}
- }
-
- public function mvPrev(extmode:Boolean=true):void{
- if(UsingExtViewMode && extmode)
- CurrExtViewMode.mvPrev();
- else
- {
- if(currPage>1){gotoPage(currPage-1);}
- }
- }
-
- public function switchMode(mode:String=null):void{
- if(mode==null){ // no mode passed, just
- if(ViewMode == ViewModeEnum.PORTRAIT){ViewMode = ViewModeEnum.TILE;}
- else if(ViewMode == ViewModeEnum.TILE){_scale = _pscale; ViewMode = ViewModeEnum.PORTRAIT;}
- }else{
- if(ViewMode == mode && ViewMode != ViewModeEnum.PORTRAIT){
- ViewMode = Viewer.InitViewMode;
- }
- else
- ViewMode = mode;
- }
- }
-
- public function get PaperVisible():Boolean {
- return _paperContainer.visible;
- }
-
- public function set PaperVisible(b:Boolean):void {
- _paperContainer.visible = b;
- }
-
- public function get SwfFile():String {
- return _swfFile;
- }
-
- public function getSwfFilePerPage(swfFile:String, page:int):String{
- var fileName:String = swfFile;
- var map:String = (fileName.substr(fileName.indexOf("[*,"),fileName.indexOf("]")-fileName.indexOf("[*,")+1));
- var padding:int = parseInt(map.substr(map.indexOf(",")+1,map.indexOf("]")-2));
- fileName = TextMapUtil.StringReplaceAll(fileName,map,padString(page.toString(),padding,"0"));
-
- return encodeURI(fileName);
- }
-
- public function loadFromBytes(bytes:ByteArray):void{
- clearPlugins();
- deleteDisplayContainer();
- deletePageList();
- deleteLoaderPtr();
- deleteLoaderList();
- deleteFLoader();
- deleteSelectionMarker();
- TextMapUtil.totalFragments = "";
- deleteLibMC();
-
- _swfFileChanged = true;
- _frameLoadCount = 0;
-
- ViewMode = Viewer.InitViewMode;
-
- try{
- new flash.net.LocalConnection().connect('devaldiGCdummy');
- new flash.net.LocalConnection().connect('devaldiGCdummy');
- } catch (e:*) {}
-
- try{flash.system.System.gc();} catch (e:*) {}
-
- if(_docLoader!=null && !_docLoader.hasEventListener(SwfLoadedEvent.SWFLOADED)){
- _docLoader.addEventListener("onDocumentLoadedError", onDocumentLoadedErrorHandler,false,0,true);
- _docLoader.addEventListener(SwfLoadedEvent.SWFLOADED, swfComplete,false,0,true);
- }
-
- if(_docLoader!=null){
- _docLoader.stream.removeEventListener(ProgressEvent.PROGRESS, onLoadProgress);
- _docLoader.stream.addEventListener(ProgressEvent.PROGRESS, onLoadProgress,false,0,true);
- }
-
- _docLoader.loadFromBytes(bytes);
-
- _paperContainer.verticalScrollPosition = 0;
- createDisplayContainer();
-
- // Changing the SWF file causes the component to invalidate.
- invalidateProperties();
- invalidateSize();
- invalidateDisplayList();
- }
-
- public function set SwfFile(s:String):void {
- var pagesSplit:Boolean = false;
-
- if(EncodeURI)
- s = unescape(s);
-
- if(s.length!=0){
-
- if(s.indexOf("{")>=0 && s.indexOf("}")>0){
- numPages = parseInt(s.substr(s.lastIndexOf(",")+1,s.indexOf("}")-s.lastIndexOf(",")-1));
- s = TextMapUtil.StringReplaceAll(s,"{","");
- s = TextMapUtil.StringReplaceAll(s,","+numPages.toString()+"}","");
- pagesSplit = true;
- }
-
- clearPlugins();
- deleteDisplayContainer();
- deletePageList();
- deleteLoaderPtr();
- deleteLoaderList();
- deleteFLoader();
- deleteSelectionMarker();
- TextMapUtil.totalFragments = "";
-
- if(s!=_swfFile)
- deleteLibMC();
-
- _swfFileChanged = true;
- _frameLoadCount = 0;
- _currPage = 0;
-
- if(!pagesSplit){
- if(EncodeURI)
- _swfFile = encodeURI(s);
- else
- _swfFile = s;
- }
- else
- _swfFile = s;
-
- ViewMode = Viewer.InitViewMode;
-
- try{
- new flash.net.LocalConnection().connect('devaldiGCdummy');
- new flash.net.LocalConnection().connect('devaldiGCdummy');
- } catch (e:*) {}
-
- try{flash.system.System.gc();} catch (e:*) {}
-
- if(_docLoader!=null && !_docLoader.hasEventListener(SwfLoadedEvent.SWFLOADED)){
- _docLoader.IsSplit = pagesSplit;
- _docLoader.addEventListener("onDocumentLoadedError", onDocumentLoadedErrorHandler,false,0,true);
- _docLoader.addEventListener(SwfLoadedEvent.SWFLOADED, swfComplete,false,0,true);
- }
-
- if(_docLoader!=null){
- _docLoader.stream.removeEventListener(ProgressEvent.PROGRESS, onLoadProgress);
- _docLoader.stream.addEventListener(ProgressEvent.PROGRESS, onLoadProgress,false,0,true);
- }
-
- _paperContainer.verticalScrollPosition = 0;
- createDisplayContainer();
-
- // Changing the SWF file causes the component to invalidate.
- invalidateProperties();
- invalidateSize();
- invalidateDisplayList();
-
- if(_swfFile.length>0 && pagesSplit){
- _loadTimer = new Timer(100);
- _loadTimer.addEventListener("timer",loadtimer);
-
- _docLoader.load(new URLRequest(getSwfFilePerPage(_swfFile,1)),StreamUtil.getExecutionContext()); //new URLRequest(decodeURI(_swfFile))
- }
- else if(_swfFile.length > 0 && !pagesSplit)
- _docLoader.load(new URLRequest(_swfFile),StreamUtil.getExecutionContext());
- }
- }
-
- [Bindable]
- public function get Scale():String {
- return _scale.toString();
- }
-
- public function get CurrentlySelectedText():String {
- return _currentlySelectedText;
- }
-
- public function Zoom(factor:Number, fnOnUpdate:Function=null):void{
- if(factor<_minZoomSize || factor>_maxZoomSize || factor == _scale)
- return;
-
- if((!UsingExtViewMode && _viewMode != ViewModeEnum.PORTRAIT) || (UsingExtViewMode && !CurrExtViewMode.doZoom)){return;}
-
- var _target:DisplayObject;
- _paperContainer.CenteringEnabled = (_paperContainer.width>0);
-
- _tweencount = _displayContainer.numChildren;
-
- for(var i:int=0;i<_displayContainer.numChildren;i++){
- _target = _displayContainer.getChildAt(i);
- _target.filters = null;
-
- if(fnOnUpdate!=null)
- Tweener.addTween(_target, {scaleX: factor, scaleY: factor, time: _zoomtime, transition: _zoomtransition, onUpdate: fnOnUpdate, onComplete: tweenComplete});
- else
- Tweener.addTween(_target, {scaleX: factor, scaleY: factor, time: _zoomtime, transition: _zoomtransition, onComplete: tweenComplete});
- }
-
- FitMode = FitModeEnum.FITNONE;
- _scale = factor;
-
- dispatchEvent(new ScaleChangedEvent(ScaleChangedEvent.SCALE_CHANGED,_scale));
- }
-
- public function rotate():void{
- var rotatenum:int = getVisibleMidPage();
- if(rotatenum<_pageList.length-1&&_pageList.length>2){rotatenum = rotatenum - 1;}
-
- (_displayContainer.getChildAt(rotatenum) as DupImage).paperRotation = 90;
- }
-
- private function degreesToRadians(degrees:Number):Number {
- var radians:Number = degrees * (Math.PI / 180);
- return radians;
- }
-
- public function getFitWidthFactor():Number{
- _libMC.gotoAndStop(1);
- return (_paperContainer.width / _libMC.width) - 0.032; //- 0.03;
- }
-
- public function getFitHeightFactor():Number{
- _libMC.gotoAndStop(1);
- return (_paperContainer.height / _libMC.height);
- }
-
- public function fitWidth():Boolean{
- if(_displayContainer.numChildren == 0){return false;}
-
- var _target:DisplayObject;
- _paperContainer.CenteringEnabled = (_paperContainer.width>0);
- var factor:Number = getFitWidthFactor();
- _scale = factor;
- _tweencount = _displayContainer.numChildren;
-
- for(var i:int=0;i<_displayContainer.numChildren;i++){
- _target = _displayContainer.getChildAt(i);
- _target.filters = null;
- Tweener.addTween(_target, {scaleX:factor, scaleY:factor,time: 0, transition: 'easenone', onComplete: tweenComplete});
- }
-
- FitMode = FitModeEnum.FITWIDTH;
- dispatchEvent(new ScaleChangedEvent(ScaleChangedEvent.SCALE_CHANGED,_scale));
-
- _paperContainer.horizontalScrollPosition = _paperContainer.maxHorizontalScrollPosition/2;
- _paperContainer.validateDisplayList();
-
- return factor > 0;
- }
-
- public function fitHeight():Boolean{
- if(_displayContainer.numChildren == 0){return false;}
-
- var _target:DisplayObject;
- _paperContainer.CenteringEnabled = (_paperContainer.height>0);
- var factor:Number = getFitHeightFactor();
- _scale = factor;
- _tweencount = _displayContainer.numChildren;
-
- for(var i:int=0;i<_displayContainer.numChildren;i++){
- _target = _displayContainer.getChildAt(i);
- _target.filters = null;
- Tweener.addTween(_target, {scaleX:factor, scaleY:factor,time: 0, transition: 'easenone', onComplete: tweenComplete});
- }
-
- FitMode = FitModeEnum.FITHEIGHT;
- dispatchEvent(new ScaleChangedEvent(ScaleChangedEvent.SCALE_CHANGED,_scale));
-
- return factor > 0;
- }
-
- private function tweenComplete():void{
- _tweencount--;
-
- if(_tweencount==0){
-
- if(_loadTimer!=null)
- _loadTimer.start();
-
- repositionPapers();
- }
-
- if(_tweencount < numPagesLoaded - 2 || _tweencount == 0){
- PaperVisible = true;
- }
- }
-
- private function reScaleComplete():void{
- _tweencount--;
-
- if(_tweencount==0){
- if(_displayContainer.numChildren>0){
- _paperContainer.verticalScrollPosition = 0;
-
- if(_loadTimer!=null)
- _loadTimer.start();
-
- repositionPapers();
- }
-
- if(_tweencount < numPagesLoaded - 2 || _tweencount == 0){
- PaperVisible = true;
- }
- }
- }
-
- public function set Scale(s:String):void {
- var diff:Number = _scale - new Number(s);
- _scale = new Number(s);
- }
-
- override protected function createChildren():void {
- // Call the createChildren() method of the superclass.
- super.createChildren();
- this.styleName = "viewerBackground";
-
- // Bind events
- //_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfComplete);
- addEventListener(Event.RESIZE, sizeChanged,false,0,true);
- systemManager.stage.addEventListener(KeyboardEvent.KEY_DOWN, keyboardHandler,false,0,true);
-
- // Create a visible container for the swf
- _swfContainer = new Canvas();
- _swfContainer.visible = false;
- this.addChild(_swfContainer);
-
- // Create a timer to use for repainting
- _repaintTimer = new Timer(5,0);
- _repaintTimer.addEventListener("timer", repaintHandler);
-
- createDisplayContainer();
- }
-
- private function onframeenter(event:Event):void{
- if(!_dupImageClicked){return;}
-
- if(_docLoader!=null && _docLoader.IsSplit)
- return;
-
- if(event.target.content != null){
- if (event.target.parent is DupImage &&
- event.target.content.currentFrame!=(event.target.parent as DupImage).dupIndex
- && _dupImageClicked){
- var np:int = event.target.content.currentFrame;
- event.target.content.gotoAndStop((event.target.parent as DupImage).dupIndex);
- gotoPage(np);
- }
- }
- }
-
- private function updComplete(event:Event):void {
- if(_scrollToPage>0){
- _paperContainer.verticalScrollPosition = _pageList[_scrollToPage-1].y;
- //_paperContainer.horizontalScrollPosition = 0;
- _scrollToPage = 0;
- }
-
- repaint();
- //repositionPapers();
- }
-
- private function repaintHandler(e:Event):void {
- if(_loadTimer!=null){
- _loadTimer.reset();
- _loadTimer.start();
- }
-
- repositionPapers();
- _repaintTimer.stop();
- _repaintTimer.delay = 5;
- }
-
- private function loadtimer(e:Event):void {
- if(_loadTimer!=null)
- _loadTimer.stop();
-
- repositionPapers();
- }
-
- private function bytesLoaded(event:Event):void{
- event.target.loader.loaded = true;
-
- var bFound:Boolean=false;
-
- // Split up approach
- if(_docLoader!=null && _docLoader.IsSplit){
- event.target.loader.loading = false;
-
- if(event.target.loader.content!=null && event.target.loader.content is MovieClip){event.target.loader.content.stop();}
-
- for(var i:int=0;i<_docLoader.LoaderList.length;i++){
- if(_docLoader.LoaderList[i].loading){
- bFound = true;
- break;
- }
- }
-
- _frameLoadCount = numPages;
- _bbusyloading = false;
- _displayContainer.visible = true;
-
- if(!bFound){
- dispatchEvent(new PageLoadedEvent(PageLoadedEvent.PAGE_LOADED,event.target.loader.pageStartIndex));
-
- if(_fitPageOnLoad&&((_paperContainer.height / _libMC.height)>0)){FitMode = FitModeEnum.FITHEIGHT;_fitPageOnLoad=false;_scrollToPage=1;_pscale=_scale;}
- if(_fitWidthOnLoad&&((_paperContainer.width / _libMC.width)>0)){FitMode = FitModeEnum.FITWIDTH;_fitWidthOnLoad=false;_scrollToPage=1;_pscale=_scale;}
- }
-
- repaint();
- }else{ // normal file approach
- if(event.target.loader.content!=null){event.target.loader.content.stop();}
-
- if(!ProgressiveLoading || (ProgressiveLoading && _libMC.framesLoaded == _libMC.totalFrames)){
- for(var i:int=0;i<_docLoader.LoaderList.length;i++){
- if(!_docLoader.LoaderList[i].loaded && !(_docLoader.LoaderList[i].parent is DupImage)){
- _docLoader.LoaderList[i].unloadAndStop(true);
- _docLoader.LoaderList[i].loadBytes(_inputBytes,StreamUtil.getExecutionContext());
- bFound = true;
- break;
- }
- }
- }
-
- if(!bFound){
- _bbusyloading = false;
- if(_fitPageOnLoad){FitMode = FitModeEnum.FITHEIGHT;_fitPageOnLoad=false;_scrollToPage=1;_pscale=_scale;}
- if(_fitWidthOnLoad){FitMode = FitModeEnum.FITWIDTH;_fitWidthOnLoad=false;_scrollToPage=1;_pscale=_scale;}
- _displayContainer.visible = true;
-
- if( _libMC.framesLoaded == _libMC.totalFrames && _frameLoadCount != _libMC.framesLoaded){
- dispatchEvent(new DocumentLoadedEvent(DocumentLoadedEvent.DOCUMENT_LOADED,numPages));
- _frameLoadCount = _libMC.framesLoaded;
- }
- }
- }
- }
-
- public function repositionPapers():void{
- if(_docLoader==null){return;}
- if(_docLoader!=null&&_docLoader.LoaderList==null||numPagesLoaded==0){return;}
-
- {
- var loaderidx:int=0;
- var bFoundFirst:Boolean = false;
- var _thumb:Bitmap;
- var _thumbData:BitmapData;
- var uloaderidx:int=0;
- var p:int=-1;
- var pl:int=0;
-
- for(var i:int=0;i<_pageList.length;i++){
- if(ViewMode == ViewModeEnum.TILE){
- if(!bFoundFirst && ((i) * (_pageList[i].height + 6)) >= _paperContainer.verticalScrollPosition){
- bFoundFirst = true;
- p = i + 1;
- }
- }
- else if(ViewMode == ViewModeEnum.PORTRAIT){
- if(!bFoundFirst)
- {
- var perH:int=0;
- if(_pageList.length>1)
- {
- var nowpH:Number = 0;
- var nowP:Number = 0;
-
- while(_paperContainer.verticalScrollPosition+1>nowpH && nowP-1<_pageList.length){
- nowP++;
-
- if(nowP<_pageList.length)
- nowpH+=_pageList[nowP].y-_pageList[nowP-1].y;
- else if(nowP>=_pageList.length)
- nowpH+=_pageList[_pageList.length-1].y-_pageList[_pageList.length-2].y;
- }
-
- if(0<nowP<0.5)
- p = 1;
- else if(nowP>=(_pageList.length-0.5))
- p = _pageList.length;
- else{
- p = Math.round(nowP);
- if(_pageList.length>p-1&&_paperContainer.verticalScrollPosition<_pageList[p-1].y && p!=_pageList.length){
- p-=1;
- }
- }
- bFoundFirst = true;
- }
- else
- {
- bFoundFirst = true;
- p = 1;
- }
- }
- }
-
- if(p>numPages)
- return;
-
- if(UsingExtViewMode){
- if(currPage != CurrExtViewMode.currentPage)
- dispatchEvent(new CurrentPageChangedEvent(CurrentPageChangedEvent.PAGE_CHANGED,CurrExtViewMode.currentPage));
-
- p = CurrExtViewMode.currentPage;
- currPage = p;
- }
-
- if(p>0&&p!=_currPage){
- currPage = p;
- dispatchEvent(new CurrentPageChangedEvent(CurrentPageChangedEvent.PAGE_CHANGED,p));
- }
-
- if(_libMC!=null&&checkIsVisible(i)){
- if(_pageList[i].numChildren<4){
- if(ViewMode == ViewModeEnum.PORTRAIT){
-
- if(_docLoader.IsSplit)
- uloaderidx = finduloaderIdx(_pageList[i].dupIndex);
-
- if(!_docLoader.IsSplit || uloaderidx == -1)
- uloaderidx = (i==_pageList.length-1&&loaderidx+3<_docLoader.LoaderList.length)?loaderidx+3:(loaderidx<_docLoader.LoaderList.length)?loaderidx:0;
-
- if(!_docLoader.IsSplit){
- if(!_bbusyloading && _docLoader.LoaderList!=null && _docLoader.LoaderList.length>0){
- if(numPagesLoaded>=_pageList[i].dupIndex && _docLoader.LoaderList[uloaderidx] != null && _docLoader.LoaderList[uloaderidx].content==null||(_docLoader.LoaderList[uloaderidx].content!=null&&_docLoader.LoaderList[uloaderidx].content.framesLoaded<_pageList[i].dupIndex)){
- _bbusyloading = true;
- _docLoader.LoaderList[uloaderidx].unloadAndStop(true);
- _docLoader.LoaderList[uloaderidx].loadBytes(_inputBytes,StreamUtil.getExecutionContext());
- flash.utils.setTimeout(repositionPapers,200);
- }
- }
-
- if((i<2||_pageList[i].numChildren==0||_pageList[i].loadedIndex!=_pageList[i].dupIndex||(_pageList[i]!=null&&_docLoader.LoaderList[uloaderidx]!=null&&_docLoader.LoaderList[uloaderidx].content!=null&&_docLoader.LoaderList[uloaderidx].content.currentFrame!=_pageList[i].dupIndex)) && _docLoader.LoaderList[uloaderidx] != null && _docLoader.LoaderList[uloaderidx].content != null){
- if(numPagesLoaded >= _pageList[i].dupIndex){
- _docLoader.LoaderList[uloaderidx].content.gotoAndStop(_pageList[i].dupIndex);
- _pageList[i].addChild(_docLoader.LoaderList[uloaderidx]);
- _pageList[i].loadedIndex = _pageList[i].dupIndex;
- /*
- if(_libMC.width*_scale>0&&_libMC.height*_scale>0){
- _libMC.gotoAndStop(_pageList[i].dupIndex);
- _thumbData = new BitmapData(_libMC.width*_scale, _libMC.height*_scale, false, 0xFFFFFF);
- _thumb = new Bitmap(_thumbData);
- _pageList[i].source = _thumb;
- _thumbData.draw(_libMC,new Matrix(_scale, 0, 0, _scale),null,null,null,true);
- } */
- }
- }
- }
-
- if(_docLoader.IsSplit){
- if(!_bbusyloading && _docLoader.LoaderList!=null && _docLoader.LoaderList.length>0){
- if(_docLoader.LoaderList[uloaderidx] != null && _docLoader.LoaderList[uloaderidx].pageStartIndex != _pageList[i].dupIndex && !_loadTimer.running && !_docLoader.LoaderList[uloaderidx].loading){
- dispatchEvent(new PageLoadingEvent(PageLoadingEvent.PAGE_LOADING,_pageList[i].dupIndex));
- try{
- _pageList[i].resetPage(_libMC.width,_libMC.height,_scale,true);
- _docLoader.LoaderList[uloaderidx].unloadAndStop(true);
- _docLoader.LoaderList[uloaderidx].loaded = false;
- _docLoader.LoaderList[uloaderidx].loading = true;
- _docLoader.LoaderList[uloaderidx].load(new URLRequest(getSwfFilePerPage(_swfFile,_pageList[i].dupIndex)),StreamUtil.getExecutionContext());
- _docLoader.LoaderList[uloaderidx].pageStartIndex = _pageList[i].dupIndex;
- }catch(err:IOErrorEvent){}
-
- repaint();
-
- }
- }
-
- if((_pageList[i].numChildren==0||(_pageList[i]!=null&&_docLoader.LoaderList[uloaderidx]!=null&&_docLoader.LoaderList[uloaderidx].content!=null)) && _docLoader.LoaderList[uloaderidx] != null && _docLoader.LoaderList[uloaderidx].content != null && _docLoader.LoaderList[uloaderidx].loaded && _docLoader.LoaderList[uloaderidx].pageStartIndex == _pageList[i].dupIndex){
- if(numPagesLoaded >= _pageList[i].dupIndex||true){
- if(_docLoader.LoaderList[uloaderidx].parent != null)
- _docLoader.LoaderList[uloaderidx].parent.removeChild(_docLoader.LoaderList[uloaderidx]);
-
- _pageList[i].addChild(_docLoader.LoaderList[uloaderidx]);
- _pageList[i].loadedIndex = _pageList[i].dupIndex;
-
- if((_performSearchOnPageLoad && _pendingSearchPage == _pageList[i].dupIndex)||(SearchMatchAll && prevSearchText.length>0)){
- _performSearchOnPageLoad = false;
- searchTextByService(prevSearchText)
- }
- }
- }
- }
-
- }else if(ViewMode == ViewModeEnum.TILE && _pageList[i].source == null && (numPagesLoaded >= _pageList[i].dupIndex||_docLoader.IsSplit)){
- if(!_docLoader.IsSplit){
- _libMC.gotoAndStop(_pageList[i].dupIndex);
- _thumbData = new BitmapData(_libMC.width*_scale, _libMC.height*_scale, false, 0xFFFFFF);
- _thumb = new Bitmap(_thumbData);
- _pageList[i].source = _thumb;
- _thumbData.draw(_libMC.getDocument(),new Matrix(_scale, 0, 0, _scale),null,null,null,true);
- }else{
-
- if(!_bbusyloading && !_loadTimer.running && _docLoader.LoaderList!=null && _docLoader.LoaderList.length>0 && !_docLoader.LoaderList[uloaderidx].loading){
- dispatchEvent(new PageLoadingEvent(PageLoadingEvent.PAGE_LOADING,_pageList[i].dupIndex));
-
- try{
- _pageList[i].resetPage(_libMC.width,_libMC.height,_scale,true);
- _docLoader.LoaderList[uloaderidx].loaded = false;
- _docLoader.LoaderList[uloaderidx].loading = true;
- _docLoader.LoaderList[uloaderidx].load(new URLRequest(getSwfFilePerPage(_swfFile,_pageList[i].dupIndex)),StreamUtil.getExecutionContext());
- _docLoader.LoaderList[uloaderidx].pageStartIndex = _pageList[i].dupIndex;
- }catch(err:IOErrorEvent){}
-
- repaint();
- }
-
- if(_docLoader.LoaderList[uloaderidx].pageStartIndex == _pageList[i].dupIndex && _pageList[i].loadedIndex != _pageList[i].dupIndex && _docLoader.LoaderList[uloaderidx].content!=null){
- _thumbData = new BitmapData(_docLoader.LoaderList[uloaderidx].width*_scale, _docLoader.LoaderList[uloaderidx].height*_scale, false, 0xFFFFFF);
- _thumb = new Bitmap(_thumbData);
- _pageList[i].source = _thumb;
- _pageList[i].loadedIndex = _pageList[i].dupIndex;
- _thumbData.draw(_docLoader.LoaderList[uloaderidx],new Matrix(_scale, 0, 0, _scale),null,null,null,true);
- }
- }
-
- if(_pluginList!=null){
- for(pl=0;pl<_pluginList.length;pl++){
- _pluginList[pl].drawSelf(i,_thumbData,_scale);
- }
- }
- }
- }
-
- if(UsingExtViewMode){
- CurrExtViewMode.renderPage(i);
-
- if(_selectionMarker!=null)
- CurrExtViewMode.renderSelection(i,_selectionMarker);
- }
-
- if((_viewMode == ViewModeEnum.PORTRAIT) && _selectionMarker != null){
- if(i+1 == searchPageIndex && _selectionMarker.parent != _pageList[i]){
- _pageList[i].addChildAt(_selectionMarker,_pageList[i].numChildren);
- }else if(i+1 == searchPageIndex && _selectionMarker.parent == _pageList[i]){
- _pageList[i].setChildIndex(_selectionMarker,_pageList[i].numChildren -1);
- }
- }
-
- if(_viewMode != ViewModeEnum.TILE && !UsingExtViewMode && _markList[i] != null){
- if(_markList[i].parent != _pageList[i]){
- _pageList[i].addChildAt(_markList[i],_pageList[i].numChildren);
- }else{
- _pageList[i].setChildIndex(_markList[i],_pageList[i].numChildren -1);
- }
- }
-
- if(UsingExtViewMode && _markList[i] != null){
- CurrExtViewMode.renderMark(_markList[i],i);
- }
-
- loaderidx++;
- }else{
- if(_pageList[i].numChildren>0 || _pageList[i].source != null){
- _pageList[i].source = null;
-
- if(_tweencount == 0)
- _pageList[i].resetPage(_libMC.width,_libMC.height,_scale);
- else
- _pageList[i].removeAllChildren();
-
- _pageList[i].loadedIndex = -1;
- }
- }
-
- // plugins should be rendered even if not visible to allow printing to work
- if(_viewMode != ViewModeEnum.TILE){
- if(_pluginList!=null){
- for(pl=0;pl<_pluginList.length;pl++){
- _pluginList[pl].drawSelf(i,_pageList[i],_scale);
- }
- }
- }
- }
- }
- }
-
- private function padString(_str:String, _n:Number, _pStr:String):String
- {
- var _rtn:String = _str;
- if ((_pStr == null) || (_pStr.length < 1))
- {
- _pStr = " ";
- }
-
- if (_str.length < _n)
- {
- var _s:String = "";
- for (var i:Number = 0 ; i < (_n - _str.length) ; i++)
- {
- _s += _pStr;
- }
- _rtn = _s + _str;
- }
-
- return _rtn;
- }
-
- private function finduloaderIdx(idx:int):int{
- for(var i:int=0;i<_docLoader.LoaderList.length;i++){
- if(_docLoader.LoaderList[i].pageStartIndex == idx)
- return i;
- }
- for(var i:int=0;i<_docLoader.LoaderList.length;i++){
- if(!checkIsVisible(_docLoader.LoaderList[i].pageStartIndex))
- return i;
- }
- return -1;
- }
-
- public function repaint():void{
- _repaintTimer.reset();_repaintTimer.start();
- }
-
- private function getVisibleMidPage():Number{
- var lowPageNum:int = -1;
- var highPageNum:int = -1;
-
- for(var i:int=0;i<_pageList.length;i++){
- if(lowPageNum==-1 && checkIsVisible(i)){
- lowPageNum = i;
- }
-
- if(lowPageNum!=-1 && checkIsVisible(i)){
- highPageNum = i;
- }
- }
-
- if(highPageNum - lowPageNum == 1 && _pageList.length<3){
- return lowPageNum;
- }else{
- var retval:Number = Math.round(lowPageNum + (highPageNum - lowPageNum) / 2);
- if(retval<0){retval=0;}
- if(retval>_pageList.length-1){retval=_pageList.length-1;}
-
- return retval;
- }
- }
-
- private function checkIsVisible(pageIndex:int):Boolean{
- try{
- if(ViewMode == ViewModeEnum.TILE){
- return _pageList[pageIndex].parent.y + _pageList[pageIndex].height >= _paperContainer.verticalScrollPosition &&
- (_pageList[pageIndex].parent.y - _pageList[pageIndex].height) < (_paperContainer.verticalScrollPosition + _paperContainer.height);
- }
- else if(!UsingExtViewMode){
- if(_paperContainer.height <= 0)
- return false;
-
- return (_pageList[pageIndex].y + (_pageList[pageIndex].getScaledHeight() + 6)) >= _paperContainer.verticalScrollPosition &&
- (_pageList[pageIndex].y - (_pageList[pageIndex].getScaledHeight() + 6)) < (_paperContainer.verticalScrollPosition + _paperContainer.height);
- }
-
- if(UsingExtViewMode)
- return CurrExtViewMode.checkIsVisible(pageIndex);
-
- }catch(e:Error){
- return false;
- }
- return false;
- }
-
- public function createDisplayContainer():void{
- if(_skinImgDo != null && _skinImgDo.parent == this){
- removeChild(_skinImgDo);
- _skinImgDo.removeEventListener(MouseEvent.MOUSE_OVER,skinMouseOver);
- _skinImgDo.removeEventListener(MouseEvent.MOUSE_OUT,skinMouseOut);
- _skinImgDo.removeEventListener(MouseEvent.MOUSE_DOWN,skinMouseDown);
- }
-
- _skinImgDo = new Image();
- _skinImgDo.source = _skinImg;
- _skinImgDo.x = this.width-_skinImg.width - 27; _skinImgDo.y = this.height-_skinImg.height - 10;
- _skinImgDo.addEventListener(MouseEvent.MOUSE_OVER,skinMouseOver,false,0,true);
- _skinImgDo.addEventListener(MouseEvent.MOUSE_OUT,skinMouseOut,false,0,true);
- _skinImgDo.addEventListener(MouseEvent.MOUSE_DOWN,skinMouseDown,false,0,true);
- _skinImgDo.buttonMode = true;
- addChild(_skinImgDo);
-
- // Add the swf to the invisible container.
- _swfContainer.removeAllChildren();
- var uic:UIComponent = new UIComponent();
- _swfContainer.addChild(uic);
-
- if(_docLoader!=null && _docLoader.DocumentContainer != null)
- uic.addChild(_docLoader.DocumentContainer);
-
- if(_paperContainer !=null && _paperContainer.parent == this){
- removeChild(_paperContainer);
- _paperContainer.removeEventListener(FlexEvent.UPDATE_COMPLETE,updComplete);
-
- _paperContainer.removeEventListener(MouseEvent.MOUSE_WHEEL, wheelHandler);
- }
-
- _paperContainer = new ZoomCanvas();
- _paperContainer.percentHeight = 100;
- _paperContainer.percentWidth = 100;
- _paperContainer.addEventListener(FlexEvent.UPDATE_COMPLETE,updComplete,false,0,true);
- _paperContainer.x = (ViewMode==ViewModeEnum.PORTRAIT||ViewMode==ViewModeEnum.TILE)?2.5:0;
- _paperContainer.addEventListener(MouseEvent.MOUSE_WHEEL, wheelHandler,false,0,true);
- _paperContainer.setStyle("horizontalGap",1);
- _paperContainer.setStyle("verticalGap",0);
-
- addChildAt(_paperContainer,getChildIndex(_skinImgDo)-1);
-
- try{
- new flash.net.LocalConnection().connect('devaldiGCdummy');
- new flash.net.LocalConnection().connect('devaldiGCdummy');
- } catch (e:*) {}
-
- try{flash.system.System.gc();} catch (e:*) {}
-
- if(_paperContainer.numChildren>0){_paperContainer.removeAllChildren();}
-
- deleteDisplayContainer();
-
- if(_viewMode == ViewModeEnum.TILE){
- _displayContainer = new FlowBox();
- _displayContainer.setStyle("horizontalAlign", "left");
- _paperContainer.horizontalScrollPolicy = "off";
- _scale = 0.243;
- _paperContainer.addChild(_displayContainer);
- _paperContainer.childrenDoDrag = true;
- _initialized=true;
- }
- else if(UsingExtViewMode){
- _initialized = CurrExtViewMode.initComponent(this);
- }
- else{
- _displayContainer = new FlowVBox();
- _displayContainer.setStyle("horizontalAlign", "center");
- _paperContainer.addChild(_displayContainer);
- _paperContainer.childrenDoDrag = true;
- _initialized=true;
- }
-
- _displayContainer.verticalScrollPolicy = "off";
- _displayContainer.horizontalScrollPolicy = "off";
- _displayContainer.setStyle("verticalAlign", "center");
- _displayContainer.percentHeight = 100;
- _displayContainer.percentWidth = (ViewMode==ViewModeEnum.PORTRAIT)?96:100;
- _displayContainer.useHandCursor = true;
- _displayContainer.addEventListener(MouseEvent.ROLL_OVER,displayContainerrolloverHandler,false,0,true);
- _displayContainer.addEventListener(MouseEvent.ROLL_OUT,displayContainerrolloutHandler,false,0,true);
- _displayContainer.addEventListener(MouseEvent.MOUSE_DOWN,displayContainerMouseDownHandler,false,0,true);
- _displayContainer.addEventListener(MouseEvent.MOUSE_UP,displayContainerMouseUpHandler,false,0,true);
- _displayContainer.addEventListener(MouseEvent.DOUBLE_CLICK,displayContainerDoubleClickHandler,false,0,true);
- //_displayContainer.mouseChildren = false;
- _displayContainer.doubleClickEnabled = true;
- }
-
- private function displayContainerrolloverHandler(event:MouseEvent):void{
-
- if(_viewMode==ViewModeEnum.PORTRAIT||(UsingExtViewMode && CurrExtViewMode.supportsTextSelect)){
- if(TextSelectEnabled && CursorsEnabled){
- _grabCursorID = CursorManager.setCursor(MenuIcons.TEXT_SELECT_CURSOR);
- }else if(CursorsEnabled){
- resetCursor();
- }
- }
- }
-
- private function displayContainerMouseUpHandler(event:MouseEvent):void{
- if(_viewMode==ViewModeEnum.PORTRAIT||(UsingExtViewMode && CurrExtViewMode.supportsTextSelect)){
-
- if(CursorsEnabled)
- CursorManager.removeCursor(_grabbingCursorID);
-
- if(TextSelectEnabled && CursorsEnabled){
- _grabCursorID = CursorManager.setCursor(MenuIcons.TEXT_SELECT_CURSOR);
- }else if(CursorsEnabled && !(event.target is IFlexPaperPluginControl) || (event.target.parent !=null && event.target.parent.parent !=null && event.target.parent.parent is IFlexPaperPluginControl)){
- resetCursor();
- }
- }
- }
-
- private function displayContainerDoubleClickHandler(event:MouseEvent):void{
- if(TextSelectEnabled){return;}
- if(ViewMode == ViewModeEnum.PORTRAIT)
- FitMode = (FitMode == FitModeEnum.FITWIDTH)?FitModeEnum.FITHEIGHT:FitModeEnum.FITWIDTH;
-
- if(UsingExtViewMode)
- CurrExtViewMode.handleDoubleClick(event);
- }
-
- private function displayContainerMouseDownHandler(event:MouseEvent):void{
- if(_viewMode==ViewModeEnum.PORTRAIT||(UsingExtViewMode && CurrExtViewMode.supportsTextSelect)){
-
- if(CursorsEnabled)
- CursorManager.removeCursor(_grabCursorID);
-
- if(TextSelectEnabled && CursorsEnabled){
- _grabbingCursorID = CursorManager.setCursor(MenuIcons.TEXT_SELECT_CURSOR);
- }else if(CursorsEnabled){
- _grabbingCursorID = CursorManager.setCursor(MenuIcons.GRABBING);
- }
- }
-
- if(UsingExtViewMode)
- CurrExtViewMode.handleMouseDown(event);
- }
-
- private function displayContainerrolloutHandler(event:Event):void{
- if(CursorsEnabled)
- CursorManager.removeAllCursors();
- }
-
- private function wheelHandler(evt:MouseEvent):void {
- _paperContainer.removeEventListener(MouseEvent.MOUSE_WHEEL, wheelHandler);
-
- var t:Timer = new Timer(1,1);
- t.addEventListener("timer", addMouseScrollListener,false,0,true);
- t.start();
-
- _paperContainer.dispatchEvent(evt.clone());
- }
-
- private function addMouseScrollListener(e:Event):void {
- _paperContainer.addEventListener(MouseEvent.MOUSE_WHEEL, wheelHandler,false,0,true);
- }
-
- private function keyboardHandler(event:KeyboardEvent):void{
- if(event.keyCode == Keyboard.DOWN){
- _paperContainer.verticalScrollPosition = _paperContainer.verticalScrollPosition + 10;
- }
- if(event.keyCode == Keyboard.UP){
- _paperContainer.verticalScrollPosition = _paperContainer.verticalScrollPosition - 10;
- }
- if(event.keyCode == Keyboard.PAGE_DOWN){
- _paperContainer.verticalScrollPosition = _paperContainer.verticalScrollPosition + 300;
- }
- if(event.keyCode == Keyboard.PAGE_UP){
- _paperContainer.verticalScrollPosition = _paperContainer.verticalScrollPosition - 300;
- }
- if(event.keyCode == Keyboard.HOME){
- _paperContainer.verticalScrollPosition = 0;
- }
- if(event.keyCode == Keyboard.END){
- _paperContainer.verticalScrollPosition = _paperContainer.maxVerticalScrollPosition;
- }
- }
-
- private function sizeChanged(evt:Event):void{
- _skinImgDo.source = _skinImg;
- _skinImgDo.x = this.width-_skinImg.width - 27; _skinImgDo.y = this.height-_skinImg.height - 10;
- }
-
- private function skinMouseOver(evt:MouseEvent):void{
- _skinImgDo.addChild(_skinImgc);
- }
-
- private function skinMouseOut(evt:MouseEvent):void{
- if(_skinImgc.parent==_skinImgDo){_skinImgDo.removeChild(_skinImgc);}
- }
-
- private function skinMouseDown(evt:MouseEvent):void{
- dispatchEvent(new …
Large files files are truncated, but you can click here to view the full file