summaryrefslogtreecommitdiff
path: root/bPod/com/keywords/KeywordSelectionSystem.as
blob: 45183f41ea08a2a3960b830ca0d682d57f8895c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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();
	}
	

};