home *** CD-ROM | disk | FTP | other *** search
- package com.terrypaton.ui
- {
- import com.terry.Broadcaster;
- import com.terrypaton.events.DropdownEvents;
- import flash.display.MovieClip;
- import flash.events.MouseEvent;
- import flash.geom.Rectangle;
-
- public class DropdownClass extends MovieClip
- {
- private static var DS_CLOSED:int = 0;
-
- private static var DS_OPEN:int = 1;
-
- public var back:MovieClip;
-
- private var btnHeight:Number = 27;
-
- private var btnWidth:Number = 226;
-
- private var _holder:MovieClip;
-
- private var _marker:MovieClip;
-
- private var _clip:MovieClip;
-
- private var _back:MovieClip;
-
- private var closedRect:Rectangle;
-
- private var openRect:Rectangle;
-
- private var currentSelectedItem:int = 0;
-
- private var dropDownState:int;
-
- private var buttonHeight:Number;
-
- public function DropdownClass()
- {
- closedRect = new Rectangle();
- openRect = new Rectangle();
- super();
- currentSelectedItem = 0;
- dropDownState = DS_CLOSED;
- this.addEventListener(MouseEvent.CLICK,mouseClickHandler);
- this.addEventListener(MouseEvent.ROLL_OUT,mouseLeaveHandler);
- Broadcaster.addEventListener(DropdownEvents.CLOSE_DROP_DOWN,closeMenu);
- }
-
- public function setup(param1:Array) : void
- {
- _holder = new MovieClip();
- this.addChild(_holder);
- _back = this.back;
- _holder.addChild(_back);
- var _loc2_:int = int(param1.length);
- var _loc3_:int = 0;
- var _loc4_:int = 0;
- while(_loc4_ < _loc2_)
- {
- _clip = new DD_button();
- _clip.id = _loc4_;
- _clip.y = _loc3_;
- _clip.mouseChildren = false;
- _clip.textBox.text = param1[_loc4_];
- _clip.addEventListener(MouseEvent.ROLL_OVER,btnRollOver);
- _clip.addEventListener(MouseEvent.ROLL_OUT,btnRollOut);
- _holder.addChild(_clip);
- _loc3_ += btnHeight;
- buttonHeight = btnHeight;
- _loc4_++;
- }
- closedRect.height = btnHeight;
- openRect.height = _loc3_;
- closedRect.width = openRect.width = btnWidth;
- _holder.scrollRect = closedRect;
- this.back.height = openRect.height;
- this.back.width = openRect.width;
- _marker = new DD_marker();
- _marker.mouseChildren = false;
- _marker.mouseEnabled = false;
- _marker.visible = false;
- this.addChild(_marker);
- }
-
- public function getCurrentItem() : int
- {
- return currentSelectedItem;
- }
-
- public function btnRollOver(param1:MouseEvent) : void
- {
- if(dropDownState == DS_OPEN)
- {
- _clip = param1.target as MovieClip;
- _clip.gotoAndPlay("over");
- }
- }
-
- public function btnRollOut(param1:MouseEvent) : void
- {
- if(dropDownState == DS_OPEN)
- {
- _clip = param1.target as MovieClip;
- _clip.gotoAndPlay("out");
- }
- }
-
- public function mouseClickHandler(param1:MouseEvent) : void
- {
- var _loc2_:Object = null;
- if(dropDownState == DS_CLOSED)
- {
- _holder.scrollRect = openRect;
- dropDownState = DS_OPEN;
- _marker.visible = true;
- _marker.y = buttonHeight * currentSelectedItem;
- }
- else
- {
- _clip = param1.target as MovieClip;
- if(_clip.id != null)
- {
- if(currentSelectedItem != _clip.id)
- {
- currentSelectedItem = _clip.id;
- _clip.gotoAndPlay("out");
- _loc2_ = new Object();
- _loc2_.id = currentSelectedItem;
- Broadcaster.dispatchEvent(new DropdownEvents(DropdownEvents.NEW_ITEM_SELECTED,true,_loc2_));
- }
- }
- Broadcaster.dispatchEvent(new DropdownEvents(DropdownEvents.CLOSE_DROP_DOWN));
- }
- }
-
- private function closeMenu(param1:DropdownEvents) : void
- {
- _marker.visible = false;
- closedRect.y = buttonHeight * currentSelectedItem;
- _holder.scrollRect = closedRect;
- dropDownState = DS_CLOSED;
- }
-
- public function mouseLeaveHandler(param1:MouseEvent) : void
- {
- Broadcaster.dispatchEvent(new DropdownEvents(DropdownEvents.CLOSE_DROP_DOWN));
- }
- }
- }
-
-