⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 searchbox.as

📁 java 和flex的整合,主要是spring和flex的整合,不可多得啊
💻 AS
字号:
package
{
	import flash.display.DisplayObject;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.events.MouseEvent;
	import flash.geom.Point;
	import flash.ui.Keyboard;
	
	import mx.collections.ArrayCollection;
	import mx.controls.Image;
	import mx.controls.List;
	import mx.controls.TextInput;
	import mx.core.IFlexDisplayObject;
	import mx.core.UIComponent;
	import mx.core.mx_internal;
	import mx.events.FlexMouseEvent;
	import mx.events.ListEvent;
	import mx.managers.IFocusManagerComponent;
	import mx.managers.PopUpManager;
	import mx.styles.ISimpleStyleClient;
	
	use namespace mx_internal;
	
	[Event(name="textChange", type="flash.events.Event")]
	[Event(name="select", type="flash.events.Event")]
	
	public class SearchBox extends UIComponent
	{
    	mx_internal var border:IFlexDisplayObject;		
		
		private var textInput:TextInput;

		[Embed(source="assets/search.png")]
		private var bSkin:Class;

		private var list:List;
		
		private var isListVisible:Boolean = false;
		
		private var _dataProvider:ArrayCollection;
		
		public var text:String;
		
		private var _labelFunction:Function;
		
		public function SearchBox()
		{
		}
		
		public function set dataProvider(dp:ArrayCollection):void
		{
			_dataProvider = dp;
			list.dataProvider = dp;
			if (dp != null && dp.length > 0)
			{
				 if (!isListVisible) popup();
				 list.selectedIndex = 0;
			}
			else
			{
				 if (isListVisible) removePopup();
			}
		}
		
		public function get dataProvider():ArrayCollection
		{
			return _dataProvider;
		}		
		
		public function set labelFunction(lf:Function):void
		{
			_labelFunction = lf;
			if (list)
			{
				list.labelFunction = lf;
			}
		}
		
		public function get labelFunction():Function
		{
			return _labelFunction;
		}		
		
		public function get selectedItem():Object
		{
			return list.selectedItem;
		}
		
		override protected function createChildren():void
		{
			super.createChildren();

			if (!border)
	        {
	            //var borderClass:Class = getStyle("borderSkin");
	            var borderClass:Class = bSkin;
	
	            if (borderClass)
	            {
	                border = new borderClass();
	
	                if (border is IFocusManagerComponent)
	                    IFocusManagerComponent(border).focusEnabled = false;
	
	                if (border is ISimpleStyleClient)
	                    ISimpleStyleClient(border).styleName = this;
	
	                addChild(DisplayObject(border));
	            }
	        }

            textInput = new TextInput();
            setStyle("backgroundColor", 0xFFFFFF);
            textInput.setStyle("focusThickness", 0);
            textInput.setStyle("borderSkin", null);
            setStyle("backgroundImage", "assets/search.png");
            
			textInput.addEventListener(Event.CHANGE, textInput_changeHandler);
			textInput.addEventListener(KeyboardEvent.KEY_DOWN, textInput_keyDownHandler);

   	    	textInput.move(0,0);
            addChild(textInput);
   	    	textInput.move(20,0);
			
			list = new List();
			list.height = 300;
			list.setStyle("dropShadowEnabled", true);
			if (_labelFunction != null)
			{
				list.labelFunction = _labelFunction;
			}
			list.doubleClickEnabled = true;
			list.addEventListener(ListEvent.ITEM_DOUBLE_CLICK, list_doubleClickHandler);
		}
	   	
		override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
		{
			super.updateDisplayList(unscaledWidth, unscaledHeight);
			border.setActualSize(unscaledWidth, unscaledHeight);
			textInput.width = unscaledWidth;
			textInput.height = unscaledHeight;
		}

		private function textInput_keyDownHandler(event:KeyboardEvent):void
		{
			switch (event.keyCode) 
			{
				case Keyboard.DOWN:
					if (!isListVisible)
					{
						popup();
					}
					else 
					{
						list.selectedIndex++;
						list.scrollToIndex(list.selectedIndex);
					}
    				break;
				case Keyboard.UP:
					if (isListVisible && list.selectedIndex > 0)
					{
						list.selectedIndex--;
						list.scrollToIndex(list.selectedIndex);
					}
					textInput.setSelection(textInput.text.length, textInput.text.length);
    				break;
				case Keyboard.ENTER:
			    	dispatchEvent(new Event("select"));	
			    	removePopup();
    				break;
				case Keyboard.ESCAPE:
					if (isListVisible) removePopup();
    				break;
			}
		}

	    private function textInput_changeHandler(event:Event):void
	    {
	    	text = textInput.text;
	    	dispatchEvent(new Event("textChange"));	
	    }

	    private function list_mouseDownOutsideHandler(event:MouseEvent):void
	    {
    		removePopup();
	    }

	    private function list_doubleClickHandler(event:ListEvent):void
	    {
	    	dispatchEvent(new Event("select"));	
	    	removePopup();
	    }

		private function popup():void
		{
			PopUpManager.addPopUp(list, this);
			//list.width = unscaledWidth;
			list.width = 224;
			
	        var point:Point = new Point(0, unscaledHeight);
    	    point = localToGlobal(point);
            point = parent.globalToLocal(point);
        	
        	list.move(point.x - 30, point.y + 24);
        	
            list.addEventListener(FlexMouseEvent.MOUSE_DOWN_OUTSIDE, list_mouseDownOutsideHandler);
        	
        	isListVisible = true;
		}

		private function removePopup():void
		{
			PopUpManager.removePopUp(list);
            list.removeEventListener(FlexMouseEvent.MOUSE_DOWN_OUTSIDE, list_mouseDownOutsideHandler);
			isListVisible = false;	
		}

	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -