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

📄 projectlist.mxml

📁 flex 实现的一个showcase 喜欢flex的朋友可以
💻 MXML
字号:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas
	xmlns:mx="http://www.adobe.com/2006/mxml"
	xmlns:components="com.flexShowcase.components.*"
	xmlns:navigation="com.flexShowcase.components.projectList.navigation.*"
	xmlns:categoriesButton="com.flexShowcase.components.projectList.navigation.categoriesButton.*"
	xmlns:sortingBar="com.flexShowcase.components.projectList.navigation.sortingBar.*"
	xmlns:viewsBar="com.flexShowcase.components.projectList.navigation.viewsBar.*"
	xmlns:pagingBar="com.flexShowcase.components.projectList.navigation.pagingBar.*"
	xmlns:panels="com.flexShowcase.panels.*"
	xmlns:controls="com.flexdotorg.controls.*"
	
	horizontalCenter="0"
	
	horizontalScrollPolicy="off"
	verticalScrollPolicy="off"
	
	creationComplete="creationCompleteHandler(event)">
	
	<mx:Script>
		<![CDATA[
		
		
			//////////////////////////////////////////////////
			//import
			
			import com.flexShowcase.components.projectList.views.hybridView.ProjectListHybridView;
			import com.flexShowcase.components.projectList.views.textView.ProjectListTextView;
			import com.flexShowcase.components.projectList.views.thumbView.ProjectListThumbView;
			import com.flexShowcase.components.projectList.views.AbstractListView;
			import com.flexShowcase.constants.*;
			import com.flexShowcase.data.Project;
			import com.flexShowcase.events.*;
			
			import mx.collections.*;
			
			//////////////////////////////////////////////////
			//getter/setter variables
			
			private var _projects:ArrayCollection;
			private var _selectedProject:Project;
			private var _isOpen:Boolean;
			
			//////////////////////////////////////////////////
			//private variables
			
			private var view:AbstractListView;
			private var currentView:String;
			private var currentSort:String;
			private var currentOrder:String;
			
			//////////////////////////////////////////////////
			//public variables
			
			[Bindable] public var tags:ArrayCollection;
			[Bindable] public var technologies:ArrayCollection;
			[Bindable] public var industries:ArrayCollection;
			[Bindable] public var currentPage:uint;
			
			//////////////////////////////////////////////////
			//getter/setter functions
			
			[Bindable]
			public function set projects(value:ArrayCollection):void {
				_projects = value;
				
				projectsHandler();
			}
			public function get projects():ArrayCollection {
				return _projects;
			}
			
			//-----------------------------------------------------------------------
			
			[Bindable]
			public function set selectedProject(value:Project):void {
				_selectedProject = value;
				
				selectedProjectHandler();
			}
			public function get selectedProject():Project {
				
				return _selectedProject;
			}
			
			//---------------------------------------------------------------------
			
			public function set isOpen(value:Boolean):void {
				_isOpen = value;
				
				handleIsOpen();
			}
			
			public function get isOpen():Boolean {
				return _isOpen;
			}
			
			private function handleIsOpen():void{
				if(isOpen){
					showHideToggle.openState();
				}else{
					showHideToggle.closeState();
				}
			}
			
			//////////////////////////////////////////////////
			//initialization
			
			private function creationCompleteHandler(event:Event):void {
				sortingBar.addEventListener(ProjectListEvent.CHANGE_VIEW, sortingBarChangeViewHandler);
				viewsBar.addEventListener(ProjectListEvent.CHANGE_VIEW, viewsBarChangeViewHandler);
				categoriesPanel.addEventListener(CategoriesPanelEvent.PANEL_CLOSE,handleCategoriesPanelClose)
				
				renderSelectedView();
				renderSelectedSort();
			}
			
			//////////////////////////////////////////////////
			//private functions
			
			private function renderSelectedSort(selectedSort:String = ProjectListSortTypes.DEFAULT_SORT, selectedOrder:String = ProjectListSortTypes.DEFAULT_ORDER):void {
				if (projects != null) {
					var name:String = findSort(selectedSort);
					var caseInsensitive:Boolean = false;
					var descending:Boolean = findDescending(selectedOrder);
					var numeric:Object = findNumeric(selectedSort);
					
					var sortField:SortField = new SortField(name, caseInsensitive, descending, numeric);
					
					var sort:Sort = new Sort();
					sort.fields = new Array(sortField);
					
					projects.sort = sort;
					trace("YO!!!")
					projects.refresh();
					this.dispatchEvent(new ProjectListEvent(ProjectListEvent.SORT_UPDATE))
				}
			}
			private function findSort(selectedSort:String):String {
				var sort:String;
				
				switch (selectedSort) {
					case ProjectListSortTypes.ALPHABETICAL_SORT :
						sort = "name";
						break;
					case ProjectListSortTypes.LATEST_SORT :
						sort = "createdDate";
						
						break;
					case ProjectListSortTypes.POPULAR_SORT :
						//sort = "rating";
						sort = "views";
						break;
				}
				
				return sort;
			}
			private function findDescending(selectedOrder:String):Boolean {
				var order:Boolean;
				
				switch (selectedOrder) {
					case ProjectListSortTypes.ASCENDING_ORDER :
						order = false;
						break;
					case ProjectListSortTypes.DESCENDING_ORDER :
						order = true;
						break;
				}
				
				return order;
			}
			private function findNumeric(selectedSort:String):Boolean {
				var numeric:Boolean;
				
				switch (selectedSort) {
					case ProjectListSortTypes.ALPHABETICAL_SORT :
						numeric = false;
						break;
					case ProjectListSortTypes.LATEST_SORT :
						numeric = true;
						break;
					case ProjectListSortTypes.POPULAR_SORT :
						numeric = true;
						break;
				}
				
				return numeric;
			}
			
			private function renderSelectedView(selectedView:String = ProjectListViews.DEFAULT):void {
				if(selectedView!=viewsBar.selectedView){
					if (view != null) {
						view.removeEventListener(ProjectListEvent.SELECT_PROJECT, handleViewItemSelect);
						view.removeEventListener(Event.ADDED_TO_STAGE,handleViewAddedToStage)
						view.cleanUp();
						viewContainer.removeChild(view);
						view = null;
					}
					
					switch (selectedView) {
						case ProjectListViews.THUMBNAIL :
							view = new ProjectListThumbView();
							break;
						case ProjectListViews.HYBRID :
							view = new ProjectListHybridView();
							break;
						case ProjectListViews.TEXT :
							view = new ProjectListTextView();
							break;
					}
					
					view.addEventListener(ProjectListEvent.SELECT_PROJECT, handleViewItemSelect);
					view.addEventListener(Event.ADDED_TO_STAGE,handleViewAddedToStage)
					viewContainer.addChild(view);
					viewsBar.selectedView = selectedView;
				}
				
			}
			
			private function handleViewItemSelect(projectListEvent:ProjectListEvent):void{
				selectedProject=view.selectedProject
			}
			
			private function handleViewAddedToStage(event:Event):void{
				updateViewProjects();
				updateViewSelectedProject();
				
				if (currentSort != null && currentOrder != null) {
					renderSelectedSort(currentSort, currentOrder);
				} else {
					renderSelectedSort();
				}
			}
			
			private function updateViewProjects():void {
				if (view != null) {
					if (projects != null) {
						view.projects = projects;
					}
				}
			}
			private function updateViewSelectedProject():void {
				view.selectedProject = selectedProject;
			}
			
			private function dispatchMaximizeToggle():void {
				var projectListEvent:ProjectListEvent = new ProjectListEvent(ProjectListEvent.MAXIMIZE_TOGGLE);
				dispatchEvent(projectListEvent);
			}
			
			
			//////////////////////////////////////////////////
			//getter/setter handler functions
			
			private function projectsHandler():void {
				updateViewProjects();
				
				if (currentSort != null && currentOrder != null) {
					renderSelectedSort(currentSort, currentOrder);
				} else {
					renderSelectedSort();
				}
			}
			private function selectedProjectHandler():void {
				updateViewSelectedProject();
				
				if (isOpen == false) {
					dispatchMaximizeToggle();
				}
			}
			
			
			//////////////////////////////////////////////////
			//handler functions
			
			private function sortingBarChangeViewHandler(projectListEvent:ProjectListEvent):void {
				currentSort = projectListEvent.selectedSort;
				currentOrder = projectListEvent.selectedOrder;
				trace("PROJECT LIST: sortingBarChangeViewHandler: currentOrder: "+currentOrder+" currentSort: "+currentSort)
				renderSelectedSort(projectListEvent.selectedSort, projectListEvent.selectedOrder);
			}
			private function viewsBarChangeViewHandler(projectListEvent:ProjectListEvent):void {
				currentView = projectListEvent.selectedView;
				renderSelectedView(projectListEvent.selectedView);
			}
			
			private function handleCategoriesButtonClick(mouseEvent:MouseEvent):void {
				requestDepthToTop()
				
				switch (categoriesPanel.currentState) {
					case CategoriesPanel.DEFAULT_STATE :
						categoriesPanel.show();
						break;
					case CategoriesPanel.UPPER_STATE :
						categoriesPanel.hide();
						break;
					case CategoriesPanel.LOWER_STATE :
						categoriesPanel.hide();
						break;
				}
			}
			
			public function requestDepthToTop():void{
				var event:ProjectListEvent=new ProjectListEvent(ProjectListEvent.REQUEST_DEPTH_TO_TOP);
				this.dispatchEvent(event);
			}
			
			private function resultsTextUpdateCompleteHandler(event:Event):void {
			}
			
			private function showAllButtonClickHandler(mouseEvent:MouseEvent):void {
				var projectListEvent:ProjectListEvent = new ProjectListEvent(ProjectListEvent.SHOW_ALL);
				
				dispatchEvent(projectListEvent);
			}
			
			private function showHideToggleClickHandler(mouseEvent:MouseEvent):void {
				 dispatchMaximizeToggle();
			}
			
			private function handleCategoriesPanelClose(event:CategoriesPanelEvent):void{
				this.categoriesButton.selected = false;
			}
			
			
		]]>
	</mx:Script>
	
	
	<mx:Canvas top="0" bottom="25" width="760" backgroundColor="#E5E5E5" borderColor="#FFFFFF" borderStyle="solid" borderThickness="2" horizontalCenter="0" clipContent="false">
		<mx:Image source="@Embed('/assets/images/frontend/projectlist/projectList_verticalDivider.png')" left="246" top="12" />
		<mx:Image source="@Embed('/assets/images/frontend/projectlist/projectList_verticalDivider.png')" right="55" top="12" />
		
		<mx:Label styleName="standardText" top="16" horizontalCenter="-80" text="Sort By:" />
		
		<sortingBar:ProjectListSortingBar id="sortingBar" top="10" horizontalCenter="60" />
		<viewsBar:ProjectListViewsBar id="viewsBar" right="72" top="10" />
		<navigation:ProjectListOpenCloseToggleButton id="showHideToggle" right="10" top="10" isOpen="true" buttonMode="true" click="showHideToggleClickHandler(event)" />
		
		<mx:HRule x="2" y="50" width="756" strokeColor="#adadad" />
		
		<mx:Canvas id="resultsTextCanvas" x="2" top="50" width="756" height="30" 
			backgroundColor="#BFBFBF" horizontalScrollPolicy="off" verticalScrollPolicy="off">
			<controls:LoadingIcon id="loadingIcon" x="10" y="8" />
			<mx:TextArea id="resultsText" styleName="projectListResultsText" y="2" left="10" right="0" 
				width="{resultsTextCanvas.width}" height="100%" backgroundAlpha="0" wordWrap="true" 
				selectable="false" htmlText="{}" updateComplete="resultsTextUpdateCompleteHandler(event)" />
		</mx:Canvas>
		
		<mx:Canvas id="viewContainer" left="0" right="0" top="{resultsTextCanvas.height - 24}" bottom="27" />
		
		<panels:CategoriesPanel id="categoriesPanel"  bottom="0"
			tags="{tags}" industries="{industries}" technologies="{technologies}"/>
		
		<mx:CheckBox id="categoriesButton" left="10" top="8" styleName="projectListCategoriesButtonChBx"
			 buttonMode="true"
			toolTip="Apply filters to the items in the list" click="handleCategoriesButtonClick(event)"/>
		<mx:Button id="showAllButton" styleName="flexSquareButton" x="160" y="10" label="Show All" toolTip="Clear all filters" buttonMode="true" click="showAllButtonClickHandler(event)" />
	</mx:Canvas>
	
	<pagingBar:PagingBar id="pagingBar" x="2" bottom="27" width="756" currentPageNum="{currentPage}"/>
	<components:FlexDotOrgFooter bottom="3" horizontalCenter="0" />
	
	
</mx:Canvas>

⌨️ 快捷键说明

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