First implementation of FileProxy which takes on some of the functions
of FileReference in Flash. More beads coming soon.


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/ff4dd1e8
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/ff4dd1e8
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/ff4dd1e8

Branch: refs/heads/develop
Commit: ff4dd1e8aa2a1f55ab31df2d3b48db73fc02e097
Parents: fad5214
Author: DESKTOP-RH4S838\Yishay <yishayj...@hotmail.com>
Authored: Mon Jul 3 14:27:18 2017 +0300
Committer: DESKTOP-RH4S838\Yishay <yishayj...@hotmail.com>
Committed: Mon Jul 3 14:27:18 2017 +0300

----------------------------------------------------------------------
 .../Network/src/main/flex/NetworkClasses.as     |   3 +-
 .../main/flex/org/apache/flex/file/FileProxy.as |  57 +++++++
 .../org/apache/flex/file/beads/FileBrowser.as   | 159 +++++++++++++++++++
 .../org/apache/flex/file/beads/FileModel.as     | 156 ++++++++++++++++++
 .../src/main/resources/basic-manifest.xml       |   4 +-
 5 files changed, 376 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ff4dd1e8/frameworks/projects/Network/src/main/flex/NetworkClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Network/src/main/flex/NetworkClasses.as 
b/frameworks/projects/Network/src/main/flex/NetworkClasses.as
index ed88471..51482f3 100644
--- a/frameworks/projects/Network/src/main/flex/NetworkClasses.as
+++ b/frameworks/projects/Network/src/main/flex/NetworkClasses.as
@@ -18,6 +18,7 @@
 
////////////////////////////////////////////////////////////////////////////////
 package
 {   
+       
 
 /**
  *  @private
@@ -27,7 +28,7 @@ package
  */
 internal class NetworkClasses
 {      
-    import org.apache.flex.net.URLBinaryLoader; URLBinaryLoader;
+       import org.apache.flex.net.URLBinaryLoader; URLBinaryLoader;
     import org.apache.flex.net.HTTPConstants; HTTPConstants;
 }
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ff4dd1e8/frameworks/projects/Network/src/main/flex/org/apache/flex/file/FileProxy.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Network/src/main/flex/org/apache/flex/file/FileProxy.as 
b/frameworks/projects/Network/src/main/flex/org/apache/flex/file/FileProxy.as
new file mode 100644
index 0000000..7055f1b
--- /dev/null
+++ 
b/frameworks/projects/Network/src/main/flex/org/apache/flex/file/FileProxy.as
@@ -0,0 +1,57 @@
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.file
+{
+       import org.apache.flex.core.IBead;
+       import org.apache.flex.core.IDocument;
+       import org.apache.flex.core.Strand;
+       
+       /**
+        *  The FileProxy class is where beads regarding file operations are 
added.
+        *  Information about operations can be queried in the file model, or by
+        *  listenening to events dispatched by beads.
+        *
+        *  @toplevel
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.0
+        */
+       public class FileProxy extends Strand implements IDocument
+       {
+               private var _document:Object;
+               public function FileProxy()
+               {
+                       super();
+               }
+               
+
+               /**
+                * @private
+                */
+               public function setDocument(document:Object, id:String = 
null):void
+               {
+                       _document = document;
+                       for each (var bead:IBead in beads)
+                       {
+                               addBead(bead);
+                       }
+               }
+
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ff4dd1e8/frameworks/projects/Network/src/main/flex/org/apache/flex/file/beads/FileBrowser.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Network/src/main/flex/org/apache/flex/file/beads/FileBrowser.as
 
b/frameworks/projects/Network/src/main/flex/org/apache/flex/file/beads/FileBrowser.as
new file mode 100644
index 0000000..fa24548
--- /dev/null
+++ 
b/frameworks/projects/Network/src/main/flex/org/apache/flex/file/beads/FileBrowser.as
@@ -0,0 +1,159 @@
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.file.beads
+{
+       import org.apache.flex.core.IBead;
+       import org.apache.flex.core.IStrand;
+       import org.apache.flex.file.FileProxy;
+
+       COMPILE::SWF 
+       {
+               import flash.net.FileReference;
+               import flash.events.Event;
+       }
+
+       COMPILE::JS
+       {
+               import org.apache.flex.events.Event;
+               import org.apache.flex.core.WrappedHTMLElement;
+               import goog.events;
+
+       }
+       
+       /**
+        *  The FileBrowser class is a bead which adds to UploadImageProxy
+        *  the ability to browse the file system and select a file.
+        *  
+        *
+        *  @toplevel
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.0
+        */
+       public class FileBrowser implements IBead
+       {
+               private var _strand:IStrand;
+               COMPILE::SWF 
+               {
+                       private var _delegate:flash.net.FileReference;
+               }
+               COMPILE::JS 
+               {
+                       private var _delegate:WrappedHTMLElement;
+               }
+
+               /**
+                *  Constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function FileBrowser()
+               {
+                       createDelegate();
+               }
+               
+               /**
+                * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
+                */
+               COMPILE::JS
+               public function createDelegate():void
+               {
+                       _delegate = document.createElement('input') as 
WrappedHTMLElement;
+                       _delegate.setAttribute('type', 'file');
+                       goog.events.listen(_delegate, 'change', 
fileChangeHandler);
+               }
+               
+               /**
+                *  @private
+                */
+               COMPILE::SWF
+               public function createDelegate():void
+               {
+                       _delegate = new flash.net.FileReference();
+                       _delegate.addEventListener(flash.events.Event.SELECT, 
fileSelectHandler);
+               }
+               
+               /**
+                *  @private
+                */
+               COMPILE::SWF
+               protected function 
fileSelectHandler(event:flash.events.Event):void
+               {
+                       host.model = new FileModel(_delegate);
+                       // _delegate reference passed to model, so cleanup this 
bead to keep encapsulation
+                       
_delegate.removeEventListener(flash.events.Event.SELECT, fileSelectHandler);
+                       createDelegate();
+               }
+               
+               /**
+                *  Open up the system file browser. A user selection will 
trigger a 'modelChanged' event on the strand.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function browse():void
+               {
+                       COMPILE::SWF
+                       {
+                               _delegate.browse();     
+                       }
+                       COMPILE::JS 
+                       {
+                               _delegate.click();
+                       }
+               }
+               
+               /**
+                *  @copy org.apache.flex.core.IBead#strand
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function set strand(value:IStrand):void
+               {
+                       _strand = value;
+               }
+               
+               /**
+                * @private
+                */
+               private function get host():FileProxy
+               {
+                       return _strand as FileProxy;
+               }
+               
+               /**
+                *  @private
+                *  @flexjsignorecoercion HTMLInputElement
+                */             
+               COMPILE::JS
+               private function 
fileChangeHandler(e:org.apache.flex.events.Event):void
+               {
+                       host.model = new FileModel((_delegate as 
HTMLInputElement).files[0]);
+               }
+               
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ff4dd1e8/frameworks/projects/Network/src/main/flex/org/apache/flex/file/beads/FileModel.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Network/src/main/flex/org/apache/flex/file/beads/FileModel.as
 
b/frameworks/projects/Network/src/main/flex/org/apache/flex/file/beads/FileModel.as
new file mode 100644
index 0000000..7692e35
--- /dev/null
+++ 
b/frameworks/projects/Network/src/main/flex/org/apache/flex/file/beads/FileModel.as
@@ -0,0 +1,156 @@
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.file.beads
+{
+       import org.apache.flex.core.IBeadModel;
+       import org.apache.flex.core.IStrand;
+       import org.apache.flex.events.EventDispatcher;
+
+       COMPILE::SWF
+       {
+               import flash.net.FileReference;
+       }
+       
+       /**
+        *  The FileModel class is a bead that contains basic information
+        *  on the file referenced by FileProxy
+        *  
+        *
+        *  @toplevel
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.0
+        */
+       public class FileModel extends EventDispatcher implements IBeadModel
+       {
+               private var _strand:IStrand;
+               COMPILE::SWF
+               {
+                       private var _data:FileReference;
+               }
+               COMPILE::JS
+               {
+                       private var _data:File;
+               }
+       
+               /**
+                *  Constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function FileModel(data:Object)
+               {
+                       COMPILE::SWF
+                       {
+                               _data = data as FileReference;                  
+                       }
+                       COMPILE::JS
+                       {
+                               _data = data as File;                   
+                       }
+               }
+               
+               
+               
+               /**
+                *  The size of the file
+                * 
+                *  @copy org.apache.flex.core.IAlertModel#title
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get size():Number
+               {
+                       return _data.size;
+               }
+               
+               /**
+                *  The name of the file
+                * 
+                *  @copy org.apache.flex.core.IAlertModel#title
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get name():String
+               {
+                       return _data.name;
+               }
+               
+               // TODO this will give different results in flash and in JS 
(extension and MIME respectively). Fix this.
+               /**
+                *  The type
+                * 
+                *  @copy org.apache.flex.core.IAlertModel#title
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get type():String
+               {
+                       return _data.type;
+               }
+               
+               /**
+                *  The last modified time of the file, in millisecond since 
the UNIX epoch (January 1st, 1970 at Midnight).
+                * 
+                *  @copy org.apache.flex.core.IAlertModel#title
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get lastModified():uint
+               {
+                       COMPILE::SWF
+                       {
+                               return _data.modificationDate.milliseconds;
+                       }
+                       COMPILE::JS
+                       {
+                               return _data.lastModified;
+                       }
+               }
+               
+               /**
+                *  @copy org.apache.flex.core.IBead#strand
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function set strand(value:IStrand):void
+               {
+                       _strand = value;
+               }
+               
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/ff4dd1e8/frameworks/projects/Network/src/main/resources/basic-manifest.xml
----------------------------------------------------------------------
diff --git a/frameworks/projects/Network/src/main/resources/basic-manifest.xml 
b/frameworks/projects/Network/src/main/resources/basic-manifest.xml
index 46f2ad9..b69c4a4 100644
--- a/frameworks/projects/Network/src/main/resources/basic-manifest.xml
+++ b/frameworks/projects/Network/src/main/resources/basic-manifest.xml
@@ -20,9 +20,9 @@
 
 
 <componentPackage>
-
     <component id="HTTPService" class="org.apache.flex.net.HTTPService"/>
     <component id="BinaryUploader" class="org.apache.flex.net.BinaryUploader"/>
     <component id="CORSCredentialsBead" 
class="org.apache.flex.net.beads.CORSCredentialsBead"/>
-
+    <component id="FileProxy" class="org.apache.flex.file.FileProxy"/>
+    <component id="FileBrowser" 
class="org.apache.flex.file.beads.FileBrowser"/>
 </componentPackage>

Reply via email to