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

📄 tabaddcommentpanel.mxml

📁 flex 实现的一个showcase 喜欢flex的朋友可以
💻 MXML
字号:
<?xml version="1.0" encoding="utf-8"?>
<sharedcomponents:FlexDotOrgWindow
	xmlns:mx="http://www.adobe.com/2006/mxml"
	xmlns:sharedcomponents="org.flex.sharedcomponents.*"
	label="Reply to comment">
	
	
	<mx:Script>
		<![CDATA[
			//////////////////////////////////////////////////
			//import
			
			import mx.controls.Alert;
			import mx.effects.Fade;
			import mx.events.ResizeEvent;
			import mx.events.TweenEvent;
			import mx.events.ValidationResultEvent;
			import mx.rpc.events.FaultEvent;
			import mx.rpc.events.ResultEvent;
			import mx.validators.Validator;
			import org.flex.engine.FlexEngine;
			import org.flex.engine.managers.ServiceManager;
			import org.flex.textrestrict.TextRestrictConstants;
			import org.flex.engine.managers.Comment;
			import org.flex.engine.managers.User;
			
			
			//////////////////////////////////////////////////
			//private variables
			
			private var focussedFormControl:DisplayObject;
			public var _type:String;
			
			[Bindable]
			private var addCommentFormIsEmpty:Boolean;
			
			[Bindable]
			private var addCommentFormIsValid:Boolean;
			
			[Bindable]
			public var comment:Comment;
			
			[Bindable]
			public var editcomment:Comment;
			
			//////////////////////////////////////////////////////////////////////////////
			//getter/setter
			
			public function set type(val:String):void{
				_type=val
			}
			
			public function get type():String{
				return this._type
			}
			
			//////////////////////////////////////////////////////////////////////////////////////
			//initialization
			private function creationCompleteHandler(event:Event):void {
				//
			}
			
			//////////////////////////////////////////////////
			//general
			
			override public function show():void {
				super.show();
				
				if (type=="edit") {
					message_mc.text = comment.body;
					message_mc.errorString = "";
					message_mc.setSelection(message_mc.text.length, message_mc.text.length);
				}else{
					message_mc.text = "";
					message_mc.errorString = "";
				}
				addCommentFormIsEmpty = true;
				focusManager.setFocus(message_mc);
				
			}
			
			private function cancelClickHandler(mouseEvent:MouseEvent):void {
				hide();
			}
			
			private function hideCompleteHandler(tweenEvent:TweenEvent):void {
				visible = false;
			}
			
			//project info-------------------------------------------------------------------------
			private function projectClickHandler(mouseEvent:MouseEvent):void {
				var flexEngine:FlexEngine = FlexEngine.getInstance();
				var serviceManager:ServiceManager = flexEngine.serviceManager;
				
				serviceManager.user.addEventListener(ResultEvent.RESULT, nodeSaveResultHandler);
				serviceManager.user.addEventListener(FaultEvent.FAULT, nodeSaveFaultHandler);
			}
			
			
			private function nodeSaveResultHandler(resultEvent:ResultEvent):void {
				//
			}
			
			private function nodeSaveFaultHandler(faultEvent:FaultEvent):void {
				//	
			}
			
			//validation----------------------------------------------------------------------------
			
			private function validateProjectForm(event:Event):void {
				focussedFormControl = event.target as DisplayObject;
				
				addCommentFormIsEmpty = (message_mc.text == "");
				
				addCommentFormIsValid = true;
				
				validateProject(messageValidator);
			}
			
			private function validateProject(validator:Validator):Boolean {
				var validatorSource:DisplayObject = validator.source as DisplayObject;
				var suppressEvents:Boolean = (validatorSource != focussedFormControl);
				var event:ValidationResultEvent = validator.validate(null, suppressEvents);
				var currentControlIsValid:Boolean = (event.type == ValidationResultEvent.VALID);
				
				addCommentFormIsValid = addCommentFormIsValid && currentControlIsValid;
				
				return currentControlIsValid;
			}
			
			//comments------------------------------------------------------------------------
			private function postComment():void {
				var flexEngine:FlexEngine = FlexEngine.getInstance();
				var serviceManager:ServiceManager = flexEngine.serviceManager;
				
				if (editcomment!=null) {
					editcomment.body = message_mc.text;
					editcomment.save();
				} else {
					var newComment:Comment = new Comment();
					newComment.project = flexEngine.currentUserProject;
					newComment.projectID = comment.projectID;
					newComment.parentCommentID = comment.id;
					newComment.name = flexEngine.currentUser.firstName;
					newComment.email = flexEngine.currentUser.email;
					newComment.body = message_mc.text;
					newComment.save();
				}
				hide();
			}
			
			private function doEditOn(item:Comment=null):void{
				if(item!=null){
					message_action.text="Editing reply:";
					message_mc.text=item.body;
					editcomment=item;
					if(reply_list.selectedItem!=item){
						reply_list.selectedItem=item;
					}
				}else{
					message_action.text="Authoring new reply:";
					message_mc.text="";
					editcomment=null;
					reply_list.selectedItem=null;
					stage.focus=message_mc;
				}
				message_mc.errorString="";
			}
			
			//reply---------------------------------------------------------------------------
			private function handleReplySelect(event:Event):void{
				var selitem:Comment=reply_list.selectedItem as Comment;
				doEditOn(selitem);
			}
			
			private function handleNewReplyClick(event:Event):void{
				doEditOn();
			}
			
		]]>
	</mx:Script>
	
	
	<mx:StringValidator id="messageValidator" source="{message_mc}" property="text" minLength="2" />

	<mx:List 
		id="reply_list"
		width="100%" height="100%" 
		backgroundAlpha="0" borderStyle="none" 
		dataProvider="{this.comment.children}" 
		labelField="body"
		wordWrap="true"
		color="#FFFFFF"
		rollOverColor="#666666"
		selectionColor="#333333"
		itemRenderer="org.flex.backend.screens.account.comments.CommentReplyListRenderer"
		change="handleReplySelect(event)"/>
		
	<mx:Button styleName="blackButton" label="New Reply" enabled="{editcomment!=null}" click="handleNewReplyClick(event)"/>
	<mx:Label id="message_action" styleName="flexDarkTitle" />
	<mx:TextArea id="message_mc" maxChars="{TextRestrictConstants.LARGE}" width="100%" height="100%" editable="true" styleName="detailsAddCommentInputFields" change="validateProjectForm(event)"/>
	<mx:HBox width="100%" horizontalAlign="right">
		<mx:Button styleName="blackButton" label="Save"  click="this.postComment()"	enabled="{addCommentFormIsValid}" buttonMode="{addCommentFormIsValid}"/>
		<mx:Button styleName="blackButton" label="Cancel" click="cancelClickHandler(event);" buttonMode="true" />
	</mx:HBox>
	
</sharedcomponents:FlexDotOrgWindow>

⌨️ 快捷键说明

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