import com.tubes.BuckyThreadTube; import com.events.EventBroadcaster; import com.oop.GridSelectionSystem; import com.services.BuckyServices; class com.keywords.KeywordSelectionSystem extends GridSelectionSystem { private var tube:BuckyThreadTube; private var cockblocker:Boolean = false; // to discourage crazy button clickage private var lastClicked:Number; // failsafe for crazy button clickage private function doAction():Void { if (!cockblocker) { eraseExistingSpinners(); lastClicked = currentSelection; BuckyServices.setActiveKeyword ( selectedData() ); EventBroadcaster.getInstance().addEventListener("threadListMade", this); var tag_preamble:String; if (selectedData().isTag) { tag_preamble = "tag_"; } else { tag_preamble = ""; } tube = new BuckyThreadTube ( BuckyServices.threads + tag_preamble + selectedData().name); startButtonSpinner(); cockblocker = true; } } private function eraseExistingSpinners():Void { for (var i:Number = 0 ; i < listItems.length ; i++) { var t:MovieClip = listItems[i]; t.element_mc._visible = true; t.element_mc.element_txt.text = t.elementSymbol; t["spinnerHolder"].removeMovieClip(); // kill if exists .. fail silently if not } EventBroadcaster.getInstance().removeEventListener("threadListMade", this); } private function startButtonSpinner():Void { var t:MovieClip = listItems[currentSelection]; t.element_mc._visible = false; t.createEmptyMovieClip ("spinnerHolder", t.getNextHighestDepth()); t["spinnerHolder"].attachMovie ("Spinner", "spinner" , 100, {_x:40, _y:29, _width:27, _height:27}); } private function threadListMade (_evt:Object):Void { eraseExistingSpinners(); if ((tube.articles.length != undefined) && (tube.articles.length != 0)) { BuckyServices.threadsMC.doLoad( tube.articles, "ThreadButton" ); EventBroadcaster.getInstance().broadcastEvent("switchToThreadsView", this); BuckyServices.setActiveKeyword ( selectedData() ); setCurrentSelection ( currentSelection ); cockblocker = false; } else if (tube.articles.length == 0) { drawFrownyFace(); cockblocker = false; } else { trace ("sigh, some other weird scenario"); } } private function drawFrownyFace():Void { listItems[lastClicked].element_mc.element_txt.text = listItems[lastClicked].elementSymbol = ":("; } public function setSelection(_id:Number):Void { // overriding existing selection system's setSelection so tiles that get // clicked do not killMouseEvents() -- the same tile can be clicked over and over. listItems[currentSelection].setUnselected(); currentSelection = _id; listItems[currentSelection].setSelected(); doAction(); } };