MDM Support ответил следующим образом:
hi PYatka,
welcome to the boards!
it's quite complex task you want to do,
it take me some time to make fully fledged code for all of us wanting to do similiar thing,
I've attached files so you can compile them and simply start testing,
follow code comments to learn how it works:

Код:
//
mdminit();
//
import mx.controls.Button;
/**
simply one button makes
entire GUI
*/
var browseBtn:Button;
/**
variables used later in code
to remember:
- last folder selected by user
- last file name selected (entered) by user
- last extension of last file name
*/
var lastSelectedFolder:String = null;
var lastSelectedFile:String = null;
var lastUsedExtension:String = null;
/**
button click handler
*/
function clickHandler(evt:Object):Void {
if (evt.target != browseBtn) {
return;
}
browseBtn.enabled = false;
selectFileToCopy();
}
/**
that funciton open browse dialog
allowing user to select file to copy
(target file path is returned to callback function)
*/
function selectFileToCopy(userNotCancelled:String):Void {
if (userNotCancelled == "false") {
return;
}
var folder = getLastSelectedFolder();
var title = "Select file to copy";
var filterList = "jpeg doc pdfs|*.jpg;*.doc;*.pdf";
var filterText = "File types";
var buttonText = "Select";
mdm.browsefiledir(folder);
mdm.browsefiletitle(title);
mdm.browsefile_filterlist(filterList);
mdm.browsefile_filtertext(filterText);
mdm.browsefile_buttontext(buttonText);
mdm.browsefile(sourceFileSelected);
//
browseBtn.enabled = true;
}
/**
callback function for selectFileToCopy
check what user entered simpy by checking
if file exists
*/
function sourceFileSelected(filePath:String):Void {
if (filePath == "" || filePath == "false") {
return;
}
lastSelectedFile = getFileName(filePath);
lastSelectedFolder = getFolderName(filePath);
//
mdm.fileexists(filePath, checkFilePathBeforeProceeding);
}
/**
that callback function checks if selected file
exists on machine - user can enter some non-existing
file names in dialog
*/
function checkFilePathBeforeProceeding(exists:String):Void {
if (exists == "false") {
lastSelectedFile = null;
var promptText = "please select existing file!!!";
var promptType = "okcancel";
var promptStyle = "alert";
mdm.prompt_modal(promptText, promptType, promptStyle, selectFileToCopy);
return;
}
selectPathWhereToCopy();
}
/**
that function open browse dialog (SAVE AS)
allowing user to select path where
file should be copied (user can enter new name)
*/
function selectPathWhereToCopy(userNotCancelled:String):Void {
if (userNotCancelled == "false") {
return;
}
var folder = getLastSelectedFolder();
var title = "Select new location (Save As) for "+getLastSelectedFile();
var defaultFileName:String = getLastSelectedFile();
var currentExtension:String = getFileExtension(getLastSelectedFile());
switch (currentExtension) {
case ".doc" :
lastUsedExtension = ".doc";
var filterList = "word files|*.doc";
break;
case ".jpg" :
lastUsedExtension = ".jpg";
var filterList = "jpeg files|*.jpg";
break;
case ".pdf" :
lastUsedExtension = ".pdf";
var filterList = "Acrobat files|*.pdf";
break;
}
var filterText = "File types";
var buttonText = "Save";
mdm.browsefiledir(folder);
mdm.browsefiletitle(title);
mdm.browsefile_filterlist(filterList);
mdm.browsefile_filtertext(filterText);
mdm.browsefile_buttontext(buttonText);
mdm.browsefile_def(defaultFileName, targetPathSelected);
}
/**
that callback function checks what is returned
from browse dialog to select target file
not allowed: spaces in names,
names consisting only with extensions
overriding existing file if target path == source path
*/
function targetPathSelected(filePath:String):Void {
if (filePath == "" || filePath == "false") {
return;
}
var targetFolder:String = getFolderName(filePath);
var targetFile:String = getFileName(filePath);
var targetFileExtension:String = getFileExtension(targetFile);
var hasSpaces:Boolean = (targetFile.indexOf(" ") != -1);
var nameEqualsExtension:Boolean = (targetFile == getLastUsedExtension());
var hasValidExtension:Boolean = (targetFileExtension == getLastUsedExtension());
// # 1 no spaces
if (hasSpaces == true) {
var promptText = "no spaces allowed in file name";
var promptType = "okcancel";
var promptStyle = "alert";
mdm.prompt_modal(promptText, promptType, promptStyle, selectPathWhereToCopy);
return;
}
// # 2 name should have at least one character not only extension
if (nameEqualsExtension == true) {
var promptText = "file name should have at least one character";
var promptType = "okcancel";
var promptStyle = "alert";
mdm.prompt_modal(promptText, promptType, promptStyle, selectPathWhereToCopy);
return;
}
// # 3 automatically add correct extension if missed
if (hasValidExtension == false) {
targetFile = targetFile+getLastUsedExtension();
}
// #4 don't copy if target==source
var sourcePath:String = getLastSelectedFolder()+getLastSelectedFile();
var targetPath:String = targetFolder+targetFile;
var isToOverride:Boolean = (sourcePath == targetPath);
if (isToOverride == true) {
var promptText = "file cannot override itself - choose another location!";
var promptType = "okcancel";
var promptStyle = "alert";
mdm.prompt_modal(promptText, promptType, promptStyle, selectPathWhereToCopy);
return;
}
// GO copy file
lastSelectedFolder = targetFolder;
mdm.copyfile(sourcePath, targetPath);
}
/**
return last selected folder
*/
function getLastSelectedFolder():String {
if (lastSelectedFolder == null) {
return _level0.mdm_desktop;
}
return lastSelectedFolder;
}
/**
here is a couple of helper functions
used accros a code
*/
/**
return last selected file
*/
function getLastSelectedFile():String {
return lastSelectedFile;
}
/**
return file name from file path
*/
function getFileName(fullPath:String):String {
var sep:String = _level0.mdm_appdir.substr(-1);
return fullPath.substr(fullPath.lastIndexOf(sep)+1);
}
/**
return folder name from file path
*/
function getFolderName(fullPath:String):String {
var sep:String = _level0.mdm_appdir.substr(-1);
return fullPath.substr(0, fullPath.lastIndexOf(sep)+1);
}
/**
return extension from fileName
*/
function getFileExtension(fileName:String):String {
return fileName.substr(fileName.lastIndexOf("."));
}
/**
return last extension used in filter
*/
function getLastUsedExtension():String {
return lastUsedExtension;
}
/**
simply resize button when needed
*/
function onResize():Void {
browseBtn.move(10, 10);
browseBtn.setSize(Stage.width-20, Stage.height-20);
}
//
// go baby
//
Stage.scaleMode = "noScale";
Stage.align = "TL";
Stage.addListener(this);
//
browseBtn.label = "Click to choose an file";
browseBtn.move(10, 10);
browseBtn.setSize(Stage.width-20, Stage.height-20);
browseBtn.addEventListener("click", clickHandler);
enjoy
hth,
regards,
peter