import mx.utils.Delegate; import com.services.BuckyServices; import com.events.EventBroadcaster; import mx.transitions.easing.Regular; import mx.transitions.Tween; class com.oop.SelectionSwitcher extends MovieClip { private static var slideAround:Boolean = true; // turn off while debugging only private var selectionsMC:MovieClip; // all scrolling selection systems private var initX:Number; // where they start private var initY:Number; private var bb:MovieClip; // back button private var bbX:Number; // starting positions of nav buttons; private var thX:Number; private var kwX:Number; private var initAlpha:Number = 70; private var openKeywordsBtn:MovieClip; // open keywords button private var openThreadBtn:MovieClip; // open threads button private var currentView:String; // might as well be a string private var agreedAlpha:Number = 75; private var slideAmountX:Number = 210; private var slideAmountY:Number = 210; private var slideSpeed:Number = .4 private var activeThread:String; // to open a new browser window instead of // switching to keyword/thread/file view. public function SelectionSwitcher() { establishStartingPoints(); EventBroadcaster.getInstance().addEventListener("switchToKeywordsView", this); EventBroadcaster.getInstance().addEventListener("switchToThreadsView", this); EventBroadcaster.getInstance().addEventListener("switchToFilesView", this); EventBroadcaster.getInstance().addEventListener("switchToFeedThreadsView", this); bb.onRelease = Delegate.create (this, handleBackButton); openKeywordsBtn.onRelease = Delegate.create (this, handleOpenKeywordsBtn); openThreadBtn.onRelease = Delegate.create (this, handleOpenThreadBtn); } private function handleBackButton():Void { switch (currentView) { case "threads" : switchToKeywordsView(); break; case "files" : switchToThreadsView(); break; case "feeds" : switchToFeedsView(); break; default : break; } } private function establishStartingPoints():Void { initX = selectionsMC._x; initY = selectionsMC._y; bbX= bb._x; thX= openThreadBtn._x; kwX= openKeywordsBtn._x; currentView = "keywords"; hideBackButton(); hideOpenThreadBtn(); hideOpenKeywordsBtn(); bb._alpha = openKeywordsBtn._alpha = openThreadBtn._alpha = initAlpha; } private function swapPlaces(_inA:MovieClip, _inB:MovieClip):Void { var oldX:Number = _inA._x; var oldY:Number = _inA._y; _inA._x = _inB._x; _inA._y = _inB._y; _inB._x = oldX; _inB._y = oldY; } private function handleOpenKeywordsBtn():Void { switchToKeywordsView(); } public function handleOpenThreadBtn():Void { getURL ( BuckyServices.activeThreadPath , "_blank"); } public function switchToKeywordsView(_evt:Object):Void { removeAnyThumbnails(); hideBackButton(); hideOpenKeywordsBtn(); hideOpenThreadBtn(); _root.thumbnail.removeMovieClip(); // swapPlaces ( BuckyServices.threadsMC , BuckyServices.feedThreadsMC ); if (slideAround) { var sTween = new Tween(selectionsMC, "_x", Regular.easeOut, selectionsMC._x, initX, slideSpeed, true); } currentView = "keywords"; } public function switchToFeedsView(_evt:Object):Void { removeAnyThumbnails(); hideBackButton(); hideOpenKeywordsBtn(); hideOpenThreadBtn(); _root.thumbnail.removeMovieClip(); // swapPlaces ( BuckyServices.threadsMC , BuckyServices.feedThreadsMC ); if (slideAround) { var xTween = new Tween(selectionsMC, "_x", Regular.easeOut, selectionsMC._x, initX, slideSpeed, true); var yTween = new Tween(selectionsMC, "_y", Regular.easeOut, selectionsMC._y, initY, slideSpeed, true); } currentView = "feeds"; } public function switchToThreadsView(_evt:Object):Void { removeAnyThumbnails(); hideOpenKeywordsBtn(); hideOpenThreadBtn(); _root.thumbnail.removeMovieClip(); if (slideAround) { var sTween = new Tween(selectionsMC, "_x", Regular.easeOut, selectionsMC._x, -slideAmountX, slideSpeed, true); sTween.onMotionFinished = Delegate.create (this, showBackButton); } currentView = "threads"; } public function switchToFeedThreadsView(_evt:Object):Void { removeAnyThumbnails(); hideOpenKeywordsBtn(); hideOpenThreadBtn(); _root.thumbnail.removeMovieClip(); if (slideAround) { var sTween = new Tween(selectionsMC, "_y", Regular.easeOut, selectionsMC._y, -slideAmountY, slideSpeed, true); var sTween = new Tween(selectionsMC, "_x", Regular.easeOut, selectionsMC._x, -slideAmountX, slideSpeed, true); sTween.onMotionFinished = Delegate.create (this, showBackButton); } currentView = "feeds"; } public function switchToFilesView(_evt:Object):Void { // removeAnyThumbnails(); showOpenKeywordsBtn(); showOpenThreadBtn(); if (slideAround) { var sTween = new Tween(selectionsMC, "_x", Regular.easeOut, selectionsMC._x, -slideAmountX*2, slideSpeed, true); sTween.onMotionFinished = Delegate.create (this, showBackButton); } currentView = "files"; } public function removeAnyThumbnails():Void { _root.imagesHolder.thumbnail.unloadMovie(); } private function showBackButton():Void { bb._x = bbX; } private function showOpenKeywordsBtn():Void { openKeywordsBtn._x = kwX; } private function showOpenThreadBtn():Void { openThreadBtn._x = thX; } private function hideBackButton():Void { bb._x = -5000; } private function hideOpenKeywordsBtn():Void { openKeywordsBtn._x = -5000; } private function hideOpenThreadBtn():Void { openThreadBtn._x = -5000; } }