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

📄 texteditor.mxml

📁 文本编辑器flex源码,flex builder 3
💻 MXML
字号:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication 
	xmlns:mx="http://www.adobe.com/2006/mxml" 
	layout="vertical"
	backgroundColor="0x0000FF" 
	backgroundImage="" 
	backgroundAlpha="0.75"
	title="Text Editor" 
	applicationComplete="appCompleteHandler()">
	<mx:Script>
		<![CDATA[
			import flash.filesystem.*;
			import mx.events.*;
			import mx.controls.Alert;
	
			private var currentFile:File; // The currentFile opened (and saved) by the application
			private var stream:FileStream = new FileStream(); // The FileStream object used for reading and writing the currentFile
			private var defaultDirectory:File; // The default directory
			[Bindable] public var dataChanged:Boolean = false; // Whether the text data has changed (and should be saved)

			/**
			* Called as the event handler for the applicationComplete event of the Application. This method
			* sets the position and size of the main window.
			*/
			private function appCompleteHandler():void 
			{
				defaultDirectory = File.documentsDirectory;
				stage.nativeWindow.width = Math.min(800, Capabilities.screenResolutionX - 60);
				stage.nativeWindow.height = Capabilities.screenResolutionY - 60;
				stage.nativeWindow.visible = true;
			}
			/**
			* Called when the user clicks the Open button. Opens a file chooser dialog box, in which the 
			* user selects a currentFile. 
			*/
			private function openFile():void 
			{	
				var fileChooser:File;
				if (currentFile) 
				{
					fileChooser = currentFile;
				}
				else
				{
					fileChooser = defaultDirectory;
				}
				fileChooser.browseForOpen("Open");
				fileChooser.addEventListener(Event.SELECT, fileOpenSelected);
			}
			/**
			* Called when the user selects the currentFile in the FileOpenPanel control. The method passes 
			* File object pointing to the selected currentFile, and opens a FileStream object in read mode (with a FileMode
			* setting of READ), and modify's the title of the application window based on the filename.
			*/
			private function fileOpenSelected(event:Event):void 
			{
				currentFile = event.target as File;
				stream = new FileStream();
				stream.openAsync(currentFile, FileMode.READ);
				stream.addEventListener(Event.COMPLETE, fileReadHandler);
				stream.addEventListener(IOErrorEvent.IO_ERROR, readIOErrorHandler);
				dataChanged = false;
				title = "Text Editor - " + currentFile.name;
				currentFile.removeEventListener(Event.SELECT, fileOpenSelected);
			}
			/**
			* Called when the stream object has finished reading the data from the currentFile (in the openFile()
			* method). This method reads the data as UTF data, converts the system-specific line ending characters
			* in the data to the "\n" character, and displays the data in the mainTextField Text component.
			*/
			private function fileReadHandler(event:Event):void 
			{
				var str:String = stream.readUTFBytes(stream.bytesAvailable);
				stream.close();
				var lineEndPattern:RegExp = new RegExp(File.lineEnding, "g");
				str = str.replace(lineEndPattern, "\n");
				mainTextField.text = str; 
				stream.close();
			}
			/**
			* Called when the user clicks the "Save" button. The method sets up the stream object to point to
			* the currentFile specified by the currentFile object, with save access. This method converts the "\r" and "\n" characters 
			* in the mainTextField.text data to the system-specific line ending character, and writes the data to the currentFile.
			*/
			private function saveFile():void 
			{
				if (currentFile) {
					if (stream != null)	
					{
						stream.close();
					}
					stream = new FileStream();
					stream.openAsync(currentFile, FileMode.WRITE);
					stream.addEventListener(IOErrorEvent.IO_ERROR, writeIOErrorHandler);
					var str:String = mainTextField.text;
					str = str.replace(/\r/g, "\n");
					str = str.replace(/\n/g, File.lineEnding);
					stream.writeUTFBytes(str);
					stream.close();
					dataChanged = false;
				} 
				else
				{
					saveAs();
				}
			}
			/**
			* Called when the user clicks the "Save As" button. Opens a Save As dialog box, in which the 
			* user selects a currentFile path. See the FileSavePanel.mxml currentFile.
			*/
			private function saveAs():void 
			{
				var fileChooser:File;
				if (currentFile)
				{
					fileChooser = currentFile;
				}
				else
				{
					fileChooser = defaultDirectory;
				}
				fileChooser.browseForSave("Save As");
				fileChooser.addEventListener(Event.SELECT, saveAsFileSelected);
			}
			/**
			* Called when the user selects the file path in the Save As dialog box. The method passes the selected 
			* currentFile to the File object and calls the saveFile() method, which saves the currentFile.
			*/
			private function saveAsFileSelected(event:Event):void 
			{
				currentFile = event.target as File;
				title = "Text Editor - " + currentFile.name;
				saveFile();
				dataChanged = false;
				currentFile.removeEventListener(Event.SELECT, saveAsFileSelected);
			}
			/**
			* Called when the user clicks the "New" button. Initializes the state, with an undefined File object and a
			* blank text entry field.
			*/
			private function newFile():void
			{
				currentFile = undefined;
				dataChanged = false;
				mainTextField.text = "";
			}
			/**
			* Handles I/O errors that may come about when opening the currentFile.
			*/
			private function readIOErrorHandler(event:Event):void 
			{
				Alert.show("The specified currentFile cannot be opened.", "Error", Alert.OK, this);
			}
			/**
			* Handles I/O errors that may come about when writing the currentFile.
			*/
			private function writeIOErrorHandler(event:Event):void 
			{
				Alert.show("The specified currentFile cannot be saved.", "Error", Alert.OK, this);
			}
		]]>
	</mx:Script>
	<mx:HBox width="100%">
		<mx:Button label="New" id="newBtn" click="newFile()"/>
		<mx:Button label="Open" id="openBtn" click="openFile()"/>
		<mx:Button label="Save" id="saveBtn" click="saveFile()" enabled="{dataChanged}"/>
		<mx:Button label="Save As" id="saveAsBtn" click="saveAs()"/>
	</mx:HBox>
	<mx:TextArea id="mainTextField" width="100%" height="100%" fontFamily="Courier, _typewriter" change="dataChanged = true;"/></mx:WindowedApplication>

⌨️ 快捷键说明

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