<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
width="800" height="600" title="Text Editor" applicationComplete="onAppInit();">
<mx:Script>
<![CDATA[
import mx.validators.ValidationResult;
import mx.events.FileEvent;
import flash.events.KeyboardEvent;
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
import flash.net.FileFilter;
import mx.controls.Alert;
import mx.events.CloseEvent;
import mx.events.MenuEvent;
private var browseHolder:File;
private var currentFile:File;
private var defaultFile:File;
private var fileStream:FileStream;
private var fileToOpen:File;
private var fileToSave:File;
private var textChanged:Boolean;
public function onAppInit():void
{
title = "Text Editor - Untitled.txt";
defaultFile = File.documentsDirectory.resolvePath("untitled.txt");
textChanged = false;
application.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
}
private function onKeyUp(event:KeyboardEvent):void
{
if (event.keyCode==Keyboard.TAB&&!event.altKey&&!event.shiftKey&&!event.ctrlKey)
{
var sb:Number = fileTextArea.selectionBeginIndex;
var se:Number = fileTextArea.selectionEndIndex;
var firstPart:String = fileTextArea.text.slice(0,sb);
var secondPart:String = fileTextArea.text.slice(se);
fileTextArea.text = firstPart + "\t" + secondPart;
}
}
private function onItemClick(event:MenuEvent):void
{
switch(event.label)
{
case "New":
newDocument();
break;
case "Open":
promptUserToOpenFile();
break;
case "Save":
saveFile();
break;
case "Save As...":
promptUserToSaveFile();
break;
}
}
private function onAlertClose(event:CloseEvent):void
{
switch(event.detail)
{
case Alert.YES:
saveFile();
break;
case Alert.NO:
textChanged = false;
newDocument();
break;
}
}
private function onFileOpenSelect(event:FileEvent):void
{
currentFile = event.file as File;
openFile();
}
private function onFileSaveSelect(event:FileEvent):void
{
currentFile = event.file as File;
textChanged = false;
title = "Text Editor - " + currentFile.name;
saveFile();
}
private function onOpenComplete(event:Event):void
{
var theText:String = fileStream.readUTFBytes(fileStream.bytesAvailable);
var lineEndPattern:RegExp = new RegExp(File.lineEnding,"g");
fileTextArea.text = theText.replace(lineEndPattern,"\n");
textChanged = false;
title = "Text Editor - " + currentFile.name;
fileStream.close();
}
private function onReadIOError(event:IOErrorEvent):void
{
Alert.show("The specified file cannot be opened.","Error",Alert.OK,this);
}
private function onWriteIOError(event:IOErrorEvent):void
{
Alert.show("The specified file cannot be saved.","Error",Alert.OK,this);
}
private function openFile():void
{
if (fileStream!=null)
{
fileStream.close();
}
fileStream = new FileStream();
fileStream.addEventListener(Event.COMPLETE,onOpenComplete);
fileStream.addEventListener(IOErrorEvent.IO_ERROR,onReadIOError);
fileStream.openAsync(currentFile,FileMode.READ);
}
private function saveFile():void
{
if (currentFile)
{
if (fileStream!=null)
{
fileStream.close();
}
var theText:String = fileTextArea.text;
theText = theText.replace(/\r/g,"\n");
theText = theText.replace(/\n/g,File.lineEnding);
fileStream = new FileStream();
fileStream.openAsync(currentFile,FileMode.WRITE);
fileStream.addEventListener(IOErrorEvent.IO_ERROR,onWriteIOError);
fileStream.writeUTFBytes(theText);
fileStream.close();
textChanged = false;
}
else
{
promptUserToSaveFile();
}
}
private function promptUserToOpenFile():void
{
fileToOpen = (currentFile!=null)?currentFile.parent:File.documentsDirectory;
fileToOpen.removeEventListener(Event.SELECT,onFileSaveSelect);
var textFilter:FileFilter = new FileFilter("Text","*.as;*.css;*.html;*.txt;*.xml");
var allFilter:FileFilter = new FileFilter("All Files","*.*");
try
{
fileToOpen.browseForOpen("Open",[textFilter,allFilter]);
fileToOpen.addEventListener(Event.SELECT,onFileOpenSelect);
}
catch(error:Error)
{
trace("Failed:",error.message);
}
}
private function promptUserToSaveFile():void
{
fileToSave = (currentFile)?currentFile:defaultFile;
fileToSave.removeEventListener(Event.SELECT,onFileOpenSelect);
var typeFilter:FileFilter = new FileFilter("Text","*.as;*.css;*.html;*.txt;*.xml");
try
{
fileToSave.browseForSave("Save");
fileToSave.addEventListener(Event.SELECT,onFileSaveSelect);
}
catch(error:Error)
{
trace("Failed:",error.message);
}
}
private function newDocument():void
{
if (textChanged)
{
Alert.show("The text in your current document has changed.\nDo" +
" you want to save your changes?","Alert",(Alert.YES|Alert.NO|Alert.CANCEL),this,onAlertClose);
}
else
{
currentFile = undefined;
textChanged = false;
fileTextArea.text = "";
}
}
]]>
</mx:Script>
<mx:MenuBar id="myMenuBar" labelField="@label"
left="0" top="0" right="0" tabEnabled="false"
itemClick="onItemClick(event);">
<mx:XMLList>
<menuitem label="File">
<menuitem label="New"/>
<menuitem label="Open"/>
<menuitem label="Save"/>
<menuitem label="Save As..."/>
</menuitem>
</mx:XMLList>
</mx:MenuBar>
<mx:TextArea id="fileTextArea"
top="21" left="0" right="0" bottom="0"
focusThickness="0" fontFamily="Arial"
fontSize="14" tabEnabled="false"
change="textChanged=true;"/>
</mx:WindowedApplication>
分享到:
相关推荐
1 1 跟我StepByStep学FLEX教程------概述(原创) 1 2 跟我StepByStep学FLEX教程------Flex3及Flex Builder安装(原创) 1 3 跟我StepByStep学FLEX教程------Hello World(原创) 1 4 跟我StepByStep学FLEX教程--...
flex 实例 ----示波器的制作 flex 实例 ----示波器的制作
精通Flex 3.0--基于ActionScript 3.0实现源码
Flex-Air-SQLite操作类及其简要用法.pdf
Flex-Air-SQLite操作类及其简要用法.docx
Flex 全景图源码-----街景 Flex 全景图源码-----街景
Flex SVN--1.5.5版本Flex SVN--1.5.5版本Flex SVN--1.5.5版本Flex SVN--1.5.5版本Flex SVN--1.5.5版本Flex SVN--1.5.5版本Flex SVN--1.5.5版本
spring-flex-1.5.0.M2-dist.zip spring-flex-1.5.0.M2 spring-flex-1.5.0.M2.jar SBI
Flex 工程源码--EmployeeMgmt-Flex.7z
Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring Flex blazeds-spring
Flex Air音乐播放器源码,使用的是Flex Builder3版本!!!
程序缘 Flex AIR之旅-第六章 编写用户登录界面,用于学习借鉴的Flex Air的工程源码,导入flash builder4.6即可。已实现一般C/S结构展现界面的实现,如菜单、快捷工具栏、主窗口等。
flex-messaging-4.7.3最新版本的jar
跟我StepByStep学FLEX教程------王一松
flex-messaging-core jar包
微信小程序源码FlexLayout布局-wechat-app-flexlayout-master
简单的文件读写程序,适合新手学习。可对导入的文本文件进行修改再导出
完成图片编辑的基本功能包括:扭曲,色调,扩散等功能。
跟我StepByStep学FLEX教程------王一松.pdf
spring-flex-1.5.0.RELEASE spring-flex-1.5.0.RELEASE spring-flex-1.5.0.RELEASE spring-flex-1.5.0.RELEASE